| Index: chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java
|
| index 6fc3b473105d3c01c1d252af630cd7cf8375033c..8ba30bf89289f309ae92f65239961881700fae48 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java
|
| @@ -23,12 +23,14 @@ import android.util.Pair;
|
|
|
| import org.chromium.base.ContextUtils;
|
| import org.chromium.base.Log;
|
| +import org.chromium.base.ObserverList;
|
| import org.chromium.base.ThreadUtils;
|
| import org.chromium.base.VisibleForTesting;
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.annotations.SuppressFBWarnings;
|
| import org.chromium.base.metrics.RecordHistogram;
|
| import org.chromium.chrome.R;
|
| +import org.chromium.chrome.browser.download.ui.BackendProvider;
|
| import org.chromium.chrome.browser.download.ui.DownloadHistoryAdapter;
|
| import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl;
|
| import org.chromium.net.ConnectionType;
|
| @@ -59,7 +61,8 @@ public class DownloadManagerService extends BroadcastReceiver implements
|
| DownloadController.DownloadNotificationService,
|
| NetworkChangeNotifierAutoDetect.Observer,
|
| DownloadManagerDelegate.DownloadQueryCallback,
|
| - DownloadServiceDelegate {
|
| + DownloadServiceDelegate,
|
| + BackendProvider.DownloadDelegate {
|
| // Download status.
|
| public static final int DOWNLOAD_STATUS_IN_PROGRESS = 0;
|
| public static final int DOWNLOAD_STATUS_COMPLETE = 1;
|
| @@ -121,7 +124,7 @@ public class DownloadManagerService extends BroadcastReceiver implements
|
| @VisibleForTesting protected final List<String> mAutoResumableDownloadIds =
|
| new ArrayList<String>();
|
| private final List<DownloadUmaStatsEntry> mUmaEntries = new ArrayList<DownloadUmaStatsEntry>();
|
| - private final List<DownloadHistoryAdapter> mHistoryAdapters = new ArrayList<>();
|
| + private final ObserverList<DownloadHistoryAdapter> mHistoryAdapters = new ObserverList<>();
|
|
|
| private OMADownloadHandler mOMADownloadHandler;
|
| private DownloadSnackbarController mDownloadSnackbarController;
|
| @@ -1489,23 +1492,25 @@ public class DownloadManagerService extends BroadcastReceiver implements
|
| }
|
|
|
| /** Adds a new DownloadHistoryAdapter to the list. */
|
| + @Override
|
| public void addDownloadHistoryAdapter(DownloadHistoryAdapter adapter) {
|
| - mHistoryAdapters.add(adapter);
|
| + mHistoryAdapters.addObserver(adapter);
|
| }
|
|
|
| /** Removes a DownloadHistoryAdapter from the list. */
|
| + @Override
|
| public void removeDownloadHistoryAdapter(DownloadHistoryAdapter adapter) {
|
| - mHistoryAdapters.remove(adapter);
|
| + mHistoryAdapters.removeObserver(adapter);
|
| }
|
|
|
| /**
|
| - * Begins sending back information about all entries in the user's DownloadHistory, with each
|
| - * individual DownloadItem's data passed back via
|
| - * {@link #onDownloadInfoAdded(String, String, String, String, long, long)}.
|
| + * Begins sending back information about all entries in the user's DownloadHistory via
|
| + * {@link #onAllDownloadsRetrieved}. If the DownloadHistory is not initialized yet, the
|
| + * callback will be delayed.
|
| *
|
| - * This call will be delayed if the native side has not yet been initialized.
|
| * @param isOffTheRecord Whether or not to get downloads for the off the record profile.
|
| */
|
| + @Override
|
| public void getAllDownloads(boolean isOffTheRecord) {
|
| nativeGetAllDownloads(getNativeDownloadManagerService(), isOffTheRecord);
|
| }
|
|
|