Merge "Add setting for configuring zoom level on double-tap." into ics-mr0
diff --git a/res/drawable-hdpi/app_web_browser_sm.png b/res/drawable-hdpi/app_web_browser_sm.png
index f1de0de..a3f75cc 100644
--- a/res/drawable-hdpi/app_web_browser_sm.png
+++ b/res/drawable-hdpi/app_web_browser_sm.png
Binary files differ
diff --git a/res/drawable-mdpi/app_web_browser_sm.png b/res/drawable-mdpi/app_web_browser_sm.png
index 696fd2f..6ac62eb 100644
--- a/res/drawable-mdpi/app_web_browser_sm.png
+++ b/res/drawable-mdpi/app_web_browser_sm.png
Binary files differ
diff --git a/res/drawable-xhdpi/app_web_browser_sm.png b/res/drawable-xhdpi/app_web_browser_sm.png
index 35d857b..501af7f 100644
--- a/res/drawable-xhdpi/app_web_browser_sm.png
+++ b/res/drawable-xhdpi/app_web_browser_sm.png
Binary files differ
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 686cfcd..0fc9b8a 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -2394,7 +2394,11 @@
      */
     @Override
     public void closeTab(Tab tab) {
-        removeTab(tab);
+        if (tab == mTabControl.getCurrentTab()) {
+            closeCurrentTab();
+        } else {
+            removeTab(tab);
+        }
     }
 
     // Called when loading from context menu or LOAD_URL message
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index d39909e..b0f3d74 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -196,8 +196,11 @@
     public void updateMenuState(Tab tab, Menu menu) {
         MenuItem bm = menu.findItem(R.id.bookmarks_menu_id);
         if (bm != null) {
-            String url = tab.getUrl();
-            boolean isDataUrl = DataUri.isDataUri(url);
+            boolean isDataUrl = false;
+            if (tab != null) {
+                String url = tab.getUrl();
+                isDataUrl = DataUri.isDataUri(url);
+            }
             bm.setVisible(!showingNavScreen() && !isDataUrl);
         }
         MenuItem nt = menu.findItem(R.id.new_tab_menu_id);
@@ -322,11 +325,17 @@
         mActiveTab.capture();
         if (mAnimScreen == null) {
             mAnimScreen = new AnimScreen(mActivity);
+        } else {
+            mAnimScreen.mMain.setAlpha(1f);
+            mAnimScreen.mTitle.setAlpha(1f);
+            mAnimScreen.setScaleFactor(1f);
         }
         mAnimScreen.set(getTitleBar(), getWebView());
         mCustomViewContainer.addView(mAnimScreen.mMain, COVER_SCREEN_PARAMS);
         mCustomViewContainer.setVisibility(View.VISIBLE);
         mCustomViewContainer.bringToFront();
+        mAnimScreen.mMain.layout(0, 0, mContentView.getWidth(),
+                mContentView.getHeight());
         int fromLeft = 0;
         int fromTop = getTitleBar().getHeight();
         int fromRight = mContentView.getWidth();
diff --git a/src/com/android/browser/SnapshotByteArrayOutputStream.java b/src/com/android/browser/SnapshotByteArrayOutputStream.java
index bfd1a76..127eee8 100644
--- a/src/com/android/browser/SnapshotByteArrayOutputStream.java
+++ b/src/com/android/browser/SnapshotByteArrayOutputStream.java
@@ -21,8 +21,9 @@
 
 public class SnapshotByteArrayOutputStream extends OutputStream {
 
-    // Maximum size, just below CursorWindow's 2mb row limit
-    private static final int MAX_SIZE = 2000000;
+    // Maximum size, this needs to be small enough such that an entire row
+    // can fit in CursorWindow's 2MB limit
+    private static final int MAX_SIZE = 1700000;
     private ByteArrayOutputStream mStream;
 
     public SnapshotByteArrayOutputStream() {
diff --git a/src/com/android/browser/SnapshotTab.java b/src/com/android/browser/SnapshotTab.java
index cc6eeb7..d9c71f0 100644
--- a/src/com/android/browser/SnapshotTab.java
+++ b/src/com/android/browser/SnapshotTab.java
@@ -189,17 +189,16 @@
                     if (web != null) {
                         byte[] data = result.getBlob(4);
                         ByteArrayInputStream bis = new ByteArrayInputStream(data);
-                        try {
-                            GZIPInputStream stream = new GZIPInputStream(bis);
-                            web.loadViewState(stream);
-                        } catch (Exception e) {
-                            Log.w(LOGTAG, "Failed to load view state", e);
-                        }
+                        GZIPInputStream stream = new GZIPInputStream(bis);
+                        web.loadViewState(stream);
                     }
                     mTab.mBackgroundColor = result.getInt(5);
                     mTab.mDateCreated = result.getLong(6);
                     mTab.mWebViewController.onPageFinished(mTab);
                 }
+            } catch (Exception e) {
+                Log.w(LOGTAG, "Failed to load view state, closing tab", e);
+                mTab.mWebViewController.closeTab(mTab);
             } finally {
                 if (result != null) {
                     result.close();