summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathew Inwood <mathewi@google.com>2011-09-02 10:30:20 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-09-02 10:30:20 -0700
commit5b0d11707800e4c6f8cb7c8c1d360304fe0afc54 (patch)
tree38d5c9904d4ab5db4d3df934d3019f36225becb2
parent10fb07325eb928597d70c1355a0d36b1a9f0bd25 (diff)
parenta829d55e8af65d08d998b8166e42420dda8cf2ff (diff)
downloadpackages_apps_Browser-5b0d11707800e4c6f8cb7c8c1d360304fe0afc54.zip
packages_apps_Browser-5b0d11707800e4c6f8cb7c8c1d360304fe0afc54.tar.gz
packages_apps_Browser-5b0d11707800e4c6f8cb7c8c1d360304fe0afc54.tar.bz2
Merge "Clear back stack after submitted query into preloaded page."
-rw-r--r--src/com/android/browser/PreloadedTabControl.java18
-rw-r--r--src/com/android/browser/Tab.java20
2 files changed, 29 insertions, 9 deletions
diff --git a/src/com/android/browser/PreloadedTabControl.java b/src/com/android/browser/PreloadedTabControl.java
index ed066f2..4ffe6b4 100644
--- a/src/com/android/browser/PreloadedTabControl.java
+++ b/src/com/android/browser/PreloadedTabControl.java
@@ -21,6 +21,7 @@ import android.util.Log;
import android.webkit.SearchBox;
import java.util.Map;
+import java.util.regex.Pattern;
/**
* Class to manage the controlling of preloaded tab.
@@ -74,6 +75,7 @@ public class PreloadedTabControl {
}
maybeSetQuery(query, sb);
if (LOGD_ENABLED) Log.d(LOGTAG, "Submitting query " + query);
+ final String currentUrl = mTab.getUrl();
sb.onsubmit(new SearchBox.SearchBoxListener() {
@Override
public void onSubmitComplete(boolean called) {
@@ -83,7 +85,21 @@ public class PreloadedTabControl {
if (LOGD_ENABLED) Log.d(LOGTAG, "Query not submitted; falling back");
loadUrl(fallbackUrl, fallbackHeaders);
// make sure that the failed, preloaded URL is cleared from the back stack
- mTab.clearBackStackWhenItemAdded(fallbackUrl);
+ mTab.clearBackStackWhenItemAdded(Pattern.compile(
+ "^" + Pattern.quote(fallbackUrl) + "$"));
+ } else {
+ // ignore the next fragment change, to avoid leaving a blank page in the browser
+ // after the query has been submitted.
+ String currentWithoutFragment = Uri.parse(currentUrl)
+ .buildUpon()
+ .fragment(null)
+ .toString();
+ mTab.clearBackStackWhenItemAdded(
+ Pattern.compile(
+ "^" +
+ Pattern.quote(currentWithoutFragment) +
+ "(\\#.*)?" +
+ "$"));
}
}});
return true;
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 3b283cc..8c9dc02 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -84,6 +84,7 @@ import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;
import java.util.Vector;
+import java.util.regex.Pattern;
import java.util.zip.GZIPOutputStream;
/**
@@ -175,7 +176,7 @@ class Tab implements PictureListener {
/**
* See {@link #clearBackStackWhenItemAdded(String)}.
*/
- private String mClearHistoryMatchUrl;
+ private Pattern mClearHistoryUrlPattern;
private static synchronized Bitmap getDefaultFavicon(Context context) {
if (sDefaultFavicon == null) {
@@ -1391,17 +1392,20 @@ class Tab implements PictureListener {
if (isInVoiceSearchMode()) {
item.setCustomData(mVoiceSearchData.mVoiceSearchIntent);
}
- if (mClearHistoryMatchUrl != null) {
+ if (mClearHistoryUrlPattern != null) {
+ boolean match =
+ mClearHistoryUrlPattern.matcher(item.getOriginalUrl()).matches();
if (LOGD_ENABLED) {
- Log.d(LOGTAG, "onNewHistoryItem:\n\t" + item.getUrl() + "\n\t"
- + mClearHistoryMatchUrl);
+ Log.d(LOGTAG, "onNewHistoryItem: match=" + match + "\n\t"
+ + item.getUrl() + "\n\t"
+ + mClearHistoryUrlPattern);
}
- if (TextUtils.equals(item.getOriginalUrl(), mClearHistoryMatchUrl)) {
+ if (match) {
if (mMainView != null) {
mMainView.clearHistory();
}
}
- mClearHistoryMatchUrl = null;
+ mClearHistoryUrlPattern = null;
}
}
@Override
@@ -2106,8 +2110,8 @@ class Tab implements PictureListener {
* This is used to ensure that preloaded URLs that are not subsequently seen by the user do
* not appear in the back stack.
*/
- public void clearBackStackWhenItemAdded(String urlToMatch) {
- mClearHistoryMatchUrl = urlToMatch;
+ public void clearBackStackWhenItemAdded(Pattern urlPattern) {
+ mClearHistoryUrlPattern = urlPattern;
}
protected void persistThumbnail() {