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(),