Commit a1ec8acb authored by David Trainor's avatar David Trainor Committed by Commit Bot

Remove Download Home dependencies (config, glue)

This patch removes download home dependencies from the DownloadGlue
class and the DownloadManagerUiConfig class.

- For DownloadGlue, a LegacyDownloadProvider interface is exposed and
passed through.  This allows the implementation to still live publicly
until we can remove the whole chain.

- For DownloadManagerUiConfig, pull out the component that reads from
ChromeFeatureList and move it to a helper class to build the config from
feature flags.

Bug: 1025395
Change-Id: I8c36f2dcab192ff3f93aeb0ee2a99c01b568af5f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1919909
Commit-Queue: David Trainor <dtrainor@chromium.org>
Reviewed-by: default avatarShakti Sahu <shaktisahu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#735540}
parent ca7932ce
...@@ -538,9 +538,13 @@ chrome_java_sources = [ ...@@ -538,9 +538,13 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinatorFactory.java", "java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinatorFactory.java",
"java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinatorImpl.java", "java/src/org/chromium/chrome/browser/download/home/DownloadManagerCoordinatorImpl.java",
"java/src/org/chromium/chrome/browser/download/home/DownloadManagerUiConfig.java", "java/src/org/chromium/chrome/browser/download/home/DownloadManagerUiConfig.java",
"java/src/org/chromium/chrome/browser/download/home/DownloadManagerUiConfigHelper.java",
"java/src/org/chromium/chrome/browser/download/home/FaviconProvider.java", "java/src/org/chromium/chrome/browser/download/home/FaviconProvider.java",
"java/src/org/chromium/chrome/browser/download/home/FaviconProviderImpl.java", "java/src/org/chromium/chrome/browser/download/home/FaviconProviderImpl.java",
"java/src/org/chromium/chrome/browser/download/home/FileDeletionQueue.java",
"java/src/org/chromium/chrome/browser/download/home/JustNowProvider.java", "java/src/org/chromium/chrome/browser/download/home/JustNowProvider.java",
"java/src/org/chromium/chrome/browser/download/home/LegacyDownloadProvider.java",
"java/src/org/chromium/chrome/browser/download/home/LegacyDownloadProviderImpl.java",
"java/src/org/chromium/chrome/browser/download/home/OfflineItemSource.java", "java/src/org/chromium/chrome/browser/download/home/OfflineItemSource.java",
"java/src/org/chromium/chrome/browser/download/home/StableIds.java", "java/src/org/chromium/chrome/browser/download/home/StableIds.java",
"java/src/org/chromium/chrome/browser/download/home/empty/EmptyCoordinator.java", "java/src/org/chromium/chrome/browser/download/home/empty/EmptyCoordinator.java",
...@@ -565,8 +569,6 @@ chrome_java_sources = [ ...@@ -565,8 +569,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/download/home/filter/chips/ChipsCoordinator.java", "java/src/org/chromium/chrome/browser/download/home/filter/chips/ChipsCoordinator.java",
"java/src/org/chromium/chrome/browser/download/home/filter/chips/ChipsProvider.java", "java/src/org/chromium/chrome/browser/download/home/filter/chips/ChipsProvider.java",
"java/src/org/chromium/chrome/browser/download/home/filter/chips/ChipsViewHolder.java", "java/src/org/chromium/chrome/browser/download/home/filter/chips/ChipsViewHolder.java",
"java/src/org/chromium/chrome/browser/download/home/glue/DownloadGlue.java",
"java/src/org/chromium/chrome/browser/download/home/glue/FileDeletionQueue.java",
"java/src/org/chromium/chrome/browser/download/home/glue/OfflineContentProviderGlue.java", "java/src/org/chromium/chrome/browser/download/home/glue/OfflineContentProviderGlue.java",
"java/src/org/chromium/chrome/browser/download/home/glue/ThumbnailRequestGlue.java", "java/src/org/chromium/chrome/browser/download/home/glue/ThumbnailRequestGlue.java",
"java/src/org/chromium/chrome/browser/download/home/list/BatchListModel.java", "java/src/org/chromium/chrome/browser/download/home/list/BatchListModel.java",
......
...@@ -58,13 +58,13 @@ chrome_junit_test_java_sources = [ ...@@ -58,13 +58,13 @@ chrome_junit_test_java_sources = [
"junit/src/org/chromium/chrome/browser/display_cutout/DisplayCutoutControllerTest.java", "junit/src/org/chromium/chrome/browser/display_cutout/DisplayCutoutControllerTest.java",
"junit/src/org/chromium/chrome/browser/download/DownloadResumptionSchedulerTest.java", "junit/src/org/chromium/chrome/browser/download/DownloadResumptionSchedulerTest.java",
"junit/src/org/chromium/chrome/browser/download/DownloadSharedPreferenceEntryTest.java", "junit/src/org/chromium/chrome/browser/download/DownloadSharedPreferenceEntryTest.java",
"junit/src/org/chromium/chrome/browser/download/home/FileDeletionQueueTest.java",
"junit/src/org/chromium/chrome/browser/download/home/filter/DeleteUndoOfflineItemFilterTest.java", "junit/src/org/chromium/chrome/browser/download/home/filter/DeleteUndoOfflineItemFilterTest.java",
"junit/src/org/chromium/chrome/browser/download/home/filter/FiltersTest.java", "junit/src/org/chromium/chrome/browser/download/home/filter/FiltersTest.java",
"junit/src/org/chromium/chrome/browser/download/home/filter/OffTheRecordOfflineItemFilterTest.java", "junit/src/org/chromium/chrome/browser/download/home/filter/OffTheRecordOfflineItemFilterTest.java",
"junit/src/org/chromium/chrome/browser/download/home/filter/OfflineItemFilterTest.java", "junit/src/org/chromium/chrome/browser/download/home/filter/OfflineItemFilterTest.java",
"junit/src/org/chromium/chrome/browser/download/home/filter/SearchOfflineItemFilterTest.java", "junit/src/org/chromium/chrome/browser/download/home/filter/SearchOfflineItemFilterTest.java",
"junit/src/org/chromium/chrome/browser/download/home/filter/TypeOfflineItemFilterTest.java", "junit/src/org/chromium/chrome/browser/download/home/filter/TypeOfflineItemFilterTest.java",
"junit/src/org/chromium/chrome/browser/download/home/glue/FileDeletionQueueTest.java",
"junit/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMutatorTest.java", "junit/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMutatorTest.java",
"junit/src/org/chromium/chrome/browser/download/home/list/ItemUtilsTest.java", "junit/src/org/chromium/chrome/browser/download/home/list/ItemUtilsTest.java",
"junit/src/org/chromium/chrome/browser/download/home/list/ShareUtilsTest.java", "junit/src/org/chromium/chrome/browser/download/home/list/ShareUtilsTest.java",
......
...@@ -13,6 +13,7 @@ import org.chromium.chrome.browser.SnackbarActivity; ...@@ -13,6 +13,7 @@ import org.chromium.chrome.browser.SnackbarActivity;
import org.chromium.chrome.browser.download.home.DownloadManagerCoordinator; import org.chromium.chrome.browser.download.home.DownloadManagerCoordinator;
import org.chromium.chrome.browser.download.home.DownloadManagerCoordinatorFactory; import org.chromium.chrome.browser.download.home.DownloadManagerCoordinatorFactory;
import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig; import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig;
import org.chromium.chrome.browser.download.home.DownloadManagerUiConfigHelper;
import org.chromium.chrome.browser.download.home.filter.Filters; import org.chromium.chrome.browser.download.home.filter.Filters;
import org.chromium.chrome.browser.download.items.OfflineContentAggregatorNotificationBridgeUiFactory; import org.chromium.chrome.browser.download.items.OfflineContentAggregatorNotificationBridgeUiFactory;
import org.chromium.chrome.browser.util.IntentUtils; import org.chromium.chrome.browser.util.IntentUtils;
...@@ -58,8 +59,9 @@ public class DownloadActivity extends SnackbarActivity implements ModalDialogMan ...@@ -58,8 +59,9 @@ public class DownloadActivity extends SnackbarActivity implements ModalDialogMan
getIntent(), IntentHandler.EXTRA_PARENT_COMPONENT); getIntent(), IntentHandler.EXTRA_PARENT_COMPONENT);
mPermissionDelegate = mPermissionDelegate =
new ActivityAndroidPermissionDelegate(new WeakReference<Activity>(this)); new ActivityAndroidPermissionDelegate(new WeakReference<Activity>(this));
DownloadManagerUiConfig config = DownloadManagerUiConfig config =
new DownloadManagerUiConfig.Builder() DownloadManagerUiConfigHelper.fromFlags()
.setIsOffTheRecord(isOffTheRecord) .setIsOffTheRecord(isOffTheRecord)
.setIsSeparateActivity(true) .setIsSeparateActivity(true)
.setShowPaginationHeaders(DownloadUtils.shouldShowPaginationHeaders()) .setShowPaginationHeaders(DownloadUtils.shouldShowPaginationHeaders())
......
...@@ -13,6 +13,7 @@ import org.chromium.chrome.browser.ChromeActivity; ...@@ -13,6 +13,7 @@ import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.download.home.DownloadManagerCoordinator; import org.chromium.chrome.browser.download.home.DownloadManagerCoordinator;
import org.chromium.chrome.browser.download.home.DownloadManagerCoordinatorFactory; import org.chromium.chrome.browser.download.home.DownloadManagerCoordinatorFactory;
import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig; import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig;
import org.chromium.chrome.browser.download.home.DownloadManagerUiConfigHelper;
import org.chromium.chrome.browser.ui.native_page.BasicNativePage; import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
import org.chromium.chrome.browser.ui.native_page.NativePageHost; import org.chromium.chrome.browser.ui.native_page.NativePageHost;
import org.chromium.chrome.browser.util.UrlConstants; import org.chromium.chrome.browser.util.UrlConstants;
...@@ -35,13 +36,13 @@ public class DownloadPage extends BasicNativePage implements DownloadManagerCoor ...@@ -35,13 +36,13 @@ public class DownloadPage extends BasicNativePage implements DownloadManagerCoor
super(host); super(host);
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
DownloadManagerUiConfig config = DownloadManagerUiConfig config =
new DownloadManagerUiConfig.Builder() DownloadManagerUiConfigHelper.fromFlags()
.setIsOffTheRecord(activity.getCurrentTabModel().isIncognito()) .setIsOffTheRecord(activity.getCurrentTabModel().isIncognito())
.setIsSeparateActivity(false) .setIsSeparateActivity(false)
.setShowPaginationHeaders(DownloadUtils.shouldShowPaginationHeaders()) .setShowPaginationHeaders(DownloadUtils.shouldShowPaginationHeaders())
.build(); .build();
mDownloadCoordinator = DownloadManagerCoordinatorFactory.create(activity, config, mDownloadCoordinator = DownloadManagerCoordinatorFactory.create(activity, config,
activity.getSnackbarManager(), activity.getComponentName(), activity.getSnackbarManager(), activity.getComponentName(),
activity.getModalDialogManager()); activity.getModalDialogManager());
......
...@@ -26,9 +26,11 @@ public class DownloadManagerCoordinatorFactory { ...@@ -26,9 +26,11 @@ public class DownloadManagerCoordinatorFactory {
public static DownloadManagerCoordinator create(Activity activity, public static DownloadManagerCoordinator create(Activity activity,
DownloadManagerUiConfig config, SnackbarManager snackbarManager, DownloadManagerUiConfig config, SnackbarManager snackbarManager,
ComponentName parentComponent, ModalDialogManager modalDialogManager) { ComponentName parentComponent, ModalDialogManager modalDialogManager) {
Profile profile = Profile.getLastUsedProfile(); Profile profile = Profile.getMainProfile();
LegacyDownloadProvider legacyProvider =
config.useNewDownloadPath ? new LegacyDownloadProviderImpl() : null;
return new DownloadManagerCoordinatorImpl(activity, config, snackbarManager, return new DownloadManagerCoordinatorImpl(activity, config, snackbarManager,
modalDialogManager, TrackerFactory.getTrackerForProfile(profile), modalDialogManager, TrackerFactory.getTrackerForProfile(profile),
new FaviconProviderImpl(profile)); new FaviconProviderImpl(profile), legacyProvider);
} }
} }
...@@ -53,14 +53,14 @@ class DownloadManagerCoordinatorImpl ...@@ -53,14 +53,14 @@ class DownloadManagerCoordinatorImpl
/** Builds a {@link DownloadManagerCoordinatorImpl} instance. */ /** Builds a {@link DownloadManagerCoordinatorImpl} instance. */
public DownloadManagerCoordinatorImpl(Activity activity, DownloadManagerUiConfig config, public DownloadManagerCoordinatorImpl(Activity activity, DownloadManagerUiConfig config,
SnackbarManager snackbarManager, ModalDialogManager modalDialogManager, Tracker tracker, SnackbarManager snackbarManager, ModalDialogManager modalDialogManager, Tracker tracker,
FaviconProvider faviconProvider) { FaviconProvider faviconProvider, LegacyDownloadProvider legacyProvider) {
mActivity = activity; mActivity = activity;
mDeleteCoordinator = new DeleteUndoCoordinator(snackbarManager); mDeleteCoordinator = new DeleteUndoCoordinator(snackbarManager);
mSelectionDelegate = new SelectionDelegate<ListItem>(); mSelectionDelegate = new SelectionDelegate<ListItem>();
mListCoordinator = new DateOrderedListCoordinator(mActivity, config, mListCoordinator = new DateOrderedListCoordinator(mActivity, config,
OfflineContentAggregatorFactory.get(), mDeleteCoordinator::showSnackbar, OfflineContentAggregatorFactory.get(), legacyProvider,
mSelectionDelegate, this::notifyFilterChanged, createDateOrderedListObserver(), mDeleteCoordinator::showSnackbar, mSelectionDelegate, this::notifyFilterChanged,
modalDialogManager, faviconProvider); createDateOrderedListObserver(), modalDialogManager, faviconProvider);
mToolbarCoordinator = new ToolbarCoordinator(mActivity, this, mListCoordinator, mToolbarCoordinator = new ToolbarCoordinator(mActivity, this, mListCoordinator,
mSelectionDelegate, config.isSeparateActivity, tracker); mSelectionDelegate, config.isSeparateActivity, tracker);
......
...@@ -8,7 +8,6 @@ import static org.chromium.chrome.browser.util.ConversionUtils.BYTES_PER_MEGABYT ...@@ -8,7 +8,6 @@ import static org.chromium.chrome.browser.util.ConversionUtils.BYTES_PER_MEGABYT
import org.chromium.base.ContextUtils; import org.chromium.base.ContextUtils;
import org.chromium.base.SysUtils; import org.chromium.base.SysUtils;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.DeviceFormFactor;
/** Provides the configuration params required by the download home UI. */ /** Provides the configuration params required by the download home UI. */
...@@ -80,6 +79,8 @@ public class DownloadManagerUiConfig { ...@@ -80,6 +79,8 @@ public class DownloadManagerUiConfig {
private static final int IN_MEMORY_THUMBNAIL_CACHE_SIZE_BYTES = 15 * BYTES_PER_MEGABYTE; private static final int IN_MEMORY_THUMBNAIL_CACHE_SIZE_BYTES = 15 * BYTES_PER_MEGABYTE;
private static final float MAX_THUMBNAIL_SCALE_FACTOR = 1.5f; /* hdpi scale factor. */
private boolean mIsOffTheRecord; private boolean mIsOffTheRecord;
private boolean mIsSeparateActivity; private boolean mIsSeparateActivity;
private boolean mUseGenericViewTypes; private boolean mUseGenericViewTypes;
...@@ -87,18 +88,15 @@ public class DownloadManagerUiConfig { ...@@ -87,18 +88,15 @@ public class DownloadManagerUiConfig {
private boolean mUseNewDownloadPath; private boolean mUseNewDownloadPath;
private boolean mUseNewDownloadPathThumbnails; private boolean mUseNewDownloadPathThumbnails;
private int mInMemoryThumbnailCacheSizeBytes = IN_MEMORY_THUMBNAIL_CACHE_SIZE_BYTES; private int mInMemoryThumbnailCacheSizeBytes = IN_MEMORY_THUMBNAIL_CACHE_SIZE_BYTES;
private float mMaxThumbnailScaleFactor = 1.5f; /* hdpi scale factor. */ private float mMaxThumbnailScaleFactor = MAX_THUMBNAIL_SCALE_FACTOR;
private long mJustNowThresholdSeconds; private long mJustNowThresholdSeconds = JUST_NOW_THRESHOLD_SECONDS;
private boolean mSupportsGrouping; private boolean mSupportsGrouping;
private boolean mShowPaginationHeaders; private boolean mShowPaginationHeaders;
public Builder() { public Builder() {
readParamsFromFinch();
mSupportFullWidthImages = !DeviceFormFactor.isNonMultiDisplayContextOnTablet( mSupportFullWidthImages = !DeviceFormFactor.isNonMultiDisplayContextOnTablet(
ContextUtils.getApplicationContext()); ContextUtils.getApplicationContext());
mUseGenericViewTypes = SysUtils.isLowEndDevice(); mUseGenericViewTypes = SysUtils.isLowEndDevice();
mUseNewDownloadPath = ChromeFeatureList.isEnabled(
ChromeFeatureList.DOWNLOAD_OFFLINE_CONTENT_PROVIDER);
} }
public Builder setIsOffTheRecord(boolean isOffTheRecord) { public Builder setIsOffTheRecord(boolean isOffTheRecord) {
...@@ -146,14 +144,13 @@ public class DownloadManagerUiConfig { ...@@ -146,14 +144,13 @@ public class DownloadManagerUiConfig {
return this; return this;
} }
public DownloadManagerUiConfig build() { public Builder setSupportsGrouping(boolean supportsGrouping) {
return new DownloadManagerUiConfig(this); mSupportsGrouping = supportsGrouping;
return this;
} }
private void readParamsFromFinch() { public DownloadManagerUiConfig build() {
mJustNowThresholdSeconds = JUST_NOW_THRESHOLD_SECONDS; return new DownloadManagerUiConfig(this);
mSupportsGrouping =
ChromeFeatureList.isEnabled(ChromeFeatureList.CONTENT_INDEXING_DOWNLOAD_HOME);
} }
} }
} }
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.download.home;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
/** Helper class to build default or base {@link DownloadManagerUiConfig.Builder} instances. */
public class DownloadManagerUiConfigHelper {
private DownloadManagerUiConfigHelper() {}
/** Creates a {@link DownloadManagerUiConfig.Builder} based on feature flags. */
public static DownloadManagerUiConfig.Builder fromFlags() {
return new DownloadManagerUiConfig.Builder()
.setUseNewDownloadPath(ChromeFeatureList.isEnabled(
ChromeFeatureList.DOWNLOAD_OFFLINE_CONTENT_PROVIDER))
.setSupportsGrouping(ChromeFeatureList.isEnabled(
ChromeFeatureList.CONTENT_INDEXING_DOWNLOAD_HOME));
}
}
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.download.home.glue; package org.chromium.chrome.browser.download.home;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.download.home;
import org.chromium.base.Callback;
import org.chromium.components.offline_items_collection.ContentId;
import org.chromium.components.offline_items_collection.OfflineContentProvider;
import org.chromium.components.offline_items_collection.OfflineItem;
import org.chromium.components.offline_items_collection.ShareCallback;
import org.chromium.components.offline_items_collection.VisualsCallback;
import java.util.ArrayList;
/**
* An interface to use to talk to the legacy download provider path. This is meant to be used until
* the old download path can be removed and we no longer need this bridge/conversion route for
* download home.
*/
public interface LegacyDownloadProvider {
/** Adds {@code observer} to get simulated OfflineContentProvider updates. */
void addObserver(OfflineContentProvider.Observer observer);
/** Removes {@code observer} from getting simulated OfflineContentProvider updates. */
void removeObserver(OfflineContentProvider.Observer observer);
/** To be called when this class can be torn down and will no longer be used. */
void destroy();
// OfflineContentProvider (glue) implementation.
/** @see OfflineContentProvider#openItem(ContentId) */
void openItem(OfflineItem item);
/** @see OfflineContentProvider#removeItem(ContentId) */
void removeItem(OfflineItem item);
/** @see OfflineContentProvider#cancelDownload(ContentId) */
void cancelDownload(OfflineItem item);
/** @see OfflineContentProvider#pauseDownload(ContentId) */
void pauseDownload(OfflineItem item);
/** @see OfflineContentProvider#resumeDownload(ContentId, boolean) */
void resumeDownload(OfflineItem item, boolean hasUserGesture);
/** @see OfflineContentProvider#getItemById(ContentId, Callback) */
void getItemById(ContentId id, Callback<OfflineItem> callback);
/** @see OfflineContentProvider#getAllItems(Callback) */
void getAllItems(Callback<ArrayList<OfflineItem>> callback, boolean offTheRecord);
/** @see OfflineContentProvider#getVisualsForItem(ContentId, VisualsCallback) */
void getVisualsForItem(ContentId id, VisualsCallback callback);
/** @see OfflineContentProvider#getShareInfoForItem(ContentId, ShareCallback) */
void getShareInfoForItem(OfflineItem item, ShareCallback callback);
/** @see OfflineContentProvider#renameItem(ContentId, String, Callback)*/
void renameItem(OfflineItem item, String name, Callback</*RenameResult*/ Integer> callback);
}
\ No newline at end of file
...@@ -2,12 +2,13 @@ ...@@ -2,12 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.download.home.glue; package org.chromium.chrome.browser.download.home;
import android.text.TextUtils; import android.text.TextUtils;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.CollectionUtil; import org.chromium.base.CollectionUtil;
import org.chromium.base.ObserverList;
import org.chromium.base.task.PostTask; import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.download.DownloadInfo; import org.chromium.chrome.browser.download.DownloadInfo;
import org.chromium.chrome.browser.download.DownloadItem; import org.chromium.chrome.browser.download.DownloadItem;
...@@ -18,6 +19,7 @@ import org.chromium.chrome.browser.download.DownloadUtils; ...@@ -18,6 +19,7 @@ import org.chromium.chrome.browser.download.DownloadUtils;
import org.chromium.components.offline_items_collection.ContentId; import org.chromium.components.offline_items_collection.ContentId;
import org.chromium.components.offline_items_collection.LegacyHelpers; import org.chromium.components.offline_items_collection.LegacyHelpers;
import org.chromium.components.offline_items_collection.OfflineContentProvider; import org.chromium.components.offline_items_collection.OfflineContentProvider;
import org.chromium.components.offline_items_collection.OfflineContentProvider.Observer;
import org.chromium.components.offline_items_collection.OfflineItem; import org.chromium.components.offline_items_collection.OfflineItem;
import org.chromium.components.offline_items_collection.OfflineItemShareInfo; import org.chromium.components.offline_items_collection.OfflineItemShareInfo;
import org.chromium.components.offline_items_collection.ShareCallback; import org.chromium.components.offline_items_collection.ShareCallback;
...@@ -33,33 +35,27 @@ import java.util.List; ...@@ -33,33 +35,27 @@ import java.util.List;
* that need to happen in Java before hitting the service and (2) converting from * that need to happen in Java before hitting the service and (2) converting from
* {@link DownloadItem}s to {@link OfflineItem}s. * {@link DownloadItem}s to {@link OfflineItem}s.
*/ */
public class DownloadGlue implements DownloadObserver { class LegacyDownloadProviderImpl implements DownloadObserver, LegacyDownloadProvider {
private final ArrayList < Callback < ArrayList<OfflineItem>>> mRequests = new ArrayList<>(); private final ArrayList<Callback<ArrayList<OfflineItem>>> mRequests = new ArrayList<>();
private final ArrayList < Callback < ArrayList<OfflineItem>>> mOffTheRecordRequests = private final ArrayList<Callback<ArrayList<OfflineItem>>> mOffTheRecordRequests =
new ArrayList<>(); new ArrayList<>();
private final OfflineContentProvider.Observer mDelegate; private final ObserverList<OfflineContentProvider.Observer> mObservers = new ObserverList<>();
/** Creates an instance of a {@link DownloadGlue}. */ /** Creates an instance of a {@link LegacyDownloadProvider}. */
public DownloadGlue(OfflineContentProvider.Observer delegate) { public LegacyDownloadProviderImpl() {
mDelegate = delegate;
DownloadManagerService.getDownloadManagerService().addDownloadObserver(this); DownloadManagerService.getDownloadManagerService().addDownloadObserver(this);
} }
/**
* Called to tear down the connections to singletons. This needs to be called when this class
* is no longer in use.
*/
public void destroy() {
DownloadManagerService.getDownloadManagerService().removeDownloadObserver(this);
}
// DownloadObserver (OfflineContentProvider.Observer glue) implementation. // DownloadObserver (OfflineContentProvider.Observer glue) implementation.
/** @see OfflineContentProvider.Observer#onItemsAdded(ArrayList) */ /** @see OfflineContentProvider.Observer#onItemsAdded(ArrayList) */
@Override @Override
public void onDownloadItemCreated(DownloadItem item) { public void onDownloadItemCreated(DownloadItem item) {
if (!canShowDownloadItem(item)) return; if (!canShowDownloadItem(item)) return;
mDelegate.onItemsAdded(CollectionUtil.newArrayList(DownloadItem.createOfflineItem(item))); for (OfflineContentProvider.Observer observer : mObservers) {
observer.onItemsAdded(
CollectionUtil.newArrayList(DownloadItem.createOfflineItem(item)));
}
} }
/** @see OfflineContentProvider.Observer#onItemUpdated(OfflineItem) */ /** @see OfflineContentProvider.Observer#onItemUpdated(OfflineItem) */
...@@ -68,7 +64,9 @@ public class DownloadGlue implements DownloadObserver { ...@@ -68,7 +64,9 @@ public class DownloadGlue implements DownloadObserver {
if (!canShowDownloadItem(item)) return; if (!canShowDownloadItem(item)) return;
OfflineItem offlineItem = DownloadItem.createOfflineItem(item); OfflineItem offlineItem = DownloadItem.createOfflineItem(item);
mDelegate.onItemUpdated(offlineItem, null); for (OfflineContentProvider.Observer observer : mObservers) {
observer.onItemUpdated(offlineItem, null);
}
if (offlineItem.externallyRemoved) { if (offlineItem.externallyRemoved) {
PostTask.postTask(UiThreadTaskTraits.DEFAULT, () -> removeItem(offlineItem)); PostTask.postTask(UiThreadTaskTraits.DEFAULT, () -> removeItem(offlineItem));
...@@ -78,12 +76,14 @@ public class DownloadGlue implements DownloadObserver { ...@@ -78,12 +76,14 @@ public class DownloadGlue implements DownloadObserver {
/** @see OfflineContentProvider.Observer#onItemRemoved(ContentId) */ /** @see OfflineContentProvider.Observer#onItemRemoved(ContentId) */
@Override @Override
public void onDownloadItemRemoved(String guid, boolean isOffTheRecord) { public void onDownloadItemRemoved(String guid, boolean isOffTheRecord) {
mDelegate.onItemRemoved(LegacyHelpers.buildLegacyContentId(false, guid)); for (OfflineContentProvider.Observer observer : mObservers) {
observer.onItemRemoved(LegacyHelpers.buildLegacyContentId(false, guid));
}
} }
@Override @Override
public void onAllDownloadsRetrieved(List<DownloadItem> items, boolean offTheRecord) { public void onAllDownloadsRetrieved(List<DownloadItem> items, boolean offTheRecord) {
List < Callback < ArrayList<OfflineItem>>> list = List<Callback<ArrayList<OfflineItem>>> list =
offTheRecord ? mOffTheRecordRequests : mRequests; offTheRecord ? mOffTheRecordRequests : mRequests;
if (list.isEmpty()) return; if (list.isEmpty()) return;
...@@ -94,7 +94,7 @@ public class DownloadGlue implements DownloadObserver { ...@@ -94,7 +94,7 @@ public class DownloadGlue implements DownloadObserver {
} }
// Copy the list and clear the original in case the callbacks are reentrant. // Copy the list and clear the original in case the callbacks are reentrant.
List < Callback < ArrayList<OfflineItem>>> listCopy = new ArrayList<>(list); List<Callback<ArrayList<OfflineItem>>> listCopy = new ArrayList<>(list);
list.clear(); list.clear();
for (Callback<ArrayList<OfflineItem>> callback : listCopy) callback.onResult(offlineItems); for (Callback<ArrayList<OfflineItem>> callback : listCopy) callback.onResult(offlineItems);
...@@ -103,34 +103,49 @@ public class DownloadGlue implements DownloadObserver { ...@@ -103,34 +103,49 @@ public class DownloadGlue implements DownloadObserver {
@Override @Override
public void onAddOrReplaceDownloadSharedPreferenceEntry(ContentId id) {} public void onAddOrReplaceDownloadSharedPreferenceEntry(ContentId id) {}
// OfflineContentProvider glue implementation. // LegacyDownloadProvider implementation.
/** @see OfflineContentProvider#openItem(ContentId) */ @Override
public void addObserver(Observer observer) {
mObservers.addObserver(observer);
}
@Override
public void removeObserver(Observer observer) {
mObservers.removeObserver(observer);
}
@Override
public void destroy() {
DownloadManagerService.getDownloadManagerService().removeDownloadObserver(this);
}
@Override
public void openItem(OfflineItem item) { public void openItem(OfflineItem item) {
// TODO(shaktisahu): May be pass metrics as a param. // TODO(shaktisahu): May be pass metrics as a param.
DownloadManagerService.getDownloadManagerService().openDownload( DownloadManagerService.getDownloadManagerService().openDownload(
item.id, item.isOffTheRecord, DownloadOpenSource.DOWNLOAD_HOME); item.id, item.isOffTheRecord, DownloadOpenSource.DOWNLOAD_HOME);
} }
/** @see OfflineContentProvider#removeItem(ContentId) */ @Override
public void removeItem(OfflineItem item) { public void removeItem(OfflineItem item) {
DownloadManagerService.getDownloadManagerService().removeDownload( DownloadManagerService.getDownloadManagerService().removeDownload(
item.id.id, item.isOffTheRecord, item.externallyRemoved); item.id.id, item.isOffTheRecord, item.externallyRemoved);
FileDeletionQueue.get().delete(item.filePath); FileDeletionQueue.get().delete(item.filePath);
} }
/** @see OfflineContentProvider#cancelDownload(ContentId) */ @Override
public void cancelDownload(OfflineItem item) { public void cancelDownload(OfflineItem item) {
DownloadManagerService.getDownloadManagerService().cancelDownload( DownloadManagerService.getDownloadManagerService().cancelDownload(
item.id, item.isOffTheRecord); item.id, item.isOffTheRecord);
} }
/** @see OfflineContentProvider#pauseDownload(ContentId) */ @Override
public void pauseDownload(OfflineItem item) { public void pauseDownload(OfflineItem item) {
DownloadManagerService.getDownloadManagerService().pauseDownload( DownloadManagerService.getDownloadManagerService().pauseDownload(
item.id, item.isOffTheRecord); item.id, item.isOffTheRecord);
} }
/** @see OfflineContentProvider#resumeDownload(ContentId, boolean) */ @Override
public void resumeDownload(OfflineItem item, boolean hasUserGesture) { public void resumeDownload(OfflineItem item, boolean hasUserGesture) {
DownloadInfo.Builder builder = DownloadInfo.builderFromOfflineItem(item, null); DownloadInfo.Builder builder = DownloadInfo.builderFromOfflineItem(item, null);
...@@ -150,15 +165,15 @@ public class DownloadGlue implements DownloadObserver { ...@@ -150,15 +165,15 @@ public class DownloadGlue implements DownloadObserver {
} }
} }
/** @see OfflineContentProvider#getItemById(ContentId, Callback) */ @Override
public void getItemById(ContentId id, Callback<OfflineItem> callback) { public void getItemById(ContentId id, Callback<OfflineItem> callback) {
assert false : "Not supported."; assert false : "Not supported.";
PostTask.postTask(UiThreadTaskTraits.DEFAULT, () -> callback.onResult(null)); PostTask.postTask(UiThreadTaskTraits.DEFAULT, () -> callback.onResult(null));
} }
/** @see OfflineContentProvider#getAllItems(Callback) */ @Override
public void getAllItems(Callback<ArrayList<OfflineItem>> callback, boolean offTheRecord) { public void getAllItems(Callback<ArrayList<OfflineItem>> callback, boolean offTheRecord) {
List < Callback < ArrayList<OfflineItem>>> list = List<Callback<ArrayList<OfflineItem>>> list =
offTheRecord ? mOffTheRecordRequests : mRequests; offTheRecord ? mOffTheRecordRequests : mRequests;
list.add(callback); list.add(callback);
...@@ -166,12 +181,12 @@ public class DownloadGlue implements DownloadObserver { ...@@ -166,12 +181,12 @@ public class DownloadGlue implements DownloadObserver {
DownloadManagerService.getDownloadManagerService().getAllDownloads(offTheRecord); DownloadManagerService.getDownloadManagerService().getAllDownloads(offTheRecord);
} }
/** @see OfflineContentProvider#getVisualsForItem(ContentId, VisualsCallback) */ @Override
public void getVisualsForItem(ContentId id, VisualsCallback callback) { public void getVisualsForItem(ContentId id, VisualsCallback callback) {
PostTask.postTask(UiThreadTaskTraits.DEFAULT, () -> callback.onVisualsAvailable(id, null)); PostTask.postTask(UiThreadTaskTraits.DEFAULT, () -> callback.onVisualsAvailable(id, null));
} }
/** @see OfflineContentProvider#getShareInfoForItem(ContentId, ShareCallback) */ @Override
public void getShareInfoForItem(OfflineItem item, ShareCallback callback) { public void getShareInfoForItem(OfflineItem item, ShareCallback callback) {
OfflineItemShareInfo info = new OfflineItemShareInfo(); OfflineItemShareInfo info = new OfflineItemShareInfo();
info.uri = DownloadUtils.getUriForItem(item.filePath); info.uri = DownloadUtils.getUriForItem(item.filePath);
...@@ -179,7 +194,7 @@ public class DownloadGlue implements DownloadObserver { ...@@ -179,7 +194,7 @@ public class DownloadGlue implements DownloadObserver {
UiThreadTaskTraits.DEFAULT, () -> callback.onShareInfoAvailable(item.id, info)); UiThreadTaskTraits.DEFAULT, () -> callback.onShareInfoAvailable(item.id, info));
} }
/** @see OfflineContentProvider#renameItem(ContentId, String, Callback)*/ @Override
public void renameItem( public void renameItem(
OfflineItem item, String name, Callback</*RenameResult*/ Integer> callback) { OfflineItem item, String name, Callback</*RenameResult*/ Integer> callback) {
DownloadManagerService.getDownloadManagerService().renameDownload( DownloadManagerService.getDownloadManagerService().renameDownload(
......
...@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.download.home.glue; ...@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.download.home.glue;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.ObserverList; import org.chromium.base.ObserverList;
import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig; import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig;
import org.chromium.chrome.browser.download.home.LegacyDownloadProvider;
import org.chromium.chrome.browser.thumbnail.generator.ThumbnailProvider; import org.chromium.chrome.browser.thumbnail.generator.ThumbnailProvider;
import org.chromium.components.offline_items_collection.ContentId; import org.chromium.components.offline_items_collection.ContentId;
import org.chromium.components.offline_items_collection.LaunchLocation; import org.chromium.components.offline_items_collection.LaunchLocation;
...@@ -33,19 +34,20 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -33,19 +34,20 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
private final boolean mUseNewDownloadPathThumbnails; private final boolean mUseNewDownloadPathThumbnails;
private final DownloadGlue mDownloadProvider; private final LegacyDownloadProvider mLegacyProvider;
private Query mOutstandingQuery; private Query mOutstandingQuery;
/** Creates an {@link OfflineContentProviderGlue} instance. */ /** Creates an {@link OfflineContentProviderGlue} instance. */
public OfflineContentProviderGlue( public OfflineContentProviderGlue(OfflineContentProvider provider,
OfflineContentProvider provider, DownloadManagerUiConfig config) { LegacyDownloadProvider legacyProvider, DownloadManagerUiConfig config) {
mProvider = provider; mProvider = provider;
mIncludeOffTheRecord = config.isOffTheRecord; mIncludeOffTheRecord = config.isOffTheRecord;
mDownloadProvider = config.useNewDownloadPath ? null : new DownloadGlue(this); mLegacyProvider = legacyProvider;
mUseNewDownloadPathThumbnails = config.useNewDownloadPathThumbnails; mUseNewDownloadPathThumbnails = config.useNewDownloadPathThumbnails;
mProvider.addObserver(this); mProvider.addObserver(this);
if (mLegacyProvider != null) mLegacyProvider.addObserver(this);
} }
/** /**
...@@ -53,7 +55,10 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -53,7 +55,10 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
* is no longer in use. * is no longer in use.
*/ */
public void destroy() { public void destroy() {
if (mDownloadProvider != null) mDownloadProvider.destroy(); if (mLegacyProvider != null) {
mLegacyProvider.removeObserver(this);
mLegacyProvider.destroy();
}
mProvider.removeObserver(this); mProvider.removeObserver(this);
} }
...@@ -62,8 +67,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -62,8 +67,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
// easy use without this layer (we would only pass ID through). // easy use without this layer (we would only pass ID through).
/** @see OfflineContentProvider#openItem(ContentId) */ /** @see OfflineContentProvider#openItem(ContentId) */
public void openItem(OfflineItem item) { public void openItem(OfflineItem item) {
if (mDownloadProvider != null && LegacyHelpers.isLegacyDownload(item.id)) { if (mLegacyProvider != null && LegacyHelpers.isLegacyDownload(item.id)) {
mDownloadProvider.openItem(item); mLegacyProvider.openItem(item);
} else { } else {
mProvider.openItem(LaunchLocation.DOWNLOAD_HOME, item.id); mProvider.openItem(LaunchLocation.DOWNLOAD_HOME, item.id);
} }
...@@ -71,8 +76,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -71,8 +76,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
/** @see OfflineContentProvider#removeItem(ContentId) */ /** @see OfflineContentProvider#removeItem(ContentId) */
public void removeItem(OfflineItem item) { public void removeItem(OfflineItem item) {
if (mDownloadProvider != null && LegacyHelpers.isLegacyDownload(item.id)) { if (mLegacyProvider != null && LegacyHelpers.isLegacyDownload(item.id)) {
mDownloadProvider.removeItem(item); mLegacyProvider.removeItem(item);
} else { } else {
mProvider.removeItem(item.id); mProvider.removeItem(item.id);
} }
...@@ -80,8 +85,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -80,8 +85,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
/** @see OfflineContentProvider#cancelDownload(ContentId) */ /** @see OfflineContentProvider#cancelDownload(ContentId) */
public void cancelDownload(OfflineItem item) { public void cancelDownload(OfflineItem item) {
if (mDownloadProvider != null && LegacyHelpers.isLegacyDownload(item.id)) { if (mLegacyProvider != null && LegacyHelpers.isLegacyDownload(item.id)) {
mDownloadProvider.cancelDownload(item); mLegacyProvider.cancelDownload(item);
} else { } else {
mProvider.cancelDownload(item.id); mProvider.cancelDownload(item.id);
} }
...@@ -89,8 +94,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -89,8 +94,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
/** @see OfflineContentProvider#pauseDownload(ContentId) */ /** @see OfflineContentProvider#pauseDownload(ContentId) */
public void pauseDownload(OfflineItem item) { public void pauseDownload(OfflineItem item) {
if (mDownloadProvider != null && LegacyHelpers.isLegacyDownload(item.id)) { if (mLegacyProvider != null && LegacyHelpers.isLegacyDownload(item.id)) {
mDownloadProvider.pauseDownload(item); mLegacyProvider.pauseDownload(item);
} else { } else {
mProvider.pauseDownload(item.id); mProvider.pauseDownload(item.id);
} }
...@@ -98,8 +103,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -98,8 +103,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
/** @see OfflineContentProvider#resumeDownload(ContentId) */ /** @see OfflineContentProvider#resumeDownload(ContentId) */
public void resumeDownload(OfflineItem item, boolean hasUserGesture) { public void resumeDownload(OfflineItem item, boolean hasUserGesture) {
if (mDownloadProvider != null && LegacyHelpers.isLegacyDownload(item.id)) { if (mLegacyProvider != null && LegacyHelpers.isLegacyDownload(item.id)) {
mDownloadProvider.resumeDownload(item, hasUserGesture); mLegacyProvider.resumeDownload(item, hasUserGesture);
} else { } else {
mProvider.resumeDownload(item.id, hasUserGesture); mProvider.resumeDownload(item.id, hasUserGesture);
} }
...@@ -107,8 +112,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -107,8 +112,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
/** @see OfflineContentProvider#getItemById(ContentId, Callback) */ /** @see OfflineContentProvider#getItemById(ContentId, Callback) */
public void getItemById(ContentId id, Callback<OfflineItem> callback) { public void getItemById(ContentId id, Callback<OfflineItem> callback) {
if (mDownloadProvider != null && LegacyHelpers.isLegacyDownload(id)) { if (mLegacyProvider != null && LegacyHelpers.isLegacyDownload(id)) {
mDownloadProvider.getItemById(id, callback); mLegacyProvider.getItemById(id, callback);
} else { } else {
mProvider.getItemById(id, callback); mProvider.getItemById(id, callback);
} }
...@@ -142,8 +147,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -142,8 +147,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
/** @see OfflineContentProvider#getShareInfoForItem(ContentId, ShareCallback) */ /** @see OfflineContentProvider#getShareInfoForItem(ContentId, ShareCallback) */
public void getShareInfoForItem(OfflineItem item, ShareCallback callback) { public void getShareInfoForItem(OfflineItem item, ShareCallback callback) {
if (mDownloadProvider != null && LegacyHelpers.isLegacyDownload(item.id)) { if (mLegacyProvider != null && LegacyHelpers.isLegacyDownload(item.id)) {
mDownloadProvider.getShareInfoForItem(item, callback); mLegacyProvider.getShareInfoForItem(item, callback);
} else { } else {
mProvider.getShareInfoForItem(item.id, callback); mProvider.getShareInfoForItem(item.id, callback);
} }
...@@ -152,8 +157,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -152,8 +157,8 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
/** @see OfflineContentProvider#renameItem(ContentId, String, Callback) */ /** @see OfflineContentProvider#renameItem(ContentId, String, Callback) */
public void renameItem( public void renameItem(
OfflineItem item, String targetName, Callback</*RenameResult*/ Integer> callback) { OfflineItem item, String targetName, Callback</*RenameResult*/ Integer> callback) {
if (mDownloadProvider != null && LegacyHelpers.isLegacyDownload(item.id)) { if (mLegacyProvider != null && LegacyHelpers.isLegacyDownload(item.id)) {
mDownloadProvider.renameItem(item, targetName, callback); mLegacyProvider.renameItem(item, targetName, callback);
} else { } else {
mProvider.renameItem(item.id, targetName, callback); mProvider.renameItem(item.id, targetName, callback);
} }
...@@ -205,16 +210,15 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ ...@@ -205,16 +210,15 @@ public class OfflineContentProviderGlue implements OfflineContentProvider.Observ
public Query() { public Query() {
mDownloadProviderOffTheRecordResponded = !mIncludeOffTheRecord; mDownloadProviderOffTheRecordResponded = !mIncludeOffTheRecord;
if (mDownloadProvider == null) { if (mLegacyProvider == null) {
mDownloadProviderResponded = true; mDownloadProviderResponded = true;
mDownloadProviderOffTheRecordResponded = true; mDownloadProviderOffTheRecordResponded = true;
} else { } else {
if (mIncludeOffTheRecord) { if (mIncludeOffTheRecord) {
mDownloadProvider.getAllItems( mLegacyProvider.getAllItems(
items -> addOffTheRecordDownloads(items), true /* offTheRecord */); items -> addOffTheRecordDownloads(items), true /* offTheRecord */);
} }
mDownloadProvider.getAllItems( mLegacyProvider.getAllItems(items -> addDownloads(items), false /* offTheRecord */);
items -> addDownloads(items), false /* offTheRecord */);
} }
mProvider.getAllItems(items -> addOfflineItems(items)); mProvider.getAllItems(items -> addOfflineItems(items));
......
...@@ -17,6 +17,7 @@ import org.chromium.base.Log; ...@@ -17,6 +17,7 @@ import org.chromium.base.Log;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig; import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig;
import org.chromium.chrome.browser.download.home.FaviconProvider; import org.chromium.chrome.browser.download.home.FaviconProvider;
import org.chromium.chrome.browser.download.home.LegacyDownloadProvider;
import org.chromium.chrome.browser.download.home.StableIds; import org.chromium.chrome.browser.download.home.StableIds;
import org.chromium.chrome.browser.download.home.empty.EmptyCoordinator; import org.chromium.chrome.browser.download.home.empty.EmptyCoordinator;
import org.chromium.chrome.browser.download.home.filter.FilterCoordinator; import org.chromium.chrome.browser.download.home.filter.FilterCoordinator;
...@@ -92,6 +93,7 @@ public class DateOrderedListCoordinator implements ToolbarCoordinator.ToolbarLis ...@@ -92,6 +93,7 @@ public class DateOrderedListCoordinator implements ToolbarCoordinator.ToolbarLis
* @param context The {@link Context} to use to build the views. * @param context The {@link Context} to use to build the views.
* @param config The {@link DownloadManagerUiConfig} to provide UI configuration params. * @param config The {@link DownloadManagerUiConfig} to provide UI configuration params.
* @param provider The {@link OfflineContentProvider} to visually represent. * @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 deleteController A class to manage whether or not items can be deleted.
* @param filterObserver A {@link FilterCoordinator.Observer} that should be notified of * @param filterObserver A {@link FilterCoordinator.Observer} that should be notified of
* filter changes. This is meant to be used for external components that * filter changes. This is meant to be used for external components that
...@@ -99,8 +101,8 @@ public class DateOrderedListCoordinator implements ToolbarCoordinator.ToolbarLis ...@@ -99,8 +101,8 @@ public class DateOrderedListCoordinator implements ToolbarCoordinator.ToolbarLis
* @param dateOrderedListObserver A {@link DateOrderedListObserver}. * @param dateOrderedListObserver A {@link DateOrderedListObserver}.
*/ */
public DateOrderedListCoordinator(Context context, DownloadManagerUiConfig config, public DateOrderedListCoordinator(Context context, DownloadManagerUiConfig config,
OfflineContentProvider provider, DeleteController deleteController, OfflineContentProvider provider, LegacyDownloadProvider legacyProvider,
SelectionDelegate<ListItem> selectionDelegate, DeleteController deleteController, SelectionDelegate<ListItem> selectionDelegate,
FilterCoordinator.Observer filterObserver, FilterCoordinator.Observer filterObserver,
DateOrderedListObserver dateOrderedListObserver, ModalDialogManager modalDialogManager, DateOrderedListObserver dateOrderedListObserver, ModalDialogManager modalDialogManager,
FaviconProvider faviconProvider) { FaviconProvider faviconProvider) {
...@@ -112,9 +114,9 @@ public class DateOrderedListCoordinator implements ToolbarCoordinator.ToolbarLis ...@@ -112,9 +114,9 @@ public class DateOrderedListCoordinator implements ToolbarCoordinator.ToolbarLis
new DateOrderedListView(context, config, decoratedModel, dateOrderedListObserver); new DateOrderedListView(context, config, decoratedModel, dateOrderedListObserver);
mRenameDialogManager = new RenameDialogManager(context, modalDialogManager); mRenameDialogManager = new RenameDialogManager(context, modalDialogManager);
mMediator = new DateOrderedListMediator(provider, faviconProvider, this::startShareIntent, mMediator = new DateOrderedListMediator(provider, legacyProvider, faviconProvider,
deleteController, this::startRename, selectionDelegate, config, this::startShareIntent, deleteController, this::startRename, selectionDelegate,
dateOrderedListObserver, model); config, dateOrderedListObserver, model);
mEmptyCoordinator = new EmptyCoordinator(context, mMediator.getEmptySource()); mEmptyCoordinator = new EmptyCoordinator(context, mMediator.getEmptySource());
......
...@@ -17,6 +17,7 @@ import org.chromium.chrome.browser.GlobalDiscardableReferencePool; ...@@ -17,6 +17,7 @@ import org.chromium.chrome.browser.GlobalDiscardableReferencePool;
import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig; import org.chromium.chrome.browser.download.home.DownloadManagerUiConfig;
import org.chromium.chrome.browser.download.home.FaviconProvider; import org.chromium.chrome.browser.download.home.FaviconProvider;
import org.chromium.chrome.browser.download.home.JustNowProvider; import org.chromium.chrome.browser.download.home.JustNowProvider;
import org.chromium.chrome.browser.download.home.LegacyDownloadProvider;
import org.chromium.chrome.browser.download.home.OfflineItemSource; import org.chromium.chrome.browser.download.home.OfflineItemSource;
import org.chromium.chrome.browser.download.home.filter.DeleteUndoOfflineItemFilter; import org.chromium.chrome.browser.download.home.filter.DeleteUndoOfflineItemFilter;
import org.chromium.chrome.browser.download.home.filter.Filters.FilterType; import org.chromium.chrome.browser.download.home.filter.Filters.FilterType;
...@@ -145,6 +146,7 @@ class DateOrderedListMediator { ...@@ -145,6 +146,7 @@ class DateOrderedListMediator {
* Creates an instance of a DateOrderedListMediator that will push {@code provider} into * Creates an instance of a DateOrderedListMediator that will push {@code provider} into
* {@code model}. * {@code model}.
* @param provider The {@link OfflineContentProvider} to visually represent. * @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 faviconProvider The {@link FaviconProvider} to handle favicon requests.
* @param deleteController A class to manage whether or not items can be deleted. * @param deleteController A class to manage whether or not items can be deleted.
* @param shareController A class responsible for sharing downloaded item {@link * @param shareController A class responsible for sharing downloaded item {@link
...@@ -154,7 +156,8 @@ class DateOrderedListMediator { ...@@ -154,7 +156,8 @@ class DateOrderedListMediator {
* @param dateOrderedListObserver An observer of the list and recycler view. * @param dateOrderedListObserver An observer of the list and recycler view.
* @param model The {@link ListItemModel} to push {@code provider} into. * @param model The {@link ListItemModel} to push {@code provider} into.
*/ */
public DateOrderedListMediator(OfflineContentProvider provider, FaviconProvider faviconProvider, public DateOrderedListMediator(OfflineContentProvider provider,
LegacyDownloadProvider legacyProvider, FaviconProvider faviconProvider,
ShareController shareController, DeleteController deleteController, ShareController shareController, DeleteController deleteController,
RenameController renameController, SelectionDelegate<ListItem> selectionDelegate, RenameController renameController, SelectionDelegate<ListItem> selectionDelegate,
DownloadManagerUiConfig config, DateOrderedListObserver dateOrderedListObserver, DownloadManagerUiConfig config, DateOrderedListObserver dateOrderedListObserver,
...@@ -172,7 +175,7 @@ class DateOrderedListMediator { ...@@ -172,7 +175,7 @@ class DateOrderedListMediator {
// TODO(shaktisahu): Look into replacing mutator chain by // TODO(shaktisahu): Look into replacing mutator chain by
// sorter -> label adder -> property setter -> paginator -> model // sorter -> label adder -> property setter -> paginator -> model
mProvider = new OfflineContentProviderGlue(provider, config); mProvider = new OfflineContentProviderGlue(provider, legacyProvider, config);
mFaviconProvider = faviconProvider; mFaviconProvider = faviconProvider;
mShareController = shareController; mShareController = shareController;
mModel = model; mModel = model;
......
...@@ -134,7 +134,7 @@ public class DownloadActivityV2Test extends DummyUiActivityTestCase { ...@@ -134,7 +134,7 @@ public class DownloadActivityV2Test extends DummyUiActivityTestCase {
private void setUpUi() { private void setUpUi() {
FilterCoordinator.setPrefetchUserSettingValueForTesting(true); FilterCoordinator.setPrefetchUserSettingValueForTesting(true);
DownloadManagerUiConfig config = new DownloadManagerUiConfig.Builder() DownloadManagerUiConfig config = DownloadManagerUiConfigHelper.fromFlags()
.setIsOffTheRecord(false) .setIsOffTheRecord(false)
.setIsSeparateActivity(true) .setIsSeparateActivity(true)
.setUseNewDownloadPath(true) .setUseNewDownloadPath(true)
...@@ -148,7 +148,8 @@ public class DownloadActivityV2Test extends DummyUiActivityTestCase { ...@@ -148,7 +148,8 @@ public class DownloadActivityV2Test extends DummyUiActivityTestCase {
FaviconProvider faviconProvider = (url, faviconSizePx, callback) -> {}; FaviconProvider faviconProvider = (url, faviconSizePx, callback) -> {};
mDownloadCoordinator = new DownloadManagerCoordinatorImpl(getActivity(), config, mDownloadCoordinator = new DownloadManagerCoordinatorImpl(getActivity(), config,
mSnackbarManager, mModalDialogManager, mTracker, faviconProvider); mSnackbarManager, mModalDialogManager, mTracker, faviconProvider,
/* LegacyDownloadProvider */ null);
getActivity().setContentView(mDownloadCoordinator.getView()); getActivity().setContentView(mDownloadCoordinator.getView());
mDownloadCoordinator.updateForUrl(UrlConstants.DOWNLOADS_URL); mDownloadCoordinator.updateForUrl(UrlConstants.DOWNLOADS_URL);
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.download.home.glue; package org.chromium.chrome.browser.download.home;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
......
...@@ -29,7 +29,6 @@ import org.chromium.chrome.browser.download.home.list.ListItem.OfflineItemListIt ...@@ -29,7 +29,6 @@ import org.chromium.chrome.browser.download.home.list.ListItem.OfflineItemListIt
import org.chromium.chrome.browser.download.home.list.ListItem.SectionHeaderListItem; import org.chromium.chrome.browser.download.home.list.ListItem.SectionHeaderListItem;
import org.chromium.chrome.browser.download.home.list.mutator.DateOrderedListMutator; import org.chromium.chrome.browser.download.home.list.mutator.DateOrderedListMutator;
import org.chromium.chrome.browser.download.home.list.mutator.ListMutationController; import org.chromium.chrome.browser.download.home.list.mutator.ListMutationController;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.components.offline_items_collection.OfflineItem; import org.chromium.components.offline_items_collection.OfflineItem;
import org.chromium.components.offline_items_collection.OfflineItemFilter; import org.chromium.components.offline_items_collection.OfflineItemFilter;
import org.chromium.components.offline_items_collection.OfflineItemState; import org.chromium.components.offline_items_collection.OfflineItemState;
...@@ -38,8 +37,6 @@ import org.chromium.ui.modelutil.ListObservable.ListObserver; ...@@ -38,8 +37,6 @@ import org.chromium.ui.modelutil.ListObservable.ListObserver;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/** Unit tests for the DateOrderedListMutator class. */ /** Unit tests for the DateOrderedListMutator class. */
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
...@@ -59,10 +56,6 @@ public class DateOrderedListMutatorTest { ...@@ -59,10 +56,6 @@ public class DateOrderedListMutatorTest {
@Before @Before
public void setUp() { public void setUp() {
mModel = new ListItemModel(); mModel = new ListItemModel();
Map<String, Boolean> testFeatures = new HashMap<>();
testFeatures.put(ChromeFeatureList.DOWNLOAD_OFFLINE_CONTENT_PROVIDER, true);
testFeatures.put(ChromeFeatureList.CONTENT_INDEXING_DOWNLOAD_HOME, false);
ChromeFeatureList.setTestFeatures(testFeatures);
} }
@After @After
...@@ -879,7 +872,10 @@ public class DateOrderedListMutatorTest { ...@@ -879,7 +872,10 @@ public class DateOrderedListMutatorTest {
} }
private DateOrderedListMutator createMutatorWithoutJustNowProvider() { private DateOrderedListMutator createMutatorWithoutJustNowProvider() {
DownloadManagerUiConfig config = new DownloadManagerUiConfig.Builder().build(); DownloadManagerUiConfig config = new DownloadManagerUiConfig.Builder()
.setUseNewDownloadPath(true)
.setSupportsGrouping(false)
.build();
JustNowProvider justNowProvider = new JustNowProvider(config) { JustNowProvider justNowProvider = new JustNowProvider(config) {
@Override @Override
public boolean isJustNowItem(OfflineItem item) { public boolean isJustNowItem(OfflineItem item) {
...@@ -893,7 +889,10 @@ public class DateOrderedListMutatorTest { ...@@ -893,7 +889,10 @@ public class DateOrderedListMutatorTest {
} }
private DateOrderedListMutator createMutatorWithJustNowProvider() { private DateOrderedListMutator createMutatorWithJustNowProvider() {
DownloadManagerUiConfig config = new DownloadManagerUiConfig.Builder().build(); DownloadManagerUiConfig config = new DownloadManagerUiConfig.Builder()
.setUseNewDownloadPath(true)
.setSupportsGrouping(false)
.build();
JustNowProvider justNowProvider = new JustNowProvider(config); JustNowProvider justNowProvider = new JustNowProvider(config);
DateOrderedListMutator mutator = DateOrderedListMutator mutator =
new DateOrderedListMutator(mSource, mModel, justNowProvider); new DateOrderedListMutator(mSource, mModel, justNowProvider);
......
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