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);