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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/download/SystemDownloadNotifier.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/SystemDownloadNotifier.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/SystemDownloadNotifier.java b/chrome/android/java/src/org/chromium/chrome/browser/download/SystemDownloadNotifier.java
index 43f1dfa0c8717b52f43eeed6d35c671866c64eac..9705370f775edfd30a2374adbae54a7d74ee249a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/SystemDownloadNotifier.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/SystemDownloadNotifier.java
@@ -11,6 +11,7 @@ import android.content.ServiceConnection;
import android.os.IBinder;
import org.chromium.base.Log;
+import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.content.browser.DownloadInfo;
@@ -38,7 +39,7 @@ public class SystemDownloadNotifier implements DownloadNotifier {
private final Object mLock = new Object();
@Nullable private DownloadNotificationService mBoundService;
private boolean mServiceStarted;
- private Set<Integer> mActiveNotificationIds = new HashSet<Integer>();
+ private Set<String> mActiveDownloads = new HashSet<String>();
private List<PendingNotificationInfo> mPendingNotifications =
new ArrayList<PendingNotificationInfo>();
@@ -53,6 +54,9 @@ public class SystemDownloadNotifier implements DownloadNotifier {
public long startTime;
public boolean isAutoResumable;
public boolean canDownloadWhileMetered;
+ public boolean canResolve;
+ public long systemDownloadId;
+ public int notificationId;
public PendingNotificationInfo(int type, DownloadInfo downloadInfo) {
this.type = type;
@@ -137,7 +141,7 @@ public class SystemDownloadNotifier implements DownloadNotifier {
*/
private void stopServiceIfNeeded() {
assert Thread.holdsLock(mLock);
- if (mActiveNotificationIds.isEmpty() && mServiceStarted) {
+ if (mActiveDownloads.isEmpty() && mServiceStarted) {
stopService();
mServiceStarted = false;
}
@@ -166,20 +170,22 @@ public class SystemDownloadNotifier implements DownloadNotifier {
}
@Override
- public void cancelNotification(int notificationId, String downloadGuid) {
- DownloadInfo info = new DownloadInfo.Builder()
- .setNotificationId(notificationId)
+ public void notifyDownloadCanceled(String downloadGuid) {
+ DownloadInfo downloadInfo = new DownloadInfo.Builder()
.setDownloadGuid(downloadGuid)
.build();
updateDownloadNotification(
- new PendingNotificationInfo(DOWNLOAD_NOTIFICATION_TYPE_CANCEL, info));
+ new PendingNotificationInfo(DOWNLOAD_NOTIFICATION_TYPE_CANCEL, downloadInfo));
}
@Override
- public void notifyDownloadSuccessful(DownloadInfo downloadInfo, Intent intent) {
+ public void notifyDownloadSuccessful(DownloadInfo downloadInfo, long systemDownloadId,
+ boolean canResolve, Intent intent) {
PendingNotificationInfo info =
new PendingNotificationInfo(DOWNLOAD_NOTIFICATION_TYPE_SUCCESS, downloadInfo);
info.intent = intent;
+ info.canResolve = canResolve;
+ info.systemDownloadId = systemDownloadId;
updateDownloadNotification(info);
}
@@ -218,14 +224,14 @@ public class SystemDownloadNotifier implements DownloadNotifier {
* wait for the notification service to become ready.
* @param info Pending notification information to be handled.
*/
- private void updateDownloadNotification(PendingNotificationInfo notificationInfo) {
+ private void updateDownloadNotification(final PendingNotificationInfo notificationInfo) {
synchronized (mLock) {
startAndBindToServiceIfNeeded();
- DownloadInfo info = notificationInfo.downloadInfo;
+ final DownloadInfo info = notificationInfo.downloadInfo;
if (notificationInfo.type == DOWNLOAD_NOTIFICATION_TYPE_PROGRESS) {
- mActiveNotificationIds.add(info.getNotificationId());
+ mActiveDownloads.add(info.getDownloadGuid());
} else if (notificationInfo.type != DOWNLOAD_NOTIFICATION_TYPE_RESUME_ALL) {
- mActiveNotificationIds.remove(info.getNotificationId());
+ mActiveDownloads.remove(info.getDownloadGuid());
}
if (mBoundService == null) {
// We need to wait for the service to connect before we can handle
@@ -235,7 +241,7 @@ public class SystemDownloadNotifier implements DownloadNotifier {
} else {
switch (notificationInfo.type) {
case DOWNLOAD_NOTIFICATION_TYPE_PROGRESS:
- mBoundService.notifyDownloadProgress(info.getNotificationId(),
+ mBoundService.notifyDownloadProgress(
info.getDownloadGuid(), info.getFileName(),
info.getPercentCompleted(), info.getTimeRemainingInMillis(),
notificationInfo.startTime, info.isResumable(),
@@ -247,20 +253,27 @@ public class SystemDownloadNotifier implements DownloadNotifier {
info.getDownloadGuid(), notificationInfo.isAutoResumable);
break;
case DOWNLOAD_NOTIFICATION_TYPE_SUCCESS:
- mBoundService.notifyDownloadSuccessful(
- info.getNotificationId(), info.getDownloadGuid(),
- info.getFileName(), notificationInfo.intent);
+ final int notificationId = mBoundService.notifyDownloadSuccessful(
+ info.getDownloadGuid(), info.getFileName(),
+ notificationInfo.intent);
+ ThreadUtils.postOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ DownloadManagerService.getDownloadManagerService(
+ mApplicationContext).onSuccessNotificationShown(
+ info, notificationInfo.canResolve, notificationId,
+ notificationInfo.systemDownloadId);
+ }
+ });
stopServiceIfNeeded();
break;
case DOWNLOAD_NOTIFICATION_TYPE_FAILURE:
mBoundService.notifyDownloadFailed(
- info.getNotificationId(), info.getDownloadGuid(),
- info.getFileName());
+ info.getDownloadGuid(), info.getFileName());
stopServiceIfNeeded();
break;
case DOWNLOAD_NOTIFICATION_TYPE_CANCEL:
- mBoundService.cancelNotification(
- info.getNotificationId(), info.getDownloadGuid());
+ mBoundService.notifyDownloadCanceled(info.getDownloadGuid());
stopServiceIfNeeded();
break;
case DOWNLOAD_NOTIFICATION_TYPE_RESUME_ALL:

Powered by Google App Engine
This is Rietveld 408576698