Commit 21c870a1 authored by Bernhard Bauer's avatar Bernhard Bauer Committed by Commit Bot

Re-reland "Split ThumbnailProviderImpl cache into a LRU and a deduplication cache."

This is a reland of 6d4871d1
Original change's description:
> Reland "Split ThumbnailProviderImpl cache into a LRU and a deduplication cache."
> 
> This is a reland of a4f8bff1
> Original change's description:
> > Split ThumbnailProviderImpl cache into a LRU and a deduplication cache.
> > 
> > Bug: 718925
> > Change-Id: I8bfe2d4b743c8fdb014b2112683aba1f74835753
> > Reviewed-on: https://chromium-review.googlesource.com/582958
> > Reviewed-by: Theresa <twellington@chromium.org>
> > Reviewed-by: Michael van Ouwerkerk <mvanouwerkerk@chromium.org>
> > Commit-Queue: Bernhard Bauer <bauerb@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#500574}
> 
> TBR: twellington@chromium.org
> Bug: 718925
> Change-Id: I68b0184d30c4bc4e712e3ceb1522879b15f5e1d7
> Reviewed-on: https://chromium-review.googlesource.com/659879
> Commit-Queue: Bernhard Bauer <bauerb@chromium.org>
> Reviewed-by: Michael van Ouwerkerk <mvanouwerkerk@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#500948}

