diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index 052c9c5..832b0b3 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -43,6 +43,8 @@
 import android.widget.LinearLayout;
 import android.widget.Toast;
 
+import java.util.List;
+
 /**
  * UI interface definitions
  */
@@ -280,6 +282,11 @@
     }
 
     @Override
+    public boolean needsRestoreAllTabs() {
+        return mXLargeScreenSize;
+    }
+
+    @Override
     public void addTab(Tab tab) {
         if (mXLargeScreenSize) {
             mTabBar.onNewTab(tab);
@@ -313,6 +320,13 @@
     }
 
     @Override
+    public void updateTabs(List<Tab> tabs) {
+        if (mXLargeScreenSize) {
+            mTabBar.updateTabs(tabs);
+        }
+    }
+
+    @Override
     public void removeTab(Tab tab) {
         if (mTabControl.getCurrentTab() == tab) {
             removeTabFromContentView(tab);
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 63f104a..79fff3d 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -83,6 +83,7 @@
 import java.net.URLEncoder;
 import java.util.Calendar;
 import java.util.HashMap;
+import java.util.List;
 
 /**
  * Controller for browser
@@ -239,11 +240,12 @@
         Calendar yesterday = Calendar.getInstance();
         yesterday.add(Calendar.DATE, -1);
 
-        boolean dontRestoreIncognitoTabs = lastActiveDate == null
+        boolean restoreIncognitoTabs = !(lastActiveDate == null
             || lastActiveDate.before(yesterday)
-            || lastActiveDate.after(today);
+            || lastActiveDate.after(today));
 
-        if (!mTabControl.restoreState(icicle, dontRestoreIncognitoTabs)) {
+        if (!mTabControl.restoreState(icicle, restoreIncognitoTabs,
+                mUi.needsRestoreAllTabs())) {
             // there is no quit on Android. But if we can't restore the state,
             // we can treat it as a new Browser, remove the old session cookies.
             CookieManager.getInstance().removeSessionCookie();
@@ -280,7 +282,8 @@
                 loadUrlDataIn(t, urlData);
             }
         } else {
-            if (dontRestoreIncognitoTabs) {
+            mUi.updateTabs(mTabControl.getTabs());
+            if (!restoreIncognitoTabs) {
                 WebView.cleanupPrivateBrowsingFiles(mActivity);
             }
             // TabControl.restoreState() will create a new tab even if
@@ -338,6 +341,11 @@
         return mTabControl;
     }
 
+    @Override
+    public List<Tab> getTabs() {
+        return mTabControl.getTabs();
+    }
+
     // Open the icon database and retain all the icons for visited sites.
     private void retainIconsOnStartup() {
         final WebIconDatabase db = WebIconDatabase.getInstance();
diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java
index 169f934..69e0bd2 100644
--- a/src/com/android/browser/TabBar.java
+++ b/src/com/android/browser/TabBar.java
@@ -40,6 +40,7 @@
 import android.widget.TextView;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -96,20 +97,23 @@
         // TODO: Change enabled states based on whether you can go
         // back/forward.  Probably should be done inside onPageStarted.
 
-        // build tabs
-        int tabcount = mTabControl.getTabCount();
-        for (int i = 0; i < tabcount; i++) {
-            Tab tab = mTabControl.getTab(i);
-            TabViewData data = buildTab(tab);
-            TabView tv = buildView(data);
-        }
-        mTabs.setSelectedTab(mTabControl.getCurrentIndex());
+        updateTabs(mUiController.getTabs());
 
         mUserRequestedUrlbar = false;
         mTitleVisible = true;
         mButtonWidth = -1;
     }
 
+    void updateTabs(List<Tab> tabs) {
+        mTabs.clearTabs();
+        mTabMap.clear();
+        for (Tab tab : tabs) {
+            TabViewData data = buildTab(tab);
+            TabView tv = buildView(data);
+        }
+        mTabs.setSelectedTab(mTabControl.getCurrentIndex());
+    }
+
     @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
         if (mButtonWidth == -1) {
@@ -270,7 +274,7 @@
             }
             if (mTabData.mTab != null) {
                 mIncognito.setVisibility(
-                        mTabData.mTab.getWebView().isPrivateBrowsingEnabled() ?
+                        mTabData.mTab.isPrivateBrowsingEnabled() ?
                         View.VISIBLE : View.GONE);
             }
         }
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index aeffbc0..2d90d23 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -26,6 +26,7 @@
 import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Vector;
 
 class TabControl {
@@ -99,6 +100,13 @@
     }
 
     /**
+     * return the list of tabs
+     */
+    List<Tab> getTabs() {
+        return mTabs;
+    }
+
+    /**
      * Return the tab at the specified index.
      * @return The Tab for the specified index or null if the tab does not
      *         exist.
@@ -281,10 +289,14 @@
     /**
      * Restore the state of all the tabs.
      * @param inState The saved state of all the tabs.
+     * @param restoreIncognitoTabs Restoring private browsing tabs
+     * @param restoreAll All webviews get restored, not just the current tab
+     *        (this does not override handling of incognito tabs)
      * @return True if there were previous tabs that were restored. False if
      *         there was no saved state or restoring the state failed.
      */
-    boolean restoreState(Bundle inState, boolean dontRestoreIncognitoTabs) {
+    boolean restoreState(Bundle inState, boolean restoreIncognitoTabs,
+            boolean restoreAll) {
         final int numTabs = (inState == null)
                 ? -1 : inState.getInt(Tab.NUMTABS, -1);
         if (numTabs == -1) {
@@ -295,7 +307,7 @@
             // Determine whether the saved current tab can be restored, and
             // if not, which tab will take its place.
             int currentTab = -1;
-            if (!dontRestoreIncognitoTabs
+            if (restoreIncognitoTabs
                     || !inState.getBundle(Tab.WEBVIEW + oldCurrentTab).getBoolean(Tab.INCOGNITO)) {
                 currentTab = oldCurrentTab;
             } else {
@@ -317,13 +329,15 @@
             for (int i = 0; i < numTabs; i++) {
                 Bundle state = inState.getBundle(Tab.WEBVIEW + i);
 
-                if (dontRestoreIncognitoTabs && state != null && state.getBoolean(Tab.INCOGNITO)) {
+                if (!restoreIncognitoTabs && state != null && state.getBoolean(Tab.INCOGNITO)) {
                     originalTabIndices.put(i, -1);
-                } else if (i == currentTab) {
+                } else if (i == currentTab || restoreAll) {
                     Tab t = createNewTab();
                     // Me must set the current tab before restoring the state
                     // so that all the client classes are set.
-                    setCurrentTab(t);
+                    if (i == currentTab) {
+                        setCurrentTab(t);
+                    }
                     if (!t.restoreState(state)) {
                         Log.w(LOGTAG, "Fail in restoreState, load home page.");
                         t.getWebView().loadUrl(BrowserSettings.getInstance()
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index b290891..08cf33a 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -26,6 +26,8 @@
 import android.view.View;
 import android.webkit.WebChromeClient.CustomViewCallback;
 
+import java.util.List;
+
 /**
  * UI interface definitions
  */
@@ -41,12 +43,16 @@
 
     public boolean onBackKey();
 
+    public boolean needsRestoreAllTabs();
+
     public void addTab(Tab tab);
 
     public void removeTab(Tab tab);
 
     public void setActiveTab(Tab tab);
 
+    public void updateTabs(List<Tab> tabs);
+
     public void detachTab(Tab tab);
 
     public void attachTab(Tab tab);
diff --git a/src/com/android/browser/UiController.java b/src/com/android/browser/UiController.java
index 1426132..dffebba 100644
--- a/src/com/android/browser/UiController.java
+++ b/src/com/android/browser/UiController.java
@@ -19,6 +19,8 @@
 import android.content.Intent;
 import android.webkit.WebView;
 
+import java.util.List;
+
 
 /**
  * UI aspect of the controller
@@ -33,6 +35,8 @@
 
     TabControl getTabControl();
 
+    List<Tab> getTabs();
+
     Tab openTabToHomePage();
 
     Tab openIncognitoTab();
