From 1f998aee3336c5cc684290f7049d2c382fd92fed Mon Sep 17 00:00:00 2001 From: "Axesh R. Ajmera" Date: Tue, 21 Apr 2015 14:16:41 -0700 Subject: Add support for "browser:" protocol - Prevent browser:incognito from regular tab The browser will now allow "browser:" protocol based urls and treat "chrome:" protocol based urls as a search query Change-Id: I23098f160f4bd4e5f3c4ec431364388cf4e38790 --- res/values/strings.xml | 1 - src/com/android/browser/Controller.java | 2 +- src/com/android/browser/NavigationBarBase.java | 4 ++-- src/com/android/browser/Tab.java | 9 +++++++-- src/com/android/browser/UrlUtils.java | 5 ++--- .../android/browser/preferences/LegalPreferencesFragment.java | 4 ++-- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index bab0f6c1..4b2021fb 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1186,7 +1186,6 @@ Feedback Legal information Open source licenses - chrome://credits Copyright (c) 2015, The Linux Foundation. All rights reserved. End user licenses agreement diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index c546f485..54382d8f 100644 --- a/src/com/android/browser/Controller.java +++ b/src/com/android/browser/Controller.java @@ -133,7 +133,7 @@ public class Controller private static final String LOGTAG = "Controller"; private static final String SEND_APP_ID_EXTRA = "android.speech.extras.SEND_APPLICATION_ID_EXTRA"; - private static final String INCOGNITO_URI = "chrome://incognito"; + public static final String INCOGNITO_URI = "browser://incognito"; public static final String EXTRA_REQUEST_CODE = "_fake_request_code_"; public static final String EXTRA_RESULT_CODE = "_fake_result_code_"; diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java index 7de1a5d4..8d34f137 100644 --- a/src/com/android/browser/NavigationBarBase.java +++ b/src/com/android/browser/NavigationBarBase.java @@ -97,7 +97,7 @@ public class NavigationBarBase extends LinearLayout implements private Tab.SecurityState mSecurityState = Tab.SecurityState.SECURITY_STATE_NOT_SECURE; private static final String noSitePrefs[] = { - "chrome://", + "browser://", "about:", "content:", }; @@ -523,7 +523,7 @@ public class NavigationBarBase extends LinearLayout implements Tab t = mBaseUi.getActiveTab(); // Only shortcut javascript URIs for now, as there is special // logic in UrlHandler for other schemas - if (url != null && t != null && url.startsWith("javascript:")) { + if (url != null && t != null && url.startsWith("javascript:")) { mUiController.loadUrl(t, url); setDisplayTitle(text); return; diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java index 36aae4c5..a600fd33 100644 --- a/src/com/android/browser/Tab.java +++ b/src/com/android/browser/Tab.java @@ -234,7 +234,7 @@ class Tab implements PictureListener { PageState(Context c, boolean incognito) { mIncognito = incognito; if (mIncognito) { - mOriginalUrl = mUrl = "chrome://incognito"; + mOriginalUrl = mUrl = Controller.INCOGNITO_URI; mTitle = c.getString(R.string.new_incognito_tab); } else { mOriginalUrl = mUrl = ""; @@ -607,7 +607,12 @@ class Tab implements PictureListener { public WebResourceResponse shouldInterceptRequest(WebView view, String url) { //intercept if opening a new incognito tab - show the incognito welcome page - if (url.startsWith("chrome://incognito")) { + + // show only incognito content and webview has private + // and cannot go back(only supported if explicit from UI ) + if (view.isPrivateBrowsingEnabled() && + !view.canGoBack() && + url.startsWith(Controller.INCOGNITO_URI) ) { Resources resourceHandle = mContext.getResources(); InputStream inStream = resourceHandle.openRawResource( com.android.browser.R.raw.incognito_mode_start_page); diff --git a/src/com/android/browser/UrlUtils.java b/src/com/android/browser/UrlUtils.java index 4d3dee42..e5fd17e8 100755 --- a/src/com/android/browser/UrlUtils.java +++ b/src/com/android/browser/UrlUtils.java @@ -47,7 +47,7 @@ public class UrlUtils { static final Pattern ACCEPTED_URI_SCHEMA = Pattern.compile( "(?i)" + // switch on case insensitive matching "(" + // begin group for schema - "(?:http|https|file|chrome):\\/\\/" + + "(?:http|https|file|browser):\\/\\/" + "|(?:inline|data|about|javascript):" + ")" + "(.*)" ); @@ -206,8 +206,7 @@ public class UrlUtils { if (inUrl == null) { return ""; } - if (inUrl.startsWith("content:") - || inUrl.startsWith("browser:")) { + if (inUrl.startsWith("content:")) { return ""; } return inUrl; diff --git a/src/com/android/browser/preferences/LegalPreferencesFragment.java b/src/com/android/browser/preferences/LegalPreferencesFragment.java index ce75630a..23b4163f 100644 --- a/src/com/android/browser/preferences/LegalPreferencesFragment.java +++ b/src/com/android/browser/preferences/LegalPreferencesFragment.java @@ -48,6 +48,7 @@ import org.codeaurora.swe.BrowserCommandLine; public class LegalPreferencesFragment extends PreferenceFragment implements OnPreferenceClickListener { + private static final String creditsUrl = "browser://credits"; PreferenceScreen mHeadPref = null; String mEulaUrl = ""; String mPrivacyPolicyUrl = ""; @@ -101,8 +102,7 @@ public class LegalPreferencesFragment extends PreferenceFragment Bundle b = new Bundle(); if(preference.getKey().equals(PreferenceKeys.PREF_LEGAL_CREDITS)) { Intent i = new Intent(getActivity(), LegalPreviewActivity.class); - i.putExtra(LegalPreviewActivity.URL_INTENT_EXTRA, getResources() - .getString(R.string.swe_open_source_license_url)); + i.putExtra(LegalPreviewActivity.URL_INTENT_EXTRA, creditsUrl); startActivity(i); return true; } else if(preference.getKey().equals(PreferenceKeys.PREF_LEGAL_EULA)) { -- cgit v1.2.3