Request icons in the background.

BrowserBookmarksAdapter does not need to request bookmark icons as most of the
bookmarks have up-to-date icons. We still need to request all icons on start up
because a new icon may be loaded as a result of clicking a history items.

Move the icon request to a background thread to not block the ui thread on large
db lookups.

Remove MostVisitedActivity as it is no longer used.

Bug: 2496872
Change-Id: I378dce8fdb7e825da96594cd31b720ea24758af1
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 1183b70..bff7c79 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -47,6 +47,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ContextMenu.ContextMenuInfo;
+import android.webkit.WebIconDatabase.IconListener;
 import android.widget.AdapterView;
 import android.widget.GridView;
 import android.widget.ListView;
@@ -373,6 +374,23 @@
                     if (mVerticalList != null) {
                         mVerticalList.setAdapter(mBookmarksAdapter);
                     }
+                    // Add our own listener in case there are favicons that
+                    // have yet to be loaded.
+                    if (mMostVisited) {
+                        IconListener listener = new IconListener() {
+                            public void onReceivedIcon(String url,
+                                    Bitmap icon) {
+                                if (mGridPage != null) {
+                                    mGridPage.setAdapter(mBookmarksAdapter);
+                                }
+                                if (mVerticalList != null) {
+                                    mVerticalList.setAdapter(mBookmarksAdapter);
+                                }
+                            }
+                        };
+                        CombinedBookmarkHistoryActivity.getIconListenerSet()
+                                .addListener(listener);
+                    }
                     break;
             }
         }