Bug: 718925
Change-Id: I5101af7da3a470499901e57fab08d1ec580eec04
Reviewed-on: https://chromium-review.googlesource.com/663017Reviewed-by: default avatarMichael van Ouwerkerk <mvanouwerkerk@chromium.org>
Reviewed-by: default avatarTheresa <twellington@chromium.org>
Commit-Queue: Bernhard Bauer <bauerb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#501326}
parent 81fe9724
...@@ -77,8 +77,7 @@ import org.chromium.chrome.browser.dom_distiller.DistilledPagePrefsView; ...@@ -77,8 +77,7 @@ import org.chromium.chrome.browser.dom_distiller.DistilledPagePrefsView;
import org.chromium.chrome.browser.dom_distiller.ReaderModeManager; import org.chromium.chrome.browser.dom_distiller.ReaderModeManager;
import org.chromium.chrome.browser.download.DownloadManagerService; import org.chromium.chrome.browser.download.DownloadManagerService;
import org.chromium.chrome.browser.download.DownloadUtils; import org.chromium.chrome.browser.download.DownloadUtils;
import org.chromium.chrome.browser.download.items import org.chromium.chrome.browser.download.items.OfflineContentAggregatorNotificationBridgeUiFactory;
.OfflineContentAggregatorNotificationBridgeUiFactory;
import org.chromium.chrome.browser.firstrun.ForcedSigninProcessor; import org.chromium.chrome.browser.firstrun.ForcedSigninProcessor;
import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager; import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
import org.chromium.chrome.browser.gsa.ContextReporter; import org.chromium.chrome.browser.gsa.ContextReporter;
...@@ -2242,7 +2241,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity ...@@ -2242,7 +2241,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
/** /**
* @return the reference pool for this activity. * @return the reference pool for this activity.
* @deprecated Use {@link ChromeApplication#getReferencePool} instead.
*/ */
// TODO(bauerb): Migrate clients to ChromeApplication#getReferencePool.
@Deprecated
public DiscardableReferencePool getReferencePool() { public DiscardableReferencePool getReferencePool() {
return mReferencePool; return mReferencePool;
} }
......
...@@ -11,6 +11,7 @@ import org.chromium.base.ActivityState; ...@@ -11,6 +11,7 @@ import org.chromium.base.ActivityState;
import org.chromium.base.ApplicationStatus; import org.chromium.base.ApplicationStatus;
import org.chromium.base.CommandLineInitUtil; import org.chromium.base.CommandLineInitUtil;
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.TraceEvent; import org.chromium.base.TraceEvent;
import org.chromium.base.annotations.MainDex; import org.chromium.base.annotations.MainDex;
...@@ -34,11 +35,9 @@ import org.chromium.content.app.ContentApplication; ...@@ -34,11 +35,9 @@ import org.chromium.content.app.ContentApplication;
public class ChromeApplication extends ContentApplication { public class ChromeApplication extends ContentApplication {
public static final String COMMAND_LINE_FILE = "chrome-command-line"; public static final String COMMAND_LINE_FILE = "chrome-command-line";
private static final String TAG = "ChromiumApplication"; private static final String TAG = "ChromiumApplication";
private static final String PREF_BOOT_TIMESTAMP =
"com.google.android.apps.chrome.ChromeMobileApplication.BOOT_TIMESTAMP";
private static final long BOOT_TIMESTAMP_MARGIN_MS = 1000;
private static DocumentTabModelSelector sDocumentTabModelSelector; private static DocumentTabModelSelector sDocumentTabModelSelector;
private DiscardableReferencePool mReferencePool;
@Override @Override
protected void attachBaseContext(Context base) { protected void attachBaseContext(Context base) {
...@@ -63,6 +62,17 @@ public class ChromeApplication extends ContentApplication { ...@@ -63,6 +62,17 @@ public class ChromeApplication extends ContentApplication {
TraceEvent.end("ChromeApplication.onCreate"); TraceEvent.end("ChromeApplication.onCreate");
} }
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
// The conditions are expressed using ranges to capture intermediate levels possibly added
// to the API in the future.
if ((level >= TRIM_MEMORY_RUNNING_LOW && level < TRIM_MEMORY_UI_HIDDEN)
|| level >= TRIM_MEMORY_MODERATE) {
if (mReferencePool != null) mReferencePool.drain();
}
}
/** /**
* Shows an error dialog following a startup error, and then exits the application. * Shows an error dialog following a startup error, and then exits the application.
* @param e The exception reported by Chrome initialization. * @param e The exception reported by Chrome initialization.
...@@ -97,4 +107,15 @@ public class ChromeApplication extends ContentApplication { ...@@ -97,4 +107,15 @@ public class ChromeApplication extends ContentApplication {
} }
return sDocumentTabModelSelector; return sDocumentTabModelSelector;
} }
/**
* @return The DiscardableReferencePool for the application.
*/
public DiscardableReferencePool getReferencePool() {
ThreadUtils.assertOnUiThread();
if (mReferencePool == null) {
mReferencePool = new DiscardableReferencePool();
}
return mReferencePool;
}
} }
...@@ -16,6 +16,7 @@ import android.view.LayoutInflater; ...@@ -16,6 +16,7 @@ import android.view.LayoutInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.ViewGroup; import android.view.ViewGroup;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.FileUtils; import org.chromium.base.FileUtils;
import org.chromium.base.ObserverList; import org.chromium.base.ObserverList;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
...@@ -23,6 +24,7 @@ import org.chromium.base.metrics.RecordHistogram; ...@@ -23,6 +24,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.BasicNativePage; import org.chromium.chrome.browser.BasicNativePage;
import org.chromium.chrome.browser.ChromeApplication;
import org.chromium.chrome.browser.download.DownloadManagerService; import org.chromium.chrome.browser.download.DownloadManagerService;
import org.chromium.chrome.browser.download.DownloadUtils; import org.chromium.chrome.browser.download.DownloadUtils;
import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadBridge; import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadBridge;
...@@ -70,10 +72,10 @@ public class DownloadManagerUi implements OnMenuItemClickListener, SearchDelegat ...@@ -70,10 +72,10 @@ public class DownloadManagerUi implements OnMenuItemClickListener, SearchDelegat
private SelectionDelegate<DownloadHistoryItemWrapper> mSelectionDelegate; private SelectionDelegate<DownloadHistoryItemWrapper> mSelectionDelegate;
private ThumbnailProvider mThumbnailProvider; private ThumbnailProvider mThumbnailProvider;
DownloadBackendProvider() { DownloadBackendProvider(DiscardableReferencePool referencePool) {
mOfflinePageBridge = new OfflinePageDownloadBridge(Profile.getLastUsedProfile()); mOfflinePageBridge = new OfflinePageDownloadBridge(Profile.getLastUsedProfile());
mSelectionDelegate = new DownloadItemSelectionDelegate(); mSelectionDelegate = new DownloadItemSelectionDelegate();
mThumbnailProvider = new ThumbnailProviderImpl(); mThumbnailProvider = new ThumbnailProviderImpl(referencePool);
} }
@Override @Override
...@@ -182,8 +184,10 @@ public class DownloadManagerUi implements OnMenuItemClickListener, SearchDelegat ...@@ -182,8 +184,10 @@ public class DownloadManagerUi implements OnMenuItemClickListener, SearchDelegat
ComponentName parentComponent, boolean isSeparateActivity, ComponentName parentComponent, boolean isSeparateActivity,
SnackbarManager snackbarManager) { SnackbarManager snackbarManager) {
mActivity = activity; mActivity = activity;
mBackendProvider = ChromeApplication application = (ChromeApplication) activity.getApplication();
sProviderForTests == null ? new DownloadBackendProvider() : sProviderForTests; mBackendProvider = sProviderForTests == null
? new DownloadBackendProvider(application.getReferencePool())
: sProviderForTests;
mSnackbarManager = snackbarManager; mSnackbarManager = snackbarManager;
mMainView = (ViewGroup) LayoutInflater.from(activity).inflate(R.layout.download_main, null); mMainView = (ViewGroup) LayoutInflater.from(activity).inflate(R.layout.download_main, null);
......
...@@ -9,6 +9,7 @@ import android.graphics.Bitmap; ...@@ -9,6 +9,7 @@ import android.graphics.Bitmap;
import android.os.SystemClock; import android.os.SystemClock;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.Promise; import org.chromium.base.Promise;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.browser.NativePageHost; import org.chromium.chrome.browser.NativePageHost;
...@@ -60,13 +61,16 @@ public class ImageFetcher { ...@@ -60,13 +61,16 @@ public class ImageFetcher {
private final SuggestionsSource mSuggestionsSource; private final SuggestionsSource mSuggestionsSource;
private final Profile mProfile; private final Profile mProfile;
private final DiscardableReferencePool mReferencePool;
private ThumbnailProvider mThumbnailProvider; private ThumbnailProvider mThumbnailProvider;
private FaviconHelper mFaviconHelper; private FaviconHelper mFaviconHelper;
private LargeIconBridge mLargeIconBridge; private LargeIconBridge mLargeIconBridge;
public ImageFetcher(SuggestionsSource suggestionsSource, Profile profile, NativePageHost host) { public ImageFetcher(SuggestionsSource suggestionsSource, Profile profile,
DiscardableReferencePool referencePool, NativePageHost host) {
mSuggestionsSource = suggestionsSource; mSuggestionsSource = suggestionsSource;
mProfile = profile; mProfile = profile;
mReferencePool = referencePool;
mUseFaviconService = CardsVariationParameters.isFaviconServiceEnabled(); mUseFaviconService = CardsVariationParameters.isFaviconServiceEnabled();
mHost = host; mHost = host;
} }
...@@ -298,8 +302,8 @@ public class ImageFetcher { ...@@ -298,8 +302,8 @@ public class ImageFetcher {
*/ */
private ThumbnailProvider getThumbnailProvider() { private ThumbnailProvider getThumbnailProvider() {
if (mThumbnailProvider == null) { if (mThumbnailProvider == null) {
mThumbnailProvider = mThumbnailProvider = SuggestionsDependencyFactory.getInstance().createThumbnailProvider(
SuggestionsDependencyFactory.getInstance().createThumbnailProvider(); mReferencePool);
} }
return mThumbnailProvider; return mThumbnailProvider;
} }
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.suggestions; package org.chromium.chrome.browser.suggestions;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.browser.download.ui.ThumbnailProvider; import org.chromium.chrome.browser.download.ui.ThumbnailProvider;
...@@ -53,8 +54,8 @@ public class SuggestionsDependencyFactory { ...@@ -53,8 +54,8 @@ public class SuggestionsDependencyFactory {
return new LargeIconBridge(profile); return new LargeIconBridge(profile);
} }
public ThumbnailProvider createThumbnailProvider() { public ThumbnailProvider createThumbnailProvider(DiscardableReferencePool referencePool) {
return new ThumbnailProviderImpl(); return new ThumbnailProviderImpl(referencePool);
} }
public FaviconHelper createFaviconHelper() { public FaviconHelper createFaviconHelper() {
......
...@@ -38,7 +38,7 @@ public class SuggestionsUiDelegateImpl implements SuggestionsUiDelegate { ...@@ -38,7 +38,7 @@ public class SuggestionsUiDelegateImpl implements SuggestionsUiDelegate {
mSuggestionsRanker = new SuggestionsRanker(); mSuggestionsRanker = new SuggestionsRanker();
mSuggestionsEventReporter = eventReporter; mSuggestionsEventReporter = eventReporter;
mSuggestionsNavigationDelegate = navigationDelegate; mSuggestionsNavigationDelegate = navigationDelegate;
mImageFetcher = new ImageFetcher(suggestionsSource, profile, host); mImageFetcher = new ImageFetcher(suggestionsSource, profile, referencePool, host);
mHost = host; mHost = host;
mReferencePool = referencePool; mReferencePool = referencePool;
......
...@@ -7,14 +7,14 @@ package org.chromium.chrome.browser.download.ui; ...@@ -7,14 +7,14 @@ package org.chromium.chrome.browser.download.ui;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.support.test.filters.MediumTest; import android.support.test.filters.MediumTest;
import junit.framework.Assert;
import org.junit.After; import org.junit.After;
import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.CallbackHelper; import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
...@@ -40,17 +40,20 @@ public class ThumbnailProviderImplTest { ...@@ -40,17 +40,20 @@ public class ThumbnailProviderImplTest {
public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
private ThumbnailProviderImpl mThumbnailProvider; private ThumbnailProviderImpl mThumbnailProvider;
private DiscardableReferencePool mReferencePool;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
mActivityTestRule.startMainActivityOnBlankPage(); mActivityTestRule.startMainActivityOnBlankPage();
mThumbnailProvider = new ThumbnailProviderImpl(); ThreadUtils.runOnUiThread(() -> {
clearThumbnailCache(); mReferencePool = new DiscardableReferencePool();
mThumbnailProvider = new ThumbnailProviderImpl(mReferencePool);
});
} }
@After @After
public void tearDown() { public void tearDown() {
clearThumbnailCache(); ThreadUtils.runOnUiThread(mThumbnailProvider::destroy);
} }
@Test @Test
...@@ -65,10 +68,8 @@ public class ThumbnailProviderImplTest { ...@@ -65,10 +68,8 @@ public class ThumbnailProviderImplTest {
final TestThumbnailRequest request = new TestThumbnailRequest( final TestThumbnailRequest request = new TestThumbnailRequest(
testFilePath, requiredSize, thumbnailRetrievedCallbackHelper); testFilePath, requiredSize, thumbnailRetrievedCallbackHelper);
ThreadUtils.runOnUiThread(new Runnable() { ThreadUtils.runOnUiThread(() -> {
public void run() { mThumbnailProvider.getThumbnail(request);
mThumbnailProvider.getThumbnail(request);
}
}); });
thumbnailRetrievedCallbackHelper.waitForCallback( thumbnailRetrievedCallbackHelper.waitForCallback(
...@@ -89,10 +90,8 @@ public class ThumbnailProviderImplTest { ...@@ -89,10 +90,8 @@ public class ThumbnailProviderImplTest {
final TestThumbnailRequest request = new TestThumbnailRequest( final TestThumbnailRequest request = new TestThumbnailRequest(
testFilePath, requiredSize, thumbnailRetrievedCallbackHelper); testFilePath, requiredSize, thumbnailRetrievedCallbackHelper);
ThreadUtils.runOnUiThread(new Runnable() { ThreadUtils.runOnUiThread(() -> {
public void run() { mThumbnailProvider.getThumbnail(request);
mThumbnailProvider.getThumbnail(request);
}
}); });
thumbnailRetrievedCallbackHelper.waitForCallback( thumbnailRetrievedCallbackHelper.waitForCallback(
...@@ -113,10 +112,8 @@ public class ThumbnailProviderImplTest { ...@@ -113,10 +112,8 @@ public class ThumbnailProviderImplTest {
final TestThumbnailRequest request = new TestThumbnailRequest( final TestThumbnailRequest request = new TestThumbnailRequest(
testFilePath, requiredSize, thumbnailRetrievedCallbackHelper); testFilePath, requiredSize, thumbnailRetrievedCallbackHelper);
ThreadUtils.runOnUiThread(new Runnable() { ThreadUtils.runOnUiThread(() -> {
public void run() { mThumbnailProvider.getThumbnail(request);
mThumbnailProvider.getThumbnail(request);
}
}); });
thumbnailRetrievedCallbackHelper.waitForCallback( thumbnailRetrievedCallbackHelper.waitForCallback(
...@@ -137,10 +134,8 @@ public class ThumbnailProviderImplTest { ...@@ -137,10 +134,8 @@ public class ThumbnailProviderImplTest {
final TestThumbnailRequest request = new TestThumbnailRequest( final TestThumbnailRequest request = new TestThumbnailRequest(
testFilePath, requiredSize, thumbnailRetrievedCallbackHelper); testFilePath, requiredSize, thumbnailRetrievedCallbackHelper);
ThreadUtils.runOnUiThread(new Runnable() { ThreadUtils.runOnUiThread(() -> {
public void run() { mThumbnailProvider.getThumbnail(request);
mThumbnailProvider.getThumbnail(request);
}
}); });
thumbnailRetrievedCallbackHelper.waitForCallback( thumbnailRetrievedCallbackHelper.waitForCallback(
...@@ -161,10 +156,8 @@ public class ThumbnailProviderImplTest { ...@@ -161,10 +156,8 @@ public class ThumbnailProviderImplTest {
final TestThumbnailRequest request = new TestThumbnailRequest( final TestThumbnailRequest request = new TestThumbnailRequest(
testFilePath, requiredSize, thumbnailRetrievedCallbackHelper); testFilePath, requiredSize, thumbnailRetrievedCallbackHelper);
ThreadUtils.runOnUiThread(new Runnable() { ThreadUtils.runOnUiThread(() -> {
public void run() { mThumbnailProvider.getThumbnail(request);
mThumbnailProvider.getThumbnail(request);
}
}); });
thumbnailRetrievedCallbackHelper.waitForCallback( thumbnailRetrievedCallbackHelper.waitForCallback(
...@@ -179,15 +172,6 @@ public class ThumbnailProviderImplTest { ...@@ -179,15 +172,6 @@ public class ThumbnailProviderImplTest {
Assert.assertEquals(expectedHeight, request.getRetrievedThumbnail().getHeight()); Assert.assertEquals(expectedHeight, request.getRetrievedThumbnail().getHeight());
} }
private void clearThumbnailCache() {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
ThumbnailProviderImpl.clearCache();
}
});
}
private static class TestThumbnailRequest implements ThumbnailRequest { private static class TestThumbnailRequest implements ThumbnailRequest {
private final String mTestFilePath; private final String mTestFilePath;
private final int mRequiredSize; private final int mRequiredSize;
......
...@@ -415,7 +415,8 @@ public class ArticleSnippetsTest { ...@@ -415,7 +415,8 @@ public class ArticleSnippetsTest {
new DummySuggestionsEventReporter(); new DummySuggestionsEventReporter();
private final SuggestionsRanker mSuggestionsRanker = new SuggestionsRanker(); private final SuggestionsRanker mSuggestionsRanker = new SuggestionsRanker();
private final DiscardableReferencePool mReferencePool = new DiscardableReferencePool(); private final DiscardableReferencePool mReferencePool = new DiscardableReferencePool();
private final ImageFetcher mImageFetcher = new MockImageFetcher(mSnippetsSource); private final ImageFetcher mImageFetcher =
new MockImageFetcher(mSnippetsSource, mReferencePool);
@Override @Override
public SuggestionsSource getSuggestionsSource() { public SuggestionsSource getSuggestionsSource() {
...@@ -457,8 +458,9 @@ public class ArticleSnippetsTest { ...@@ -457,8 +458,9 @@ public class ArticleSnippetsTest {
} }
private class MockImageFetcher extends ImageFetcher { private class MockImageFetcher extends ImageFetcher {
public MockImageFetcher(SuggestionsSource suggestionsSource) { public MockImageFetcher(
super(suggestionsSource, null, null); SuggestionsSource suggestionsSource, DiscardableReferencePool referencePool) {
super(suggestionsSource, null, referencePool, null);
} }
@Override @Override
......
...@@ -21,6 +21,7 @@ import org.mockito.MockitoAnnotations; ...@@ -21,6 +21,7 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.chrome.browser.DisableHistogramsRule; import org.chromium.chrome.browser.DisableHistogramsRule;
import org.chromium.chrome.browser.NativePageHost; import org.chromium.chrome.browser.NativePageHost;
import org.chromium.chrome.browser.download.ui.ThumbnailProvider; import org.chromium.chrome.browser.download.ui.ThumbnailProvider;
...@@ -53,8 +54,10 @@ public class ImageFetcherTest { ...@@ -53,8 +54,10 @@ public class ImageFetcherTest {
@Rule @Rule
public SuggestionsDependenciesRule mSuggestionsDeps = new SuggestionsDependenciesRule(); public SuggestionsDependenciesRule mSuggestionsDeps = new SuggestionsDependenciesRule();
private DiscardableReferencePool mReferencePool = new DiscardableReferencePool();
@Mock @Mock
FaviconHelper mFaviconHelper; private FaviconHelper mFaviconHelper;
@Mock @Mock
private ThumbnailProvider mThumbnailProvider; private ThumbnailProvider mThumbnailProvider;
@Mock @Mock
...@@ -75,8 +78,8 @@ public class ImageFetcherTest { ...@@ -75,8 +78,8 @@ public class ImageFetcherTest {
@Test @Test
public void testFaviconFetch() { public void testFaviconFetch() {
ImageFetcher imageFetcher = new ImageFetcher( ImageFetcher imageFetcher = new ImageFetcher(mSuggestionsSource, mock(Profile.class),
mSuggestionsSource, mock(Profile.class), mock(NativePageHost.class)); mReferencePool, mock(NativePageHost.class));
SnippetArticle suggestion = createDummySuggestion(KnownCategories.BOOKMARKS); SnippetArticle suggestion = createDummySuggestion(KnownCategories.BOOKMARKS);
imageFetcher.makeFaviconRequest(suggestion, IMAGE_SIZE_PX, mock(Callback.class)); imageFetcher.makeFaviconRequest(suggestion, IMAGE_SIZE_PX, mock(Callback.class));
...@@ -90,8 +93,8 @@ public class ImageFetcherTest { ...@@ -90,8 +93,8 @@ public class ImageFetcherTest {
@Test @Test
public void testDownloadThumbnailFetch() { public void testDownloadThumbnailFetch() {
ImageFetcher imageFetcher = new ImageFetcher( ImageFetcher imageFetcher = new ImageFetcher(mSuggestionsSource, mock(Profile.class),
mSuggestionsSource, mock(Profile.class), mock(NativePageHost.class)); mReferencePool, mock(NativePageHost.class));
SnippetArticle suggestion = createDummySuggestion(KnownCategories.DOWNLOADS); SnippetArticle suggestion = createDummySuggestion(KnownCategories.DOWNLOADS);
...@@ -105,8 +108,8 @@ public class ImageFetcherTest { ...@@ -105,8 +108,8 @@ public class ImageFetcherTest {
@Test @Test
public void testArticleThumbnailFetch() { public void testArticleThumbnailFetch() {
ImageFetcher imageFetcher = new ImageFetcher( ImageFetcher imageFetcher = new ImageFetcher(mSuggestionsSource, mock(Profile.class),
mSuggestionsSource, mock(Profile.class), mock(NativePageHost.class)); mReferencePool, mock(NativePageHost.class));
SnippetArticle suggestion = createDummySuggestion(KnownCategories.ARTICLES); SnippetArticle suggestion = createDummySuggestion(KnownCategories.ARTICLES);
imageFetcher.makeArticleThumbnailRequest(suggestion, mock(Callback.class)); imageFetcher.makeArticleThumbnailRequest(suggestion, mock(Callback.class));
...@@ -116,8 +119,8 @@ public class ImageFetcherTest { ...@@ -116,8 +119,8 @@ public class ImageFetcherTest {
@Test @Test
public void testLargeIconFetch() { public void testLargeIconFetch() {
ImageFetcher imageFetcher = new ImageFetcher( ImageFetcher imageFetcher = new ImageFetcher(mSuggestionsSource, mock(Profile.class),
mSuggestionsSource, mock(Profile.class), mock(NativePageHost.class)); mReferencePool, mock(NativePageHost.class));
imageFetcher.makeLargeIconRequest(URL_STRING, IMAGE_SIZE_PX, mock(LargeIconCallback.class)); imageFetcher.makeLargeIconRequest(URL_STRING, IMAGE_SIZE_PX, mock(LargeIconCallback.class));
......
...@@ -483,7 +483,7 @@ public class TileGroupUnitTest { ...@@ -483,7 +483,7 @@ public class TileGroupUnitTest {
private final List<LargeIconCallback> mCallbackList = new ArrayList<>(); private final List<LargeIconCallback> mCallbackList = new ArrayList<>();
public FakeImageFetcher() { public FakeImageFetcher() {
super(null, null, null); super(null, null, null, null);
} }
@Override @Override
......
...@@ -7,6 +7,7 @@ package org.chromium.chrome.test.util.browser.suggestions; ...@@ -7,6 +7,7 @@ package org.chromium.chrome.test.util.browser.suggestions;
import org.junit.rules.TestWatcher; import org.junit.rules.TestWatcher;
import org.junit.runner.Description; import org.junit.runner.Description;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.annotations.SuppressFBWarnings; import org.chromium.base.annotations.SuppressFBWarnings;
import org.chromium.chrome.browser.download.ui.ThumbnailProvider; import org.chromium.chrome.browser.download.ui.ThumbnailProvider;
import org.chromium.chrome.browser.favicon.FaviconHelper; import org.chromium.chrome.browser.favicon.FaviconHelper;
...@@ -89,9 +90,9 @@ public class SuggestionsDependenciesRule extends TestWatcher { ...@@ -89,9 +90,9 @@ public class SuggestionsDependenciesRule extends TestWatcher {
} }
@Override @Override
public ThumbnailProvider createThumbnailProvider() { public ThumbnailProvider createThumbnailProvider(DiscardableReferencePool referencePool) {
if (thumbnailProvider != null) return thumbnailProvider; if (thumbnailProvider != null) return thumbnailProvider;
return super.createThumbnailProvider(); return super.createThumbnailProvider(referencePool);
} }
@Override @Override
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment