diff options
Diffstat (limited to 'src/com')
| -rw-r--r-- | src/com/android/browser/Controller.java | 6 | ||||
| -rw-r--r-- | src/com/android/browser/PhoneUi.java | 13 | ||||
| -rw-r--r-- | src/com/android/browser/SnapshotByteArrayOutputStream.java | 5 | ||||
| -rw-r--r-- | src/com/android/browser/SnapshotTab.java | 11 |
4 files changed, 24 insertions, 11 deletions
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java index 686cfcda0..0fc9b8a0d 100644 --- a/src/com/android/browser/Controller.java +++ b/src/com/android/browser/Controller.java @@ -2394,7 +2394,11 @@ public class Controller */ @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 d39909e0a..b0f3d7412 100644 --- a/src/com/android/browser/PhoneUi.java +++ b/src/com/android/browser/PhoneUi.java @@ -196,8 +196,11 @@ public class PhoneUi extends BaseUi { 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 @@ public class PhoneUi extends BaseUi { 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 bfd1a76a9..127eee802 100644 --- a/src/com/android/browser/SnapshotByteArrayOutputStream.java +++ b/src/com/android/browser/SnapshotByteArrayOutputStream.java @@ -21,8 +21,9 @@ import java.io.OutputStream; 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 cc6eeb772..d9c71f03f 100644 --- a/src/com/android/browser/SnapshotTab.java +++ b/src/com/android/browser/SnapshotTab.java @@ -189,17 +189,16 @@ public class SnapshotTab extends Tab { 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(); |
