Fix the activity leak in the Browser.

The IconListenerSet inside CombinedBookmarkHistoryActivity is static. So when
the activity is destroyed, it needs to remove its listener to avoid leak.
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index 42ca848..4a0f8c5 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -137,6 +137,13 @@
     }
 
     @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
+                .removeListener(mIconReceiver);
+    }
+
+    @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         super.onCreateOptionsMenu(menu);
         MenuInflater inflater = getMenuInflater();
diff --git a/src/com/android/browser/CombinedBookmarkHistoryActivity.java b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
index 963f179..5678b44 100644
--- a/src/com/android/browser/CombinedBookmarkHistoryActivity.java
+++ b/src/com/android/browser/CombinedBookmarkHistoryActivity.java
@@ -59,6 +59,9 @@
         public void addListener(IconListener listener) {
             mListeners.add(listener);
         }
+        public void removeListener(IconListener listener) {
+            mListeners.remove(listener);
+        }
         public Bitmap getFavicon(String url) {
             return (Bitmap) mUrlsToIcons.get(url);
         }
diff --git a/src/com/android/browser/MostVisitedActivity.java b/src/com/android/browser/MostVisitedActivity.java
index 704ee27..83342a1 100644
--- a/src/com/android/browser/MostVisitedActivity.java
+++ b/src/com/android/browser/MostVisitedActivity.java
@@ -42,12 +42,15 @@
 
     private MyAdapter   mAdapter;
 
+    // Instance of IconReceiver
+    private final IconReceiver mIconReceiver = new IconReceiver();
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mAdapter = new MyAdapter();
         CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
-                .addListener(new IconReceiver());
+                .addListener(mIconReceiver);
         setListAdapter(mAdapter);
         ListView list = getListView();
         LayoutInflater factory = LayoutInflater.from(this);
@@ -57,6 +60,13 @@
         list.setEmptyView(v);
     }
 
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        CombinedBookmarkHistoryActivity.getIconListenerSet(getContentResolver())
+               .removeListener(mIconReceiver);
+    }
+
     private class IconReceiver implements IconListener {
         public void onReceivedIcon(String url, Bitmap icon) {
             setListAdapter(mAdapter);