Bug 1293790 - Pre: Extract UpdateViewFaviconLoadedListener to allow reuse r=sebastian draft
authorAndrzej Hunt <ahunt@mozilla.com>
Wed, 17 Aug 2016 10:57:08 -0700
changeset 404595 5aa1b18fcab2246f55bb89b431433daf34b56a73
parent 404594 eb9dd7e2404e633b4d0801bf4d0e49ff8910d078
child 404596 32b30d3a6555c116e981b7dcb164855eddfcfb12
child 405104 6030830158c601ad80cee3b666b0b6d36f468ee8
push id27256
push userahunt@mozilla.com
push dateTue, 23 Aug 2016 21:38:12 +0000
reviewerssebastian
bugs1293790
milestone51.0a1
Bug 1293790 - Pre: Extract UpdateViewFaviconLoadedListener to allow reuse r=sebastian MozReview-Commit-ID: 6ud4pRemi0s
mobile/android/base/java/org/mozilla/gecko/home/TwoLinePageRow.java
mobile/android/base/java/org/mozilla/gecko/home/UpdateViewFaviconLoadedListener.java
mobile/android/base/moz.build
--- a/mobile/android/base/java/org/mozilla/gecko/home/TwoLinePageRow.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/TwoLinePageRow.java
@@ -1,17 +1,15 @@
 /* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 package org.mozilla.gecko.home;
 
-import java.lang.ref.WeakReference;
-
 import org.mozilla.gecko.AboutPages;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.db.BrowserContract;
 import org.mozilla.gecko.distribution.PartnerBookmarksProviderProxy;
 import org.mozilla.gecko.favicons.LoadFaviconTask;
 import org.mozilla.gecko.reader.SavedReaderViewHelper;
 import org.mozilla.gecko.reader.ReaderModeUtils;
 import org.mozilla.gecko.Tab;
@@ -19,20 +17,18 @@ import org.mozilla.gecko.Tabs;
 import org.mozilla.gecko.db.BrowserContract.Combined;
 import org.mozilla.gecko.db.BrowserContract.URLColumns;
 import org.mozilla.gecko.favicons.Favicons;
 import org.mozilla.gecko.favicons.OnFaviconLoadedListener;
 import org.mozilla.gecko.widget.FaviconView;
 
 import android.content.Context;
 import android.database.Cursor;
-import android.graphics.Bitmap;
 import android.text.TextUtils;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.widget.ImageView;
 import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
 public class TwoLinePageRow extends LinearLayout
@@ -46,46 +42,16 @@ public class TwoLinePageRow extends Line
 
     private int mSwitchToTabIconId;
 
     private final FaviconView mFavicon;
 
     private boolean mShowIcons;
     private int mLoadFaviconJobId = Favicons.NOT_LOADING;
 
-    // Only holds a reference to the FaviconView itself, so if the row gets
-    // discarded while a task is outstanding, we'll leak less memory.
-    private static class UpdateViewFaviconLoadedListener implements OnFaviconLoadedListener {
-        private final WeakReference<FaviconView> view;
-        public UpdateViewFaviconLoadedListener(FaviconView view) {
-            this.view = new WeakReference<FaviconView>(view);
-        }
-
-        /**
-         * Update this row's favicon.
-         * <p>
-         * This method is always invoked on the UI thread.
-         */
-        @Override
-        public void onFaviconLoaded(String url, String faviconURL, Bitmap favicon) {
-            FaviconView v = view.get();
-            if (v == null) {
-                // Guess we stuck around after the TwoLinePageRow went away.
-                return;
-            }
-
-            if (favicon == null) {
-                v.showDefaultFavicon(url);
-                return;
-            }
-
-            v.updateImage(favicon, faviconURL);
-        }
-    }
-
     // Listener for handling Favicon loads.
     private final OnFaviconLoadedListener mFaviconListener;
 
     // The URL for the page corresponding to this view.
     private String mPageUrl;
 
     private boolean mHasReaderCacheItem;
 
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/home/UpdateViewFaviconLoadedListener.java
@@ -0,0 +1,42 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+package org.mozilla.gecko.home;
+
+import android.graphics.Bitmap;
+
+import org.mozilla.gecko.favicons.OnFaviconLoadedListener;
+import org.mozilla.gecko.widget.FaviconView;
+
+import java.lang.ref.WeakReference;
+
+// Only holds a reference to the FaviconView itself, so if the row gets
+// discarded while a task is outstanding, we'll leak less memory.
+public class UpdateViewFaviconLoadedListener implements OnFaviconLoadedListener {
+    private final WeakReference<FaviconView> view;
+    public UpdateViewFaviconLoadedListener(FaviconView view) {
+        this.view = new WeakReference<FaviconView>(view);
+    }
+
+    /**
+     * Update this row's favicon.
+     * <p>
+     * This method is always invoked on the UI thread.
+     */
+    @Override
+    public void onFaviconLoaded(String url, String faviconURL, Bitmap favicon) {
+        FaviconView v = view.get();
+        if (v == null) {
+            // Guess we stuck around after the TwoLinePageRow went away.
+            return;
+        }
+
+        if (favicon == null) {
+            v.showDefaultFavicon(url);
+            return;
+        }
+
+        v.updateImage(favicon, faviconURL);
+    }
+}
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -486,16 +486,17 @@ gbjar.sources += ['java/org/mozilla/geck
     'home/SpacingDecoration.java',
     'home/TabMenuStrip.java',
     'home/TabMenuStripLayout.java',
     'home/TopSitesGridItemView.java',
     'home/TopSitesGridView.java',
     'home/TopSitesPanel.java',
     'home/TopSitesThumbnailView.java',
     'home/TwoLinePageRow.java',
+    'home/UpdateViewFaviconLoadedListener.java',
     'IntentHelper.java',
     'javaaddons/JavaAddonManager.java',
     'javaaddons/JavaAddonManagerV1.java',
     'LauncherActivity.java',
     'lwt/LightweightTheme.java',
     'lwt/LightweightThemeDrawable.java',
     'mdns/MulticastDNSManager.java',
     'media/AsyncCodec.java',