Roll src/third_party/WebKit eac3800:0237a66 (svn 202606:202607)
[chromium-blink-merge.git] / chrome / browser / android / url_utilities.cc
blob27c9ed4306538f392b9489e8a57add62e28f7caa
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include <string>
7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h"
9 #include "components/google/core/browser/google_util.h"
10 #include "components/url_formatter/elide_url.h"
11 #include "components/url_formatter/url_fixer.h"
12 #include "jni/UrlUtilities_jni.h"
13 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
14 #include "url/gurl.h"
16 using base::android::ConvertJavaStringToUTF8;
18 namespace {
20 GURL ConvertJavaStringToGURL(JNIEnv*env, jstring url) {
21 return url ? GURL(ConvertJavaStringToUTF8(env, url)) : GURL();
24 net::registry_controlled_domains::PrivateRegistryFilter GetRegistryFilter(
25 jboolean include_private) {
26 return include_private
27 ? net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES
28 : net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES;
31 } // namespace
33 static jboolean SameDomainOrHost(JNIEnv* env,
34 const JavaParamRef<jclass>& clazz,
35 const JavaParamRef<jstring>& url_1_str,
36 const JavaParamRef<jstring>& url_2_str,
37 jboolean include_private) {
38 GURL url_1 = ConvertJavaStringToGURL(env, url_1_str);
39 GURL url_2 = ConvertJavaStringToGURL(env, url_2_str);
41 net::registry_controlled_domains::PrivateRegistryFilter filter =
42 GetRegistryFilter(include_private);
44 return net::registry_controlled_domains::SameDomainOrHost(url_1,
45 url_2,
46 filter);
49 static ScopedJavaLocalRef<jstring> GetDomainAndRegistry(
50 JNIEnv* env,
51 const JavaParamRef<jclass>& clazz,
52 const JavaParamRef<jstring>& url,
53 jboolean include_private) {
54 DCHECK(url);
55 GURL gurl = ConvertJavaStringToGURL(env, url);
56 if (gurl.is_empty())
57 return ScopedJavaLocalRef<jstring>();
59 net::registry_controlled_domains::PrivateRegistryFilter filter =
60 GetRegistryFilter(include_private);
62 return base::android::ConvertUTF8ToJavaString(
63 env,
64 net::registry_controlled_domains::GetDomainAndRegistry(gurl, filter));
67 static jboolean IsGoogleSearchUrl(JNIEnv* env,
68 const JavaParamRef<jclass>& clazz,
69 const JavaParamRef<jstring>& url) {
70 GURL gurl = ConvertJavaStringToGURL(env, url);
71 if (gurl.is_empty())
72 return false;
73 return google_util::IsGoogleSearchUrl(gurl);
76 static ScopedJavaLocalRef<jstring> FormatUrlForSecurityDisplay(
77 JNIEnv* env,
78 const JavaParamRef<jclass>& clazz,
79 const JavaParamRef<jstring>& url) {
80 return base::android::ConvertUTF16ToJavaString(
81 env, url_formatter::FormatUrlForSecurityDisplay(
82 ConvertJavaStringToGURL(env, url), std::string()));
85 static ScopedJavaLocalRef<jstring> FormatUrlForSecurityDisplayOmitScheme(
86 JNIEnv* env,
87 const JavaParamRef<jclass>& clazz,
88 const JavaParamRef<jstring>& url) {
89 return base::android::ConvertUTF16ToJavaString(
90 env, url_formatter::FormatUrlForSecurityDisplayOmitScheme(
91 ConvertJavaStringToGURL(env, url), std::string()));
94 static jboolean IsGoogleHomePageUrl(JNIEnv* env,
95 const JavaParamRef<jclass>& clazz,
96 const JavaParamRef<jstring>& url) {
97 GURL gurl = ConvertJavaStringToGURL(env, url);
98 if (gurl.is_empty())
99 return false;
100 return google_util::IsGoogleHomePageUrl(gurl);
103 static ScopedJavaLocalRef<jstring> FixupUrl(
104 JNIEnv* env,
105 const JavaParamRef<jclass>& clazz,
106 const JavaParamRef<jstring>& url,
107 const JavaParamRef<jstring>& optional_desired_tld) {
108 DCHECK(url);
109 GURL fixed_url = url_formatter::FixupURL(
110 base::android::ConvertJavaStringToUTF8(env, url),
111 optional_desired_tld
112 ? base::android::ConvertJavaStringToUTF8(env, optional_desired_tld)
113 : std::string());
115 return fixed_url.is_valid()
116 ? base::android::ConvertUTF8ToJavaString(env, fixed_url.spec())
117 : ScopedJavaLocalRef<jstring>();
120 // Register native methods
121 bool RegisterUrlUtilities(JNIEnv* env) {
122 return RegisterNativesImpl(env);