diff options
8 files changed, 55 insertions, 45 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/UrlUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/UrlUtilities.java index bbd359f..27ed1dd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/UrlUtilities.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/UrlUtilities.java @@ -147,30 +147,12 @@ public class UrlUtilities { * @return Stripped-down String containing the essential bits of the URL, or the original URL if * it fails to parse it. */ - public static String getOriginForDisplay(URI uri, boolean showScheme) { - String scheme = uri.getScheme(); - String host = uri.getHost(); - int port = uri.getPort(); - - String displayUrl; - if (TextUtils.isEmpty(scheme) || TextUtils.isEmpty(host)) { - displayUrl = uri.toString(); + public static String formatUrlForSecurityDisplay(URI uri, boolean showScheme) { + if (showScheme) { + return nativeFormatUrlForSecurityDisplay(uri.toString()); } else { - if (showScheme) { - scheme += "://"; - } else { - scheme = ""; - } - - if (port == -1 || (port == 80 && "http".equals(scheme)) - || (port == 443 && "https".equals(scheme))) { - displayUrl = scheme + host; - } else { - displayUrl = scheme + host + ":" + port; - } + return nativeFormatUrlForSecurityDisplayOmitScheme(uri.toString()); } - - return displayUrl; } /** @@ -380,5 +362,7 @@ public class UrlUtilities { boolean includePrivateRegistries); public static native boolean nativeIsGoogleSearchUrl(String url); public static native boolean nativeIsGoogleHomePageUrl(String url); + public static native String nativeFormatUrlForSecurityDisplay(String url); + public static native String nativeFormatUrlForSecurityDisplayOmitScheme(String url); private static native String nativeFixupUrl(String url, String desiredTld); } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java b/chrome/android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java index bd645fb..52cd08d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java @@ -504,7 +504,7 @@ public class WebsiteSettingsPopup implements OnClickListener { String originToDisplay; try { URI parsedUrl = new URI(mFullUrl); - originToDisplay = UrlUtilities.getOriginForDisplay(parsedUrl, false); + originToDisplay = UrlUtilities.formatUrlForSecurityDisplay(parsedUrl, false); } catch (URISyntaxException e) { // The URL is invalid - just display the full URL. originToDisplay = mFullUrl; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java index eb5ce0a..e72e863 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaSessionTabHelper.java @@ -68,7 +68,7 @@ public class MediaSessionTabHelper { } String origin = mTab.getUrl(); try { - origin = UrlUtilities.getOriginForDisplay(new URI(origin), true); + origin = UrlUtilities.formatUrlForSecurityDisplay(new URI(origin), true); } catch (URISyntaxException e) { Log.e(TAG, "Unable to parse the origin from the URL. " + "Showing the full URL instead."); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java index 3b8915a..514b5ed 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java @@ -131,7 +131,8 @@ public class SingleWebsitePreferences extends PreferenceFragment Bundle fragmentArgs = new Bundle(); // TODO(mvanouwerkerk): Define a pure getOrigin method in UrlUtilities that is the // equivalent of the call below, because this is perfectly fine for non-display purposes. - String origin = UrlUtilities.getOriginForDisplay(URI.create(url), true /* schowScheme */); + String origin = + UrlUtilities.formatUrlForSecurityDisplay(URI.create(url), true /* showScheme */); fragmentArgs.putString(SingleWebsitePreferences.EXTRA_ORIGIN, origin); return fragmentArgs; } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappUrlBar.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappUrlBar.java index 48874c2..3c080a6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappUrlBar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappUrlBar.java @@ -162,7 +162,7 @@ public class WebappUrlBar extends FrameLayout implements View.OnLayoutChangeList boolean showScheme = mCurrentIconResource == 0; String displayUrl = originalUrl; if (uri != null) { - String shortenedUrl = UrlUtilities.getOriginForDisplay(uri, showScheme); + String shortenedUrl = UrlUtilities.formatUrlForSecurityDisplay(uri, showScheme); if (!TextUtils.isEmpty(shortenedUrl)) displayUrl = shortenedUrl; } diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/UrlUtilitiesTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/UrlUtilitiesTest.java index 59f6da8..3d9bae6 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/UrlUtilitiesTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/UrlUtilitiesTest.java @@ -4,14 +4,14 @@ package org.chromium.chrome.browser; -import android.test.InstrumentationTestCase; import android.test.suitebuilder.annotation.SmallTest; import org.chromium.base.test.util.Feature; +import org.chromium.content.browser.test.NativeLibraryTestBase; import java.net.URI; -public class UrlUtilitiesTest extends InstrumentationTestCase { +public class UrlUtilitiesTest extends NativeLibraryTestBase { @SmallTest public void testIsAcceptedScheme() { assertTrue(UrlUtilities.isAcceptedScheme("about:awesome")); @@ -73,36 +73,40 @@ public class UrlUtilitiesTest extends InstrumentationTestCase { @SmallTest @Feature({"Webapps"}) - public void testGetOriginForDisplay() { + public void testFormatUrlForSecurityDisplay() { + loadNativeLibraryNoBrowserProcess(); + URI uri; uri = URI.create("http://chopped.com/is/awesome"); - assertEquals("http://chopped.com", UrlUtilities.getOriginForDisplay(uri, true)); - assertEquals("chopped.com", UrlUtilities.getOriginForDisplay(uri, false)); + assertEquals("http://chopped.com", UrlUtilities.formatUrlForSecurityDisplay(uri, true)); + assertEquals("chopped.com", UrlUtilities.formatUrlForSecurityDisplay(uri, false)); uri = URI.create("http://lopped.com"); - assertEquals("http://lopped.com", UrlUtilities.getOriginForDisplay(uri, true)); - assertEquals("lopped.com", UrlUtilities.getOriginForDisplay(uri, false)); + assertEquals("http://lopped.com", UrlUtilities.formatUrlForSecurityDisplay(uri, true)); + assertEquals("lopped.com", UrlUtilities.formatUrlForSecurityDisplay(uri, false)); uri = URI.create("http://dropped.com?things"); - assertEquals("http://dropped.com", UrlUtilities.getOriginForDisplay(uri, true)); - assertEquals("dropped.com", UrlUtilities.getOriginForDisplay(uri, false)); + assertEquals("http://dropped.com", UrlUtilities.formatUrlForSecurityDisplay(uri, true)); + assertEquals("dropped.com", UrlUtilities.formatUrlForSecurityDisplay(uri, false)); uri = URI.create("http://dfalcant@stopped.com:1234"); - assertEquals("http://stopped.com:1234", UrlUtilities.getOriginForDisplay(uri, true)); - assertEquals("stopped.com:1234", UrlUtilities.getOriginForDisplay(uri, false)); + assertEquals( + "http://stopped.com:1234", UrlUtilities.formatUrlForSecurityDisplay(uri, true)); + assertEquals("stopped.com:1234", UrlUtilities.formatUrlForSecurityDisplay(uri, false)); uri = URI.create("http://dfalcant:secret@stopped.com:9999"); - assertEquals("http://stopped.com:9999", UrlUtilities.getOriginForDisplay(uri, true)); - assertEquals("stopped.com:9999", UrlUtilities.getOriginForDisplay(uri, false)); + assertEquals( + "http://stopped.com:9999", UrlUtilities.formatUrlForSecurityDisplay(uri, true)); + assertEquals("stopped.com:9999", UrlUtilities.formatUrlForSecurityDisplay(uri, false)); uri = URI.create("chrome://settings:443"); - assertEquals("chrome://settings:443", UrlUtilities.getOriginForDisplay(uri, true)); - assertEquals("settings:443", UrlUtilities.getOriginForDisplay(uri, false)); + assertEquals("chrome://settings:443", UrlUtilities.formatUrlForSecurityDisplay(uri, true)); + assertEquals("chrome://settings:443", UrlUtilities.formatUrlForSecurityDisplay(uri, false)); uri = URI.create("about:blank"); - assertEquals("about:blank", UrlUtilities.getOriginForDisplay(uri, true)); - assertEquals("about:blank", UrlUtilities.getOriginForDisplay(uri, false)); + assertEquals("about:blank", UrlUtilities.formatUrlForSecurityDisplay(uri, true)); + assertEquals("about:blank", UrlUtilities.formatUrlForSecurityDisplay(uri, false)); } @SmallTest diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappUrlBarTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappUrlBarTest.java index 0721b9f..48e9497 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappUrlBarTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappUrlBarTest.java @@ -36,7 +36,7 @@ public class WebappUrlBarTest extends WebappActivityTestBase { @MediumTest @Feature({"Webapps"}) public void testUrlDisplay() { - final String scheme = "somescheme://"; + final String scheme = "https://"; final String host = "lorem.com"; final String path = "/stuff/and/things.html"; final String url = scheme + host + path; @@ -49,7 +49,7 @@ public class WebappUrlBarTest extends WebappActivityTestBase { ConnectionSecurityLevel.SECURITY_ERROR}; for (int i : securityLevels) { - // http://crbug.com/297249 + // TODO(palmer): http://crbug.com/297249 if (i == ConnectionSecurityLevel.SECURITY_POLICY_WARNING) continue; mUrlBar.update(url, i); diff --git a/chrome/browser/android/url_utilities.cc b/chrome/browser/android/url_utilities.cc index a829025..27c9ed4 100644 --- a/chrome/browser/android/url_utilities.cc +++ b/chrome/browser/android/url_utilities.cc @@ -2,9 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include <string> + #include "base/android/jni_android.h" #include "base/android/jni_string.h" #include "components/google/core/browser/google_util.h" +#include "components/url_formatter/elide_url.h" #include "components/url_formatter/url_fixer.h" #include "jni/UrlUtilities_jni.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h" @@ -70,6 +73,24 @@ static jboolean IsGoogleSearchUrl(JNIEnv* env, return google_util::IsGoogleSearchUrl(gurl); } +static ScopedJavaLocalRef<jstring> FormatUrlForSecurityDisplay( + JNIEnv* env, + const JavaParamRef<jclass>& clazz, + const JavaParamRef<jstring>& url) { + return base::android::ConvertUTF16ToJavaString( + env, url_formatter::FormatUrlForSecurityDisplay( + ConvertJavaStringToGURL(env, url), std::string())); +} + +static ScopedJavaLocalRef<jstring> FormatUrlForSecurityDisplayOmitScheme( + JNIEnv* env, + const JavaParamRef<jclass>& clazz, + const JavaParamRef<jstring>& url) { + return base::android::ConvertUTF16ToJavaString( + env, url_formatter::FormatUrlForSecurityDisplayOmitScheme( + ConvertJavaStringToGURL(env, url), std::string())); +} + static jboolean IsGoogleHomePageUrl(JNIEnv* env, const JavaParamRef<jclass>& clazz, const JavaParamRef<jstring>& url) { |