summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/Tab.java
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2011-08-22 13:41:23 -0700
committerJohn Reck <jreck@google.com>2011-08-22 13:55:06 -0700
commit6c2e2f34718043f36488b4a94879dc2605aaac49 (patch)
treeb035ded93d8f35ab1f952d539a7afdc93a9481fe /src/com/android/browser/Tab.java
parent54ed3aa8417f4c6a27eecb9caf10f742a705b6e0 (diff)
downloadpackages_apps_browser-6c2e2f34718043f36488b4a94879dc2605aaac49.zip
packages_apps_browser-6c2e2f34718043f36488b4a94879dc2605aaac49.tar.gz
packages_apps_browser-6c2e2f34718043f36488b4a94879dc2605aaac49.tar.bz2
Add bulletproofing to state recovery
Bug: 5166335 Change-Id: Ife9ef2da7664f8de6b0ff9655611efa78d84df05
Diffstat (limited to 'src/com/android/browser/Tab.java')
-rw-r--r--src/com/android/browser/Tab.java20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index d7ce29b..d6106a5 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -56,6 +56,7 @@ import android.webkit.HttpAuthHandler;
import android.webkit.SslErrorHandler;
import android.webkit.URLUtil;
import android.webkit.ValueCallback;
+import android.webkit.WebBackForwardList;
import android.webkit.WebBackForwardListClient;
import android.webkit.WebChromeClient;
import android.webkit.WebHistoryItem;
@@ -1529,7 +1530,12 @@ class Tab implements PictureListener {
mMainView.setPictureListener(this);
}
if (mSavedState != null) {
- mMainView.restoreState(mSavedState);
+ WebBackForwardList restoredState
+ = mMainView.restoreState(mSavedState);
+ if (restoredState == null || restoredState.getSize() == 0) {
+ Log.w(LOGTAG, "Failed to restore WebView state!");
+ loadUrl(mCurrentState.mOriginalUrl, null);
+ }
mSavedState = null;
}
}
@@ -1913,15 +1919,17 @@ class Tab implements PictureListener {
if (mMainView == null) {
return mSavedState;
}
- // If the tab is the homepage or has no URL, don't save it
- String homepage = BrowserSettings.getInstance().getHomePage();
- if (TextUtils.equals(homepage, mCurrentState.mUrl)
- || TextUtils.isEmpty(mCurrentState.mUrl)) {
+
+ if (TextUtils.isEmpty(mCurrentState.mUrl)) {
return null;
}
mSavedState = new Bundle();
- mMainView.saveState(mSavedState);
+ WebBackForwardList savedList = mMainView.saveState(mSavedState);
+ if (savedList == null || savedList.getSize() == 0) {
+ Log.w(LOGTAG, "Failed to save back/forward list for "
+ + mCurrentState.mUrl);
+ }
mSavedState.putLong(ID, mId);
mSavedState.putString(CURRURL, mCurrentState.mUrl);