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 "base/android/jni_android.h"
6 #include "base/android/jni_string.h"
7 #include "components/google/core/browser/google_util.h"
8 #include "components/url_formatter/url_fixer.h"
9 #include "jni/UrlUtilities_jni.h"
10 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
13 using base::android::ConvertJavaStringToUTF8
;
17 GURL
ConvertJavaStringToGURL(JNIEnv
*env
, jstring url
) {
18 return url
? GURL(ConvertJavaStringToUTF8(env
, url
)) : GURL();
21 net::registry_controlled_domains::PrivateRegistryFilter
GetRegistryFilter(
22 jboolean include_private
) {
23 return include_private
24 ? net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES
25 : net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES
;
30 static jboolean
SameDomainOrHost(JNIEnv
* env
,
34 jboolean include_private
) {
35 GURL url_1
= ConvertJavaStringToGURL(env
, url_1_str
);
36 GURL url_2
= ConvertJavaStringToGURL(env
, url_2_str
);
38 net::registry_controlled_domains::PrivateRegistryFilter filter
=
39 GetRegistryFilter(include_private
);
41 return net::registry_controlled_domains::SameDomainOrHost(url_1
,
46 static ScopedJavaLocalRef
<jstring
> GetDomainAndRegistry(
50 jboolean include_private
) {
52 GURL gurl
= ConvertJavaStringToGURL(env
, url
);
54 return ScopedJavaLocalRef
<jstring
>();
56 net::registry_controlled_domains::PrivateRegistryFilter filter
=
57 GetRegistryFilter(include_private
);
59 return base::android::ConvertUTF8ToJavaString(
61 net::registry_controlled_domains::GetDomainAndRegistry(gurl
, filter
));
64 static jboolean
IsGoogleSearchUrl(JNIEnv
* env
, jclass clazz
, jstring url
) {
65 GURL gurl
= ConvertJavaStringToGURL(env
, url
);
68 return google_util::IsGoogleSearchUrl(gurl
);
71 static jboolean
IsGoogleHomePageUrl(JNIEnv
* env
, jclass clazz
, jstring url
) {
72 GURL gurl
= ConvertJavaStringToGURL(env
, url
);
75 return google_util::IsGoogleHomePageUrl(gurl
);
78 static ScopedJavaLocalRef
<jstring
> FixupUrl(JNIEnv
* env
,
81 jstring optional_desired_tld
) {
83 GURL fixed_url
= url_formatter::FixupURL(
84 base::android::ConvertJavaStringToUTF8(env
, url
),
86 ? base::android::ConvertJavaStringToUTF8(env
, optional_desired_tld
)
89 return fixed_url
.is_valid()
90 ? base::android::ConvertUTF8ToJavaString(env
, fixed_url
.spec())
91 : ScopedJavaLocalRef
<jstring
>();
94 // Register native methods
95 bool RegisterUrlUtilities(JNIEnv
* env
) {
96 return RegisterNativesImpl(env
);