summaryrefslogtreecommitdiffstats
path: root/chrome/browser/android/url_utilities.cc
diff options
context:
space:
mode:
authorrmcilroy@chromium.org <rmcilroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-11 12:10:30 +0000
committerrmcilroy@chromium.org <rmcilroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-11 12:10:30 +0000
commit7e27c37aee946f7076721085272518e60e26c325 (patch)
tree4e9b74793daa76975af9a89fa1cf0295fcda8d34 /chrome/browser/android/url_utilities.cc
parentbb8511e73b027e1a196c1b6b821c4cb4426f58ad (diff)
downloadchromium_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.cc66
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);
+}