Commit 75fc7599 authored by David Trainor's avatar David Trainor Committed by Commit Bot

Remove GlobalDiscardableReferencePool usage from download home

Remove the reference to the //chrome/android/java class
GlobalDiscardabeReferencePool.  Download home only needs the base class
in //base, and we can pass in the global reference through the factory.

Bug: 1046219
Change-Id: I18e084992ef82230d3d2f9ee40ce7460bd7d6480
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2024750
Commit-Queue: David Trainor <dtrainor@chromium.org>
Reviewed-by: default avatarShakti Sahu <shaktisahu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#736250}
parent 55076700
......@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.download.home;
import android.app.Activity;
import android.content.Context;
import org.chromium.chrome.browser.GlobalDiscardableReferencePool;
import org.chromium.chrome.browser.download.items.OfflineContentAggregatorFactory;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
import org.chromium.chrome.browser.profiles.Profile;
......@@ -35,7 +36,7 @@ public class DownloadManagerCoordinatorFactory {
DownloadManagerCoordinatorFactory::settingsLaunchHelper, snackbarManager,
modalDialogManager, TrackerFactory.getTrackerForProfile(profile),
new FaviconProviderImpl(profile), OfflineContentAggregatorFactory.get(),
legacyProvider);
legacyProvider, GlobalDiscardableReferencePool.getReferencePool());
}
private static void settingsLaunchHelper(Context context) {
......
......@@ -13,6 +13,7 @@ import android.widget.FrameLayout;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.Callback;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.ObserverList;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.ObservableSupplier;
......@@ -57,7 +58,8 @@ class DownloadManagerCoordinatorImpl
ObservableSupplier<Boolean> isPrefetchEnabledSupplier,
Callback<Context> settingsLauncher, SnackbarManager snackbarManager,
ModalDialogManager modalDialogManager, Tracker tracker, FaviconProvider faviconProvider,
OfflineContentProvider provider, LegacyDownloadProvider legacyProvider) {
OfflineContentProvider provider, LegacyDownloadProvider legacyProvider,
DiscardableReferencePool discardableReferencePool) {
mActivity = activity;
mSettingsLauncher = settingsLauncher;
mDeleteCoordinator = new DeleteUndoCoordinator(snackbarManager);
......@@ -65,7 +67,8 @@ class DownloadManagerCoordinatorImpl
mListCoordinator = new DateOrderedListCoordinator(mActivity, config,
isPrefetchEnabledSupplier, provider, legacyProvider,
mDeleteCoordinator::showSnackbar, mSelectionDelegate, this::notifyFilterChanged,
createDateOrderedListObserver(), modalDialogManager, faviconProvider);
createDateOrderedListObserver(), modalDialogManager, faviconProvider,
discardableReferencePool);
mToolbarCoordinator = new ToolbarCoordinator(mActivity, this, mListCoordinator,
mSelectionDelegate, config.isSeparateActivity, tracker);
......
......@@ -13,6 +13,7 @@ import android.view.ViewGroup;
import android.widget.FrameLayout;
import org.chromium.base.Callback;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.Log;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.chrome.R;
......@@ -91,17 +92,21 @@ public class DateOrderedListCoordinator implements ToolbarCoordinator.ToolbarLis
/**
* Creates an instance of a DateOrderedListCoordinator, which will visually represent
* {@code provider} as a list of items.
* @param context The {@link Context} to use to build the views.
* @param config The {@link DownloadManagerUiConfig} to provide UI configuration params.
* @param context The {@link Context} to use to build the views.
* @param config The {@link DownloadManagerUiConfig} to provide UI
* configuration params.
* @param isPrefetchEnabledSupplier A supplier that indicates whether or not prefetch is
* enabled.
* @param provider The {@link OfflineContentProvider} to visually represent.
* @param legacyProvider A legacy version of a provider for downloads.
* @param deleteController A class to manage whether or not items can be deleted.
* @param filterObserver A {@link FilterCoordinator.Observer} that should be notified of
* filter changes. This is meant to be used for external components that
* need to take action based on the visual state of the list.
* @param dateOrderedListObserver A {@link DateOrderedListObserver}.
* enabled.
* @param provider The {@link OfflineContentProvider} to visually represent.
* @param legacyProvider A legacy version of a provider for downloads.
* @param deleteController A class to manage whether or not items can be deleted.
* @param filterObserver A {@link FilterCoordinator.Observer} that should be notified
* of filter changes. This is meant to be used for external
* components that need to take action based on the visual
* state of the list.
* @param dateOrderedListObserver A {@link DateOrderedListObserver}.
* @param discardableReferencePool A {@linK DiscardableReferencePool} reference to use for
* large objects (e.g. bitmaps) in the UI.
*/
public DateOrderedListCoordinator(Context context, DownloadManagerUiConfig config,
ObservableSupplier<Boolean> isPrefetchEnabledSupplier, OfflineContentProvider provider,
......@@ -109,7 +114,7 @@ public class DateOrderedListCoordinator implements ToolbarCoordinator.ToolbarLis
SelectionDelegate<ListItem> selectionDelegate,
FilterCoordinator.Observer filterObserver,
DateOrderedListObserver dateOrderedListObserver, ModalDialogManager modalDialogManager,
FaviconProvider faviconProvider) {
FaviconProvider faviconProvider, DiscardableReferencePool discardableReferencePool) {
mContext = context;
ListItemModel model = new ListItemModel();
......@@ -120,7 +125,7 @@ public class DateOrderedListCoordinator implements ToolbarCoordinator.ToolbarLis
mMediator = new DateOrderedListMediator(provider, legacyProvider, faviconProvider,
this::startShareIntent, deleteController, this::startRename, selectionDelegate,
config, dateOrderedListObserver, model);
config, dateOrderedListObserver, model, discardableReferencePool);
mEmptyCoordinator = new EmptyCoordinator(context, mMediator.getEmptySource());
......
......@@ -13,7 +13,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.Callback;
import org.chromium.base.CollectionUtil;
import org.chromium.chrome.browser.GlobalDiscardableReferencePool;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig;
import org.chromium.chrome.browser.download.home.FaviconProvider;
import org.chromium.chrome.browser.download.home.JustNowProvider;
......@@ -145,23 +145,26 @@ class DateOrderedListMediator {
/**
* Creates an instance of a DateOrderedListMediator that will push {@code provider} into
* {@code model}.
* @param provider The {@link OfflineContentProvider} to visually represent.
* @param legacyProvider A legacy version of a provider for downloads.
* @param faviconProvider The {@link FaviconProvider} to handle favicon requests.
* @param deleteController A class to manage whether or not items can be deleted.
* @param shareController A class responsible for sharing downloaded item {@link
* Intent}s.
* @param selectionDelegate A class responsible for handling list item selection.
* @param config A {@link DownloadManagerUiConfig} to provide UI config params.
* @param dateOrderedListObserver An observer of the list and recycler view.
* @param model The {@link ListItemModel} to push {@code provider} into.
* @param provider The {@link OfflineContentProvider} to visually represent.
* @param legacyProvider A legacy version of a provider for downloads.
* @param faviconProvider The {@link FaviconProvider} to handle favicon requests.
* @param deleteController A class to manage whether or not items can be deleted.
* @param shareController A class responsible for sharing downloaded item {@link
* Intent}s.
* @param selectionDelegate A class responsible for handling list item selection.
* @param config A {@link DownloadManagerUiConfig} to provide UI config
* params.
* @param dateOrderedListObserver An observer of the list and recycler view.
* @param model The {@link ListItemModel} to push {@code provider} into.
* @param discardableReferencePool A {@linK DiscardableReferencePool} reference to use for large
* objects (e.g. bitmaps) in the UI.
*/
public DateOrderedListMediator(OfflineContentProvider provider,
LegacyDownloadProvider legacyProvider, FaviconProvider faviconProvider,
ShareController shareController, DeleteController deleteController,
RenameController renameController, SelectionDelegate<ListItem> selectionDelegate,
DownloadManagerUiConfig config, DateOrderedListObserver dateOrderedListObserver,
ListItemModel model) {
ListItemModel model, DiscardableReferencePool discardableReferencePool) {
// Build a chain from the data source to the model. The chain will look like:
// [OfflineContentProvider] ->
// [OfflineItemSource] ->
......@@ -199,10 +202,9 @@ class DateOrderedListMediator {
new OfflineItemStartupLogger(config, mInvalidStateFilter);
mSearchFilter.addObserver(new EmptyStateObserver(mSearchFilter, dateOrderedListObserver));
mThumbnailProvider =
new ThumbnailProviderImpl(GlobalDiscardableReferencePool.getReferencePool(),
config.inMemoryThumbnailCacheSizeBytes,
ThumbnailProviderImpl.ClientType.DOWNLOAD_HOME);
mThumbnailProvider = new ThumbnailProviderImpl(discardableReferencePool,
config.inMemoryThumbnailCacheSizeBytes,
ThumbnailProviderImpl.ClientType.DOWNLOAD_HOME);
mSelectionObserver = new MediatorSelectionObserver(selectionDelegate);
mModel.getProperties().set(ListProperties.ENABLE_ITEM_ANIMATIONS, true);
......
......@@ -39,6 +39,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.chromium.base.Callback;
import org.chromium.base.DiscardableReferencePool;
import org.chromium.base.supplier.ObservableSupplierImpl;
import org.chromium.base.task.PostTask;
import org.chromium.base.test.util.DisabledTest;
......@@ -93,6 +94,8 @@ public class DownloadActivityV2Test extends DummyUiActivityTestCase {
private StubbedOfflineContentProvider mStubbedOfflineContentProvider;
private DiscardableReferencePool mDiscardableReferencePool;
@Override
public void setUpTest() throws Exception {
super.setUpTest();
......@@ -134,6 +137,8 @@ public class DownloadActivityV2Test extends DummyUiActivityTestCase {
mStubbedOfflineContentProvider.addItem(item1);
mStubbedOfflineContentProvider.addItem(item2);
mStubbedOfflineContentProvider.addItem(item3);
mDiscardableReferencePool = new DiscardableReferencePool();
}
private void setUpUi() {
......@@ -157,7 +162,7 @@ public class DownloadActivityV2Test extends DummyUiActivityTestCase {
mDownloadCoordinator = new DownloadManagerCoordinatorImpl(getActivity(), config,
isPrefetchEnabledSupplier, settingsLauncher, mSnackbarManager, mModalDialogManager,
mTracker, faviconProvider, OfflineContentAggregatorFactory.get(),
/* LegacyDownloadProvider */ null);
/* LegacyDownloadProvider */ null, mDiscardableReferencePool);
getActivity().setContentView(mDownloadCoordinator.getView());
mDownloadCoordinator.updateForUrl(UrlConstants.DOWNLOADS_URL);
......
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