diff options
author | Michael Kolb <kolby@google.com> | 2011-08-04 16:54:31 -0700 |
---|---|---|
committer | Michael Kolb <kolby@google.com> | 2011-08-05 09:57:32 -0700 |
commit | e28b347fcc1df6e6bd41cb294d521a4f1e7c5c75 (patch) | |
tree | f4cefe11ff78dbca0b2525fb56e4b707c5d55d65 /src | |
parent | edd390b6e1448a206f514d97c8ff1fcfb58773bd (diff) | |
download | packages_apps_Browser-e28b347fcc1df6e6bd41cb294d521a4f1e7c5c75.zip packages_apps_Browser-e28b347fcc1df6e6bd41cb294d521a4f1e7c5c75.tar.gz packages_apps_Browser-e28b347fcc1df6e6bd41cb294d521a4f1e7c5c75.tar.bz2 |
close external tabs on back
Bug: 4466495
close externally created tabs
when the back button is used and no further
back history is available
Change-Id: If605474d929fb759226a1e1f4125bfaab43e6653
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/browser/Controller.java | 3 | ||||
-rw-r--r-- | src/com/android/browser/IntentHandler.java | 11 | ||||
-rw-r--r-- | src/com/android/browser/Tab.java | 13 |
3 files changed, 23 insertions, 4 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index 142375d..89b700b 100644 --- a/src/com/android/browser/Controller.java +++ b/src/com/android/browser/Controller.java @@ -2415,6 +2415,9 @@ public class Controller // Now we close the other tab closeTab(current); } else { + if ((current.getAppId() != null) || current.closeOnBack()) { + closeCurrentTab(); + } /* * Instead of finishing the activity, simply push this to the back * of the stack and let ActivityManager to choose the foreground diff --git a/src/com/android/browser/IntentHandler.java b/src/com/android/browser/IntentHandler.java index 6ed5b72..c76197d 100644 --- a/src/com/android/browser/IntentHandler.java +++ b/src/com/android/browser/IntentHandler.java @@ -17,10 +17,6 @@ package com.android.browser; -import com.android.browser.search.SearchEngine; -import com.android.common.Search; -import com.android.common.speech.LoggingEvents; - import android.app.Activity; import android.app.SearchManager; import android.content.ContentResolver; @@ -36,6 +32,10 @@ import android.speech.RecognizerResultsIntent; import android.text.TextUtils; import android.util.Patterns; +import com.android.browser.search.SearchEngine; +import com.android.common.Search; +import com.android.common.speech.LoggingEvents; + import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -187,6 +187,9 @@ public class IntentHandler { Tab tab = mController.openTab(urlData); if (tab != null) { tab.setAppId(appId); + if ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { + tab.setCloseOnBack(true); + } } } } else { diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java index a251212..39bf49c 100644 --- a/src/com/android/browser/Tab.java +++ b/src/com/android/browser/Tab.java @@ -145,6 +145,8 @@ class Tab implements PictureListener { // Application identifier used to find tabs that another application wants // to reuse. private String mAppId; + // flag to indicate if tab should be closed on back + private boolean mCloseOnBack; // Keep the original url around to avoid killing the old WebView if the url // has not changed. // Error console for the tab @@ -225,6 +227,7 @@ class Tab implements PictureListener { static final String APPID = "appid"; static final String INCOGNITO = "privateBrowsingEnabled"; static final String USERAGENT = "useragent"; + static final String CLOSEFLAG = "closeOnBack"; // ------------------------------------------------------------------------- @@ -1785,6 +1788,14 @@ class Tab implements PictureListener { mAppId = id; } + boolean closeOnBack() { + return mCloseOnBack; + } + + void setCloseOnBack(boolean close) { + mCloseOnBack = close; + } + String getUrl() { return UrlUtils.filteredUrl(mCurrentState.mUrl); } @@ -1895,6 +1906,7 @@ class Tab implements PictureListener { if (mAppId != null) { mSavedState.putString(APPID, mAppId); } + mSavedState.putBoolean(CLOSEFLAG, mCloseOnBack); // Remember the parent tab so the relationship can be restored. if (mParent != null) { mSavedState.putLong(PARENTTAB, mParent.mId); @@ -1916,6 +1928,7 @@ class Tab implements PictureListener { // This will maintain the app id, original url and close-on-exit values. mId = b.getLong(ID); mAppId = b.getString(APPID); + mCloseOnBack = b.getBoolean(CLOSEFLAG); if (b.getBoolean(USERAGENT) != mSettings.hasDesktopUseragent(getWebView())) { mSettings.toggleDesktopUseragent(getWebView()); |