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.
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"
16 using base::android::ConvertJavaStringToUTF8
;
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
;
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
,
49 static ScopedJavaLocalRef
<jstring
> GetDomainAndRegistry(
51 const JavaParamRef
<jclass
>& clazz
,
52 const JavaParamRef
<jstring
>& url
,
53 jboolean include_private
) {
55 GURL gurl
= ConvertJavaStringToGURL(env
, url
);
57 return ScopedJavaLocalRef
<jstring
>();
59 net::registry_controlled_domains::PrivateRegistryFilter filter
=
60 GetRegistryFilter(include_private
);
62 return base::android::ConvertUTF8ToJavaString(
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
);
73 return google_util::IsGoogleSearchUrl(gurl
);
76 static ScopedJavaLocalRef
<jstring
> FormatUrlForSecurityDisplay(
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(
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
);
100 return google_util::IsGoogleHomePageUrl(gurl
);
103 static ScopedJavaLocalRef
<jstring
> FixupUrl(
105 const JavaParamRef
<jclass
>& clazz
,
106 const JavaParamRef
<jstring
>& url
,
107 const JavaParamRef
<jstring
>& optional_desired_tld
) {
109 GURL fixed_url
= url_formatter::FixupURL(
110 base::android::ConvertJavaStringToUTF8(env
, url
),
112 ? base::android::ConvertJavaStringToUTF8(env
, optional_desired_tld
)
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
);