Fix for duplicate tab ids exception
- When the Snapshot tab was getting restored
its tab id was not getting restored again
because the object was not passed, when restoring
it.
This change fixes the issue
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 8271475..6728274 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -2985,7 +2985,7 @@
public SnapshotTab createNewSnapshotTab(long snapshotId, boolean setActive) {
SnapshotTab tab = null;
if (mTabControl.canCreateNewTab()) {
- tab = mTabControl.createSnapshotTab(snapshotId);
+ tab = mTabControl.createSnapshotTab(snapshotId, null);
addTab(tab);
if (setActive) {
setActiveTab(tab);
diff --git a/src/com/android/browser/SnapshotTab.java b/src/com/android/browser/SnapshotTab.java
index 13e94b8..7471bca 100644
--- a/src/com/android/browser/SnapshotTab.java
+++ b/src/com/android/browser/SnapshotTab.java
@@ -53,9 +53,13 @@
// Used for saving and restoring each Tab
static final String SNAPSHOT_ID = "snapshotId";
+ static final String ID = "ID";
- public SnapshotTab(WebViewController wvcontroller, long snapshotId) {
- super(wvcontroller, null, null);
+
+ public SnapshotTab(WebViewController wvcontroller,
+ long snapshotId,
+ Bundle state) {
+ super(wvcontroller, null, state);
mSnapshotId = snapshotId;
mWebViewFactory = mWebViewController.getWebViewFactory();
WebView web = mWebViewFactory.createWebView(false);
@@ -122,8 +126,8 @@
}
mSavedState = new Bundle();
+ mSavedState = super.saveState();
mSavedState.putLong(SNAPSHOT_ID, mSnapshotId);
-
return mSavedState;
}
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 2488ec2..a30cdca 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -242,8 +242,8 @@
return createNewTab(false);
}
- SnapshotTab createSnapshotTab(long snapshotId) {
- SnapshotTab t = new SnapshotTab(mController, snapshotId);
+ SnapshotTab createSnapshotTab(long snapshotId, Bundle state) {
+ SnapshotTab t = new SnapshotTab(mController, snapshotId, state);
mTabs.add(t);
mTabCountObservable.set(mTabs.size());
return t;
@@ -441,7 +441,7 @@
Tab t = null;
// Add special check to restore Snapshot Tab if needed
if (state.getLong(SnapshotTab.SNAPSHOT_ID, -1) != -1 ) {
- t = (SnapshotTab) createSnapshotTab( state.getLong(SnapshotTab.SNAPSHOT_ID) );
+ t = (SnapshotTab) createSnapshotTab( state.getLong(SnapshotTab.SNAPSHOT_ID), state);
} else {
// presume its a normal Tab
t = createNewTab(state, false);