Prevent tab switcher from showing obsolete thumbnails
The browser will capture the tab bitmap only after first
visual pixel has been drawn.
Change-Id: Ic9ae344c8ff5b39e5e2a76eaf08ba06bd825aef9
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index fa6e372..107ab07 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -166,6 +166,7 @@
private boolean mInPageLoad;
private boolean mPageFinished;
private boolean mDisableOverrideUrlLoading;
+ private boolean mFirstVisualPixelPainted = false;
// The last reported progress of the current page
private int mPageLoadProgress;
// The time the load started, used to find load page time
@@ -374,6 +375,7 @@
public void onPageStarted(WebView view, String url, Bitmap favicon) {
mInPageLoad = true;
mPageFinished = false;
+ mFirstVisualPixelPainted = false;
mReceivedError = false;
mUpdateThumbnail = true;
mPageLoadProgress = INITIAL_PROGRESS;
@@ -412,6 +414,11 @@
mWebViewController.onPageFinished(Tab.this);
}
+ @Override
+ public void onFirstVisualPixel(WebView view) {
+ mFirstVisualPixelPainted = true;
+ }
+
// return true if want to hijack the url to let another app to handle it
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
@@ -2068,6 +2075,26 @@
return;
}
+ if (!mFirstVisualPixelPainted) {
+ mCapture = Bitmap.createBitmap(
+ mCaptureWidth,
+ mCaptureHeight,
+ Bitmap.Config.RGB_565);
+ mCapture.eraseColor(Color.WHITE);
+
+ mHandler.removeMessages(MSG_CAPTURE);
+
+ TabControl tc = mWebViewController.getTabControl();
+ if (tc != null) {
+ OnThumbnailUpdatedListener updateListener
+ = tc.getOnThumbnailUpdatedListener();
+ if (updateListener != null) {
+ updateListener.onThumbnailUpdated(this);
+ }
+ }
+ return;
+ }
+
mMainView
.getContentBitmapAsync(
(float) mCaptureWidth / mMainView.getWidth(),