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

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

Issue 1673183003: add pause button for resumable in-progress downloads. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: adding assert Created 4 years, 10 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/DownloadNotificationService.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationService.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationService.java
index e87d174608f7491bf27486c47ef766c7f8e4e14c..0b537a303d0e83ca7a33bbd3a813446aa1e2bec3 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationService.java
@@ -41,6 +41,8 @@ public class DownloadNotificationService extends Service {
static final String EXTRA_DOWNLOAD_FILE_NAME = "DownloadFileName";
static final String ACTION_DOWNLOAD_CANCEL =
"org.chromium.chrome.browser.download.DOWNLOAD_CANCEL";
+ static final String ACTION_DOWNLOAD_PAUSE =
+ "org.chromium.chrome.browser.download.DOWNLOAD_PAUSE";
static final String ACTION_DOWNLOAD_RESUME =
"org.chromium.chrome.browser.download.DOWNLOAD_RESUME";
static final int INVALID_DOWNLOAD_PERCENTAGE = -1;
@@ -111,10 +113,11 @@ public class DownloadNotificationService extends Service {
* the percentage can be determined, or -1 if it is unknown.
* @param timeRemainingInMillis Remaining download time in milliseconds.
* @param startTime Time when download started.
+ * @param isResumable whether the download can be resumed.
*/
public void notifyDownloadProgress(
int downloadId, String fileName, int percentage, long timeRemainingInMillis,
- long startTime) {
+ long startTime, boolean isResumable) {
boolean indeterminate = percentage == INVALID_DOWNLOAD_PERCENTAGE;
NotificationCompat.Builder builder = buildNotification(
android.R.drawable.stat_sys_download, fileName, null);
@@ -129,6 +132,11 @@ public class DownloadNotificationService extends Service {
builder.addAction(android.R.drawable.ic_menu_close_clear_cancel,
mContext.getResources().getString(R.string.download_notification_cancel_button),
buildPendingIntent(ACTION_DOWNLOAD_CANCEL, downloadId, fileName));
+ if (isResumable) {
+ builder.addAction(android.R.drawable.ic_media_pause,
+ mContext.getResources().getString(R.string.download_notification_pause_button),
+ buildPendingIntent(ACTION_DOWNLOAD_PAUSE, downloadId, fileName));
+ }
updateNotification(downloadId, builder.build());
}
@@ -253,6 +261,12 @@ public class DownloadNotificationService extends Service {
intent, DownloadNotificationService.EXTRA_DOWNLOAD_ID, -1);
final String fileName = IntentUtils.safeGetStringExtra(
intent, DownloadNotificationService.EXTRA_DOWNLOAD_FILE_NAME);
+ // If browser process already goes away, the download should have already paused. Do nothing
+ // in that case.
+ if (ACTION_DOWNLOAD_PAUSE.equals(intent.getAction())
+ && !DownloadManagerService.hasDownloadManagerService()) {
+ return;
+ }
BrowserParts parts = new EmptyBrowserParts() {
@Override
public void finishNativeInitialization() {
@@ -266,6 +280,9 @@ public class DownloadNotificationService extends Service {
service.cancelDownload(downloadId);
cancelNotification(downloadId);
break;
+ case ACTION_DOWNLOAD_PAUSE:
+ service.pauseDownload(downloadId);
+ break;
case ACTION_DOWNLOAD_RESUME:
service.resumeDownload(downloadId, fileName);
break;
@@ -301,7 +318,8 @@ public class DownloadNotificationService extends Service {
*/
static boolean isDownloadOperationIntent(Intent intent) {
if (!ACTION_DOWNLOAD_CANCEL.equals(intent.getAction())
- && !ACTION_DOWNLOAD_RESUME.equals(intent.getAction())) {
+ && !ACTION_DOWNLOAD_RESUME.equals(intent.getAction())
+ && !ACTION_DOWNLOAD_PAUSE.equals(intent.getAction())) {
return false;
}
if (!intent.hasExtra(DownloadNotificationService.EXTRA_DOWNLOAD_ID)

Powered by Google App Engine
This is Rietveld 408576698