Fix for incognito Tab and url
- Prevents incognito tab from being opened from
regular tab
- Hides the incognito url when opening incognito
tab
Change-Id: I873f1ddf9ba99594d58a0984f19f3520a806ea1a
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index c3befc8..f4c5dc9 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -132,7 +132,7 @@
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 = "chrome://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/Tab.java b/src/com/android/browser/Tab.java
index a65fda5..d3621ef 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -228,11 +228,10 @@
PageState(Context c, boolean incognito) {
mIncognito = incognito;
+ mOriginalUrl = mUrl = "";
if (mIncognito) {
- mOriginalUrl = mUrl = "chrome://incognito";
mTitle = c.getString(R.string.new_incognito_tab);
} else {
- mOriginalUrl = mUrl = "";
mTitle = c.getString(R.string.new_tab);
}
mSecurityState = SecurityState.SECURITY_STATE_NOT_SECURE;
@@ -240,7 +239,10 @@
PageState(Context c, boolean incognito, String url, Bitmap favicon) {
mIncognito = incognito;
- mOriginalUrl = mUrl = url;
+ if (mIncognito)
+ mOriginalUrl = mUrl = "";
+ else
+ mOriginalUrl = mUrl = url;
mSecurityState = SecurityState.SECURITY_STATE_NOT_SECURE;
mFavicon = favicon;
}
@@ -506,7 +508,12 @@
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);
@@ -640,13 +647,20 @@
private void syncCurrentState(WebView view, String url) {
// Sync state (in case of stop/timeout)
+
+
if (mReceivedError) {
mCurrentState.mUrl = url;
mCurrentState.mOriginalUrl = url;
- } else {
- mCurrentState.mUrl = view.getUrl();
- mCurrentState.mOriginalUrl = view.getOriginalUrl();
- mCurrentState.mFavicon = view.getFavicon();
+ } else if (view.isPrivateBrowsingEnabled() &&
+ !TextUtils.isEmpty(url) &&
+ url.contains(Controller.INCOGNITO_URI)) {
+ mCurrentState.mUrl = mCurrentState.mOriginalUrl = "";
+ }
+ else {
+ mCurrentState.mUrl = view.getUrl();
+ mCurrentState.mOriginalUrl = view.getOriginalUrl();
+ mCurrentState.mFavicon = view.getFavicon();
}
if (mCurrentState.mUrl == null) {
@@ -1899,7 +1913,8 @@
public void loadUrl(String url, Map<String, String> headers) {
if (mMainView != null) {
mPageLoadProgress = INITIAL_PROGRESS;
- mCurrentState = new PageState(mContext, false, url, null);
+ mCurrentState = new PageState(
+ mContext, mMainView.isPrivateBrowsingEnabled(), url, null);
mMainView.loadUrl(url, headers);
}
}
diff --git a/src/com/android/browser/preferences/LegalPreferencesFragment.java b/src/com/android/browser/preferences/LegalPreferencesFragment.java
index ce75630..23b4163 100644
--- a/src/com/android/browser/preferences/LegalPreferencesFragment.java
+++ b/src/com/android/browser/preferences/LegalPreferencesFragment.java
@@ -48,6 +48,7 @@
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 @@
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)) {