Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4210)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerService.java

Issue 1993873003: deprecate notificationId for downloads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 a64324b2dc9c25e865e50c3654be8af0c3404620..261c49437b2b4be97e0d46e64372a001d8038293 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
@@ -40,11 +40,9 @@ import org.chromium.ui.widget.Toast;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import java.util.Vector;
import java.util.concurrent.ConcurrentHashMap;
@@ -401,7 +399,8 @@ public class DownloadManagerService extends BroadcastReceiver implements
mDownloadInfo, downloadId, mInstallNotifyURI);
removeOMADownloadFromSharedPrefs(downloadId);
mDownloadSnackbarController.onDownloadSucceeded(
- mDownloadInfo, downloadId, result.second);
+ mDownloadInfo, DownloadSnackbarController.INVALID_NOTIFICATION_ID,
+ downloadId, result.second);
} else if (result.first == DownloadManager.STATUS_FAILED) {
mOMADownloadHandler.onDownloadFailed(
mDownloadInfo, downloadId, mFailureReason, mInstallNotifyURI);
@@ -510,13 +509,11 @@ public class DownloadManagerService extends BroadcastReceiver implements
/**
* Updates notifications for all current downloads. Should not be called from UI thread.
*
- * @return A map that maps all completed download to whether the download can be resolved.
- * If a download fails, its system download ID is DownloadItem.INVALID_DOWNLOAD_ID. If
- * a download is cancelled, return an empty map so that no action needs to be taken.
+ * @return A List of failed downloads.
*/
- private Map<DownloadItem, Boolean> updateAllNotifications() {
+ private List<DownloadItem> updateAllNotifications() {
assert !ThreadUtils.runningOnUiThread();
- Map<DownloadItem, Boolean> downloadItems = new HashMap<DownloadItem, Boolean>();
+ List<DownloadItem> downloadItems = new ArrayList<DownloadItem>();
for (DownloadProgress progress : mDownloadProgressMap.values()) {
if (progress != null) {
DownloadItem item = progress.mDownloadItem;
@@ -528,20 +525,20 @@ public class DownloadManagerService extends BroadcastReceiver implements
if (success) {
boolean canResolve = isOMADownloadDescription(info)
|| canResolveDownloadItem(mContext, item);
- downloadItems.put(item, canResolve);
+ long systemDownloadId = item.getSystemDownloadId();
mDownloadNotifier.notifyDownloadSuccessful(
- info, getLaunchIntentFromDownloadId(
- mContext, item.getSystemDownloadId()));
+ info, systemDownloadId, canResolve,
+ getLaunchIntentFromDownloadId(mContext, systemDownloadId));
broadcastDownloadSuccessful(info);
} else {
- downloadItems.put(item, false);
+ downloadItems.add(item);
mDownloadNotifier.notifyDownloadFailed(info);
}
break;
case DOWNLOAD_STATUS_FAILED:
mDownloadProgressMap.remove(item.getId());
mDownloadNotifier.notifyDownloadFailed(info);
- downloadItems.put(item, false);
+ downloadItems.add(item);
Log.w(TAG, "Download failed: " + info.getFilePath());
break;
case DOWNLOAD_STATUS_IN_PROGRESS:
@@ -558,8 +555,7 @@ public class DownloadManagerService extends BroadcastReceiver implements
break;
case DOWNLOAD_STATUS_CANCELLED:
mDownloadProgressMap.remove(item.getId());
- mDownloadNotifier.cancelNotification(
- item.getNotificationId(), item.getId());
+ mDownloadNotifier.notifyDownloadCanceled(item.getId());
break;
case DOWNLOAD_STATUS_INTERRUPTED:
// If the download can be auto resumed, keep it in the progress map so we
@@ -636,33 +632,18 @@ public class DownloadManagerService extends BroadcastReceiver implements
Runnable updateTask = new Runnable() {
@Override
public void run() {
- new AsyncTask<Void, Void, Map<DownloadItem, Boolean>>() {
+ new AsyncTask<Void, Void, List<DownloadItem>>() {
@Override
- public Map<DownloadItem, Boolean> doInBackground(Void... params) {
+ public List<DownloadItem> doInBackground(Void... params) {
return updateAllNotifications();
}
@Override
- protected void onPostExecute(
- Map<DownloadItem, Boolean> result) {
- for (Map.Entry<DownloadItem, Boolean> entry : result.entrySet()) {
- DownloadItem download = entry.getKey();
- if (!download.hasSystemDownloadId()) {
- // TODO(qinmin): get the failure message from native.
- onDownloadFailed(download.getDownloadInfo().getFileName(),
- DownloadManager.ERROR_UNKNOWN);
- return;
- }
- boolean canResolve = entry.getValue();
- if (canResolve && shouldOpenAfterDownload(
- download.getDownloadInfo())) {
- handleAutoOpenAfterDownload(download);
- } else {
- mDownloadSnackbarController.onDownloadSucceeded(
- download.getDownloadInfo(),
- download.getSystemDownloadId(),
- canResolve);
- }
+ protected void onPostExecute(List<DownloadItem> result) {
+ for (int i = 0; i < result.size(); ++i) {
+ // TODO(qinmin): get the failure message from native.
+ onDownloadFailed(result.get(i).getDownloadInfo().getFileName(),
+ DownloadManager.ERROR_UNKNOWN);
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
@@ -1084,15 +1065,6 @@ public class DownloadManagerService extends BroadcastReceiver implements
}
/**
- * Called to cancel a download notification.
- * @param notificationId Notification Id of the download.
- * @param downloadGuid GUID of the download.
- */
- void cancelNotification(int notificationId, String downloadGuid) {
- mDownloadNotifier.cancelNotification(notificationId, downloadGuid);
- }
-
- /**
* Called to resume a paused download.
* @param item Download item to resume.
* @param hasUserGesture Whether the resumption is triggered by user gesture.
@@ -1177,6 +1149,25 @@ public class DownloadManagerService extends BroadcastReceiver implements
}
/**
+ * Called when download success notification is shown.
+ * @param info Information about the download.
+ * @param canResolve Whether to open the download automatically.
+ * @param notificationId Notification ID of the download.
+ * @param systemDownloadId System download ID assigned by the Android DownloadManager.
+ */
+ public void onSuccessNotificationShown(
+ DownloadInfo info, boolean canResolve, int notificationId, long systemDownloadId) {
+ if (canResolve && shouldOpenAfterDownload(info)) {
+ DownloadItem item = new DownloadItem(false, info);
+ item.setSystemDownloadId(systemDownloadId);
+ handleAutoOpenAfterDownload(item);
+ } else {
+ mDownloadSnackbarController.onDownloadSucceeded(
+ info, notificationId, systemDownloadId, canResolve);
+ }
+ }
+
+ /**
* Helper method to record the download resumption UMA.
* @param type UMA type to be recorded.
*/
@@ -1264,8 +1255,9 @@ public class DownloadManagerService extends BroadcastReceiver implements
handleAutoOpenAfterDownload(result.item);
} else {
mDownloadSnackbarController.onDownloadSucceeded(
- result.item.getDownloadInfo(), result.item.getSystemDownloadId(),
- result.canResolve);
+ result.item.getDownloadInfo(),
+ DownloadSnackbarController.INVALID_NOTIFICATION_ID,
+ result.item.getSystemDownloadId(), result.canResolve);
}
break;
case DOWNLOAD_STATUS_FAILED:

Powered by Google App Engine
This is Rietveld 408576698