diff options
author | rmcilroy@chromium.org <rmcilroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-11 12:10:30 +0000 |
---|---|---|
committer | rmcilroy@chromium.org <rmcilroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-11 12:10:30 +0000 |
commit | 7e27c37aee946f7076721085272518e60e26c325 (patch) | |
tree | 4e9b74793daa76975af9a89fa1cf0295fcda8d34 /chrome/browser/android/url_utilities.cc | |
parent | bb8511e73b027e1a196c1b6b821c4cb4426f58ad (diff) | |
download | chromium_src-7e27c37aee946f7076721085272518e60e26c325.zip chromium_src-7e27c37aee946f7076721085272518e60e26c325.tar.gz chromium_src-7e27c37aee946f7076721085272518e60e26c325.tar.bz2 |
[Android] Upstream URLUtilities to Chromium.
This is in preparation for upstreaming WebAddress, and then the Download
service.
BUG=285083
Review URL: https://chromiumcodereview.appspot.com/23461025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@222504 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/android/url_utilities.cc')
-rw-r--r-- | chrome/browser/android/url_utilities.cc | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/chrome/browser/android/url_utilities.cc b/chrome/browser/android/url_utilities.cc new file mode 100644 index 0000000..6c44564 --- /dev/null +++ b/chrome/browser/android/url_utilities.cc @@ -0,0 +1,66 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/android/jni_android.h" +#include "base/android/jni_string.h" +#include "chrome/browser/google/google_util.h" +#include "jni/UrlUtilities_jni.h" +#include "net/base/registry_controlled_domains/registry_controlled_domain.h" +#include "url/gurl.h" + +namespace { + +net::registry_controlled_domains::PrivateRegistryFilter GetRegistryFilter( + jboolean include_private) { + return include_private + ? net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES + : net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES; +} + +} + +static jboolean SameDomainOrHost(JNIEnv* env, + jclass clazz, + jstring url_1_str, + jstring url_2_str, + jboolean include_private) { + GURL url_1(base::android::ConvertJavaStringToUTF8(env, url_1_str)); + GURL url_2(base::android::ConvertJavaStringToUTF8(env, url_2_str)); + + net::registry_controlled_domains::PrivateRegistryFilter filter = + GetRegistryFilter(include_private); + + return net::registry_controlled_domains::SameDomainOrHost(url_1, + url_2, + filter); +} + +static jstring GetDomainAndRegistry(JNIEnv* env, + jclass clazz, + jstring url, + jboolean include_private) { + GURL gurl = GURL(base::android::ConvertJavaStringToUTF8(env, url)); + if (gurl.is_empty()) + return NULL; + + net::registry_controlled_domains::PrivateRegistryFilter filter = + GetRegistryFilter(include_private); + + // OK to release, JNI binding. + return base::android::ConvertUTF8ToJavaString( + env, net::registry_controlled_domains::GetDomainAndRegistry( + gurl, filter)).Release(); +} + +static jboolean IsGoogleSearchUrl(JNIEnv* env, jclass clazz, jstring url) { + GURL gurl = GURL(base::android::ConvertJavaStringToUTF8(env, url)); + if (gurl.is_empty()) + return false; + return google_util::IsGoogleSearchUrl(gurl); +} + +// Register native methods +bool RegisterUrlUtilities(JNIEnv* env) { + return RegisterNativesImpl(env); +} |