| 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 d3da69c8270e8c4783452f99501b4bf034ae8d3e..94b4da746251fabb8ffc55a2da55651e67f4ed8b 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
|
| @@ -31,7 +31,6 @@ import android.util.Pair;
|
|
|
| import org.chromium.base.ApiCompatibilityUtils;
|
| import org.chromium.base.ApplicationStatus;
|
| -import org.chromium.base.BuildInfo;
|
| import org.chromium.base.ContextUtils;
|
| import org.chromium.base.Log;
|
| import org.chromium.base.ObserverList;
|
| @@ -139,6 +138,15 @@ public class DownloadNotificationService extends Service {
|
| private DownloadSharedPreferenceHelper mDownloadSharedPreferenceHelper;
|
|
|
| /**
|
| + * @return Whether or not this service should be made a foreground service if there are active
|
| + * downloads.
|
| + */
|
| + @VisibleForTesting
|
| + static boolean useForegroundService() {
|
| + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N;
|
| + }
|
| +
|
| + /**
|
| * Start this service with a summary {@link Notification}. This will start the service in the
|
| * foreground.
|
| * @param context The context used to build the notification and to start the service.
|
| @@ -148,7 +156,7 @@ public class DownloadNotificationService extends Service {
|
| Intent intent = source != null ? new Intent(source) : new Intent();
|
| intent.setComponent(new ComponentName(context, DownloadNotificationService.class));
|
|
|
| - if (BuildInfo.isAtLeastO()) {
|
| + if (useForegroundService()) {
|
| Notification notification = buildSummaryNotification(context);
|
|
|
| AppHooks.get().startServiceWithNotification(
|
| @@ -173,7 +181,7 @@ public class DownloadNotificationService extends Service {
|
| @TargetApi(Build.VERSION_CODES.M)
|
| private static Pair<Boolean, Integer> getSummaryIcon(Context context, int removedNotificationId,
|
| Pair<Integer, Notification> addedNotification) {
|
| - if (!BuildInfo.isAtLeastO()) return new Pair<Boolean, Integer>(false, -1);
|
| + if (!useForegroundService()) return new Pair<Boolean, Integer>(false, -1);
|
| boolean progress = false;
|
| boolean paused = false;
|
| boolean pending = false;
|
| @@ -403,7 +411,7 @@ public class DownloadNotificationService extends Service {
|
| @VisibleForTesting
|
| @TargetApi(Build.VERSION_CODES.N)
|
| void stopForegroundInternal(boolean killNotification) {
|
| - if (!BuildInfo.isAtLeastO()) return;
|
| + if (!useForegroundService()) return;
|
| stopForeground(killNotification ? STOP_FOREGROUND_REMOVE : STOP_FOREGROUND_DETACH);
|
| }
|
|
|
| @@ -413,7 +421,7 @@ public class DownloadNotificationService extends Service {
|
| */
|
| @VisibleForTesting
|
| void startForegroundInternal() {
|
| - if (!BuildInfo.isAtLeastO()) return;
|
| + if (!useForegroundService()) return;
|
| Notification notification = buildSummaryNotification(getApplicationContext());
|
| startForeground(NotificationConstants.NOTIFICATION_ID_DOWNLOAD_SUMMARY, notification);
|
| }
|
| @@ -508,7 +516,7 @@ public class DownloadNotificationService extends Service {
|
| @VisibleForTesting
|
| @TargetApi(Build.VERSION_CODES.M)
|
| boolean hasDownloadNotifications(Integer notificationIdToIgnore) {
|
| - if (!BuildInfo.isAtLeastO()) return false;
|
| + if (!useForegroundService()) return false;
|
|
|
| StatusBarNotification[] notifications = mNotificationManager.getActiveNotifications();
|
| for (StatusBarNotification notification : notifications) {
|
| @@ -530,7 +538,7 @@ public class DownloadNotificationService extends Service {
|
| @VisibleForTesting
|
| @TargetApi(Build.VERSION_CODES.M)
|
| StatusBarNotification getSummaryNotification() {
|
| - if (!BuildInfo.isAtLeastO()) return null;
|
| + if (!useForegroundService()) return null;
|
|
|
| StatusBarNotification[] notifications = mNotificationManager.getActiveNotifications();
|
| for (StatusBarNotification notification : notifications) {
|
| @@ -555,7 +563,7 @@ public class DownloadNotificationService extends Service {
|
| @VisibleForTesting
|
| void updateSummaryIcon(
|
| int removedNotificationId, Pair<Integer, Notification> addedNotification) {
|
| - if (!BuildInfo.isAtLeastO()) return;
|
| + if (!useForegroundService()) return;
|
|
|
| Pair<Boolean, Integer> icon =
|
| getSummaryIcon(mContext, removedNotificationId, addedNotification);
|
| @@ -589,7 +597,7 @@ public class DownloadNotificationService extends Service {
|
| */
|
| @TargetApi(Build.VERSION_CODES.M)
|
| boolean hideSummaryNotificationIfNecessary(Integer notificationIdToIgnore) {
|
| - if (!BuildInfo.isAtLeastO()) return false;
|
| + if (!useForegroundService()) return false;
|
| if (mDownloadsInProgress.size() > 0) return false;
|
|
|
| if (hasDownloadNotifications(notificationIdToIgnore)) return false;
|
|
|