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 2bf826b235235a682baeea548f84955fc15f6098..d8838535e926a807c530e94be7df1772ff3d49ba 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 |
@@ -29,6 +29,7 @@ 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.DownloadHistoryAdapter; |
import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl; |
import org.chromium.net.ConnectionType; |
import org.chromium.net.NetworkChangeNotifierAutoDetect; |
@@ -123,6 +124,8 @@ public class DownloadManagerService extends BroadcastReceiver implements |
@VisibleForTesting protected final Vector<String> mAutoResumableDownloadIds = |
new Vector<String>(); |
private final List<DownloadUmaStatsEntry> mUmaEntries = new ArrayList<DownloadUmaStatsEntry>(); |
+ private final DownloadHistoryAdapter mDownloadHistoryAdapter; |
+ |
private OMADownloadHandler mOMADownloadHandler; |
private DownloadSnackbarController mDownloadSnackbarController; |
private long mNativeDownloadManagerService; |
@@ -232,6 +235,7 @@ public class DownloadManagerService extends BroadcastReceiver implements |
mOMADownloadHandler = new OMADownloadHandler(context); |
mDownloadSnackbarController = new DownloadSnackbarController(context); |
mDownloadManagerDelegate = new DownloadManagerDelegate(mContext); |
+ mDownloadHistoryAdapter = new DownloadHistoryAdapter(); |
if (mSharedPrefs.contains(DEPRECATED_DOWNLOAD_NOTIFICATION_IDS)) { |
mSharedPrefs.edit().remove(DEPRECATED_DOWNLOAD_NOTIFICATION_IDS).apply(); |
} |
@@ -1449,6 +1453,44 @@ public class DownloadManagerService extends BroadcastReceiver implements |
} |
} |
+ /** |
+ * Returns the Adapter that provides a view into the download history. |
+ */ |
+ public DownloadHistoryAdapter getDownloadHistoryAdapter() { |
+ return mDownloadHistoryAdapter; |
+ } |
+ |
+ /** |
+ * 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)}. |
+ * |
+ * This call will be delayed if the native side has not yet been initialized. |
+ */ |
+ public void getAllDownloads() { |
+ mDownloadHistoryAdapter.clear(); |
+ nativeGetAllDownloads(getNativeDownloadManagerService()); |
+ } |
+ |
+ @CalledByNative |
+ private DownloadItem createDownloadItem(String guid, String filename, String url, |
+ String mimeType, long startTimestamp, long totalBytes) { |
+ DownloadInfo.Builder builder = new DownloadInfo.Builder() |
+ .setDownloadGuid(guid) |
+ .setFileName(filename) |
+ .setUrl(url) |
+ .setMimeType(mimeType) |
+ .setContentLength(totalBytes); |
+ DownloadItem downloadItem = new DownloadItem(false, builder.build()); |
+ downloadItem.setStartTime(startTimestamp); |
+ return downloadItem; |
+ } |
+ |
+ @CalledByNative |
+ private void onAllDownloadsRetrieved(final DownloadItem[] list) { |
+ mDownloadHistoryAdapter.onAllDownloadsRetrieved(list); |
+ } |
+ |
@Override |
public void onMaxBandwidthChanged(double maxBandwidthMbps) {} |
@@ -1471,4 +1513,5 @@ public class DownloadManagerService extends BroadcastReceiver implements |
long nativeDownloadManagerService, String downloadGuid, boolean isOffTheRecord, |
boolean isNotificationDismissed); |
private native void nativePauseDownload(long nativeDownloadManagerService, String downloadGuid); |
+ private native void nativeGetAllDownloads(long nativeDownloadManagerService); |
} |