| Index: chrome/android/java/src/org/chromium/chrome/browser/favicon/LargeIconBridge.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/favicon/LargeIconBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/favicon/LargeIconBridge.java
|
| index e1017c99497c4bf50a0f82f0ac141deb3b551de8..c03118ccbbe36f005c03c0019e227cbd1099afb8 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/favicon/LargeIconBridge.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/favicon/LargeIconBridge.java
|
| @@ -6,7 +6,6 @@ package org.chromium.chrome.browser.favicon;
|
|
|
| import android.graphics.Bitmap;
|
| import android.util.LruCache;
|
| -import android.util.Pair;
|
|
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.chrome.browser.profiles.Profile;
|
| @@ -21,7 +20,19 @@ public class LargeIconBridge {
|
| private static final int CACHE_ENTRY_MIN_SIZE_BYTES = 1024;
|
| private long mNativeLargeIconBridge;
|
| private Profile mProfile;
|
| - private LruCache<String, Pair<Bitmap, Integer>> mFaviconCache;
|
| + private LruCache<String, CachedFavicon> mFaviconCache;
|
| +
|
| + private static class CachedFavicon {
|
| + public Bitmap icon;
|
| + public int fallbackColor;
|
| + public boolean isFallbackColorDefault;
|
| +
|
| + CachedFavicon(Bitmap newIcon, int newFallbackColor, boolean newIsFallbackColorDefault) {
|
| + icon = newIcon;
|
| + fallbackColor = newFallbackColor;
|
| + isFallbackColorDefault = newIsFallbackColorDefault;
|
| + }
|
| + }
|
|
|
| /**
|
| * Callback for use with GetLargeIconForUrl().
|
| @@ -34,7 +45,7 @@ public class LargeIconBridge {
|
| * @param fallbackColor The fallback color to use if icon is null.
|
| */
|
| @CalledByNative("LargeIconCallback")
|
| - void onLargeIconAvailable(Bitmap icon, int fallbackColor);
|
| + void onLargeIconAvailable(Bitmap icon, int fallbackColor, boolean isFallbackColorDefault);
|
| }
|
|
|
| /**
|
| @@ -55,10 +66,10 @@ public class LargeIconBridge {
|
| public void createCache(int cacheSizeBytes) {
|
| assert cacheSizeBytes > 0;
|
|
|
| - mFaviconCache = new LruCache<String, Pair<Bitmap, Integer>>(cacheSizeBytes) {
|
| + mFaviconCache = new LruCache<String, CachedFavicon>(cacheSizeBytes) {
|
| @Override
|
| - protected int sizeOf(String key, Pair<Bitmap, Integer> icon) {
|
| - int iconBitmapSize = icon.first == null ? 0 : icon.first.getByteCount();
|
| + protected int sizeOf(String key, CachedFavicon favicon) {
|
| + int iconBitmapSize = favicon.icon == null ? 0 : favicon.icon.getByteCount();
|
| return Math.max(CACHE_ENTRY_MIN_SIZE_BYTES, iconBitmapSize);
|
| }
|
| };
|
| @@ -95,17 +106,20 @@ public class LargeIconBridge {
|
| return nativeGetLargeIconForURL(mNativeLargeIconBridge, mProfile, pageUrl,
|
| desiredSizePx, callback);
|
| } else {
|
| - Pair<Bitmap, Integer> cached = mFaviconCache.get(pageUrl);
|
| + CachedFavicon cached = mFaviconCache.get(pageUrl);
|
| if (cached != null) {
|
| - callback.onLargeIconAvailable(cached.first, cached.second);
|
| + callback.onLargeIconAvailable(
|
| + cached.icon, cached.fallbackColor, cached.isFallbackColorDefault);
|
| return true;
|
| }
|
|
|
| LargeIconCallback callbackWrapper = new LargeIconCallback() {
|
| @Override
|
| - public void onLargeIconAvailable(Bitmap icon, int fallbackColor) {
|
| - mFaviconCache.put(pageUrl, new Pair<Bitmap, Integer>(icon, fallbackColor));
|
| - callback.onLargeIconAvailable(icon, fallbackColor);
|
| + public void onLargeIconAvailable(
|
| + Bitmap icon, int fallbackColor, boolean isFallbackColorDefault) {
|
| + mFaviconCache.put(pageUrl,
|
| + new CachedFavicon(icon, fallbackColor, isFallbackColorDefault));
|
| + callback.onLargeIconAvailable(icon, fallbackColor, isFallbackColorDefault);
|
| }
|
| };
|
| return nativeGetLargeIconForURL(mNativeLargeIconBridge, mProfile, pageUrl,
|
|
|