use thumbnails in tab switcher

Change-Id: I0c7bda38c4c12448822f575f6fe0670f87b3eb7b
diff --git a/src/com/android/browser/ActiveTabsPage.java b/src/com/android/browser/ActiveTabsPage.java
index 5e27eab..52d943f 100644
--- a/src/com/android/browser/ActiveTabsPage.java
+++ b/src/com/android/browser/ActiveTabsPage.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.graphics.Bitmap;
+import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -141,23 +142,30 @@
                 view = mInflater.inflate(R.layout.tab_view, parent, false);
             }
             ImageView favicon = (ImageView) view.findViewById(R.id.favicon);
-            TextView title = (TextView) view.findViewById(R.id.title);
-            TextView url = (TextView) view.findViewById(R.id.url);
+            ImageView thumbnail = (ImageView) view.findViewById(R.id.thumb);
+            TextView title = (TextView) view.findViewById(R.id.label);
             Tab tab = getItem(position);
 
-            title.setText(tab.getTitle());
-            url.setText(tab.getUrl());
+            String label = tab.getTitle();
+            if (TextUtils.isEmpty(label)) {
+                label = tab.getUrl();
+            }
+            title.setText(label);
+            Bitmap thumbnailBitmap = tab.getScreenshot();
+            if (thumbnailBitmap == null) {
+                thumbnail.setImageResource(R.drawable.browser_thumbnail);
+            } else {
+                thumbnail.setImageBitmap(thumbnailBitmap);
+            }
             Bitmap faviconBitmap = tab.getFavicon();
             if (tab.isPrivateBrowsingEnabled()) {
                 favicon.setImageResource(R.drawable.ic_incognito_holo_dark);
-                favicon.setBackgroundDrawable(null);
             } else {
                 if (faviconBitmap == null) {
                     favicon.setImageResource(R.drawable.app_web_browser_sm);
                 } else {
                     favicon.setImageBitmap(faviconBitmap);
                 }
-                favicon.setBackgroundResource(R.drawable.bookmark_list_favicon_bg);
             }
             View close = view.findViewById(R.id.close);
             close.setTag(position);
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index dd68e85..9c3c912 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -18,10 +18,12 @@
 
 import android.app.Activity;
 import android.content.Context;
+import android.graphics.Bitmap;
 import android.graphics.PixelFormat;
 import android.os.Handler;
 import android.util.Log;
 import android.view.ActionMode;
+import android.view.Display;
 import android.view.Gravity;
 import android.view.KeyEvent;
 import android.view.Menu;
@@ -117,6 +119,7 @@
 
     @Override
     public void setActiveTab(Tab tab) {
+        captureTab(mActiveTab);
         super.setActiveTab(tab);
         WebView view = tab.getWebView();
         // TabControl.setCurrentTab has been called before this,
@@ -134,6 +137,18 @@
         tab.getTopWindow().requestFocus();
     }
 
+    public void captureTab(final Tab tab) {
+        if (tab == null) return;
+        if (tab.getWebView() == null) return;
+
+        Display display = mActivity.getWindowManager().getDefaultDisplay();
+        float height = mActivity.getResources()
+                .getDimension(R.dimen.tab_view_thumbnail_height);
+        Bitmap sshot = Controller.createScreenshot(tab,
+                display.getWidth(), (int) height);
+        tab.setScreenshot(sshot);
+    }
+
     @Override
     protected void showTitleBar() {
         if (canShowTitleBar()) {
@@ -159,6 +174,7 @@
 
     @Override
     public void showActiveTabsPage() {
+        captureTab(mActiveTab);
         mActiveTabsPage = new ActiveTabsPage(mActivity, mUiController);
         mTitleBar.setVisibility(View.GONE);
         hideTitleBar();