diff options
author | John Reck <jreck@google.com> | 2011-08-22 13:41:23 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2011-08-22 13:55:06 -0700 |
commit | 6c2e2f34718043f36488b4a94879dc2605aaac49 (patch) | |
tree | b035ded93d8f35ab1f952d539a7afdc93a9481fe /src/com/android/browser/Tab.java | |
parent | 54ed3aa8417f4c6a27eecb9caf10f742a705b6e0 (diff) | |
download | packages_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.java | 20 |
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); |