summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/browser/BrowserActivity.java4
-rw-r--r--src/com/android/browser/Controller.java4
-rw-r--r--src/com/android/browser/CrashRecoveryHandler.java5
-rw-r--r--src/com/android/browser/Tab.java12
-rw-r--r--src/com/android/browser/TabControl.java6
5 files changed, 19 insertions, 12 deletions
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 963f29f57..dbcae2e3e 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -115,7 +115,7 @@ public class BrowserActivity extends Activity {
protected void onNewIntent(Intent intent) {
if (ACTION_RESTART.equals(intent.getAction())) {
Bundle outState = new Bundle();
- mController.onSaveInstanceState(outState);
+ mController.onSaveInstanceState(outState, true);
finish();
getApplicationContext().startActivity(
new Intent(getApplicationContext(), BrowserActivity.class)
@@ -166,7 +166,7 @@ public class BrowserActivity extends Activity {
if (LOGV_ENABLED) {
Log.v(LOGTAG, "BrowserActivity.onSaveInstanceState: this=" + this);
}
- mController.onSaveInstanceState(outState);
+ mController.onSaveInstanceState(outState, true);
}
@Override
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index e089f5dd2..1f5c8f01c 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -616,7 +616,7 @@ public class Controller
mCrashRecoveryHandler.clearState();
}
- void onSaveInstanceState(Bundle outState) {
+ void onSaveInstanceState(Bundle outState, boolean saveImages) {
// the default implementation requires each view to have an id. As the
// browser handles the state itself and it doesn't use id for the views,
// don't call the default implementation. Otherwise it will trigger the
@@ -624,7 +624,7 @@ public class Controller
// focused view XXX has no id".
// Save all the tabs
- mTabControl.saveState(outState);
+ mTabControl.saveState(outState, saveImages);
// Save time so that we know how old incognito tabs (if any) are.
outState.putSerializable("lastActiveDate", Calendar.getInstance());
}
diff --git a/src/com/android/browser/CrashRecoveryHandler.java b/src/com/android/browser/CrashRecoveryHandler.java
index 9e98e76a8..60e39daa5 100644
--- a/src/com/android/browser/CrashRecoveryHandler.java
+++ b/src/com/android/browser/CrashRecoveryHandler.java
@@ -22,7 +22,6 @@ import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
-import android.os.Debug;
import android.os.Parcel;
import android.util.Log;
@@ -45,7 +44,7 @@ public class CrashRecoveryHandler {
public void backupState() {
final Bundle state = new Bundle();
- mController.onSaveInstanceState(state);
+ mController.onSaveInstanceState(state, false);
final Context context = mController.getActivity();
new Thread() {
@Override
@@ -57,7 +56,7 @@ public class CrashRecoveryHandler {
Context.MODE_PRIVATE);
fout.write(p.marshall());
fout.close();
- } catch (Exception e) {
+ } catch (Throwable e) {
Log.i(LOGTAG, "Failed to save persistent state", e);
} finally {
p.recycle();
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 4097334c1..98d209eb2 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -1706,6 +1706,15 @@ class Tab {
return mSavedState;
}
+ Bundle getSavedState(boolean saveImages) {
+ if (saveImages && mScreenshot != null) {
+ Bundle b = new Bundle(mSavedState);
+ b.putParcelable(SCREENSHOT, mScreenshot);
+ return b;
+ }
+ return mSavedState;
+ }
+
/**
* Set the saved state.
*/
@@ -1739,9 +1748,6 @@ class Tab {
if (mParent != null) {
mSavedState.putLong(PARENTTAB, mParent.mId);
}
- if (mScreenshot != null) {
- mSavedState.putParcelable(SCREENSHOT, mScreenshot);
- }
mSavedState.putBoolean(USERAGENT,
mSettings.hasDesktopUseragent(getWebView()));
return true;
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 1fe905304..0aaf3d65e 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -272,15 +272,17 @@ class TabControl {
* position sorted array of tab ids
* for each tab id, save the tab state
* @param outState
+ * @param saveImages
*/
- void saveState(Bundle outState) {
+ void saveState(Bundle outState, boolean saveImages) {
final int numTabs = getTabCount();
long[] ids = new long[numTabs];
int i = 0;
for (Tab tab : mTabs) {
ids[i++] = tab.getId();
if (tab.saveState()) {
- outState.putBundle(Long.toString(tab.getId()), tab.getSavedState());
+ outState.putBundle(Long.toString(tab.getId()),
+ tab.getSavedState(saveImages));
}
}
outState.putLongArray(POSITIONS, ids);