Android notification: use new API for offlinepage download notification.

This CL converts offline page download notification to use new
ChromeNotificationBuilder API which supports general notification
metrics recording, including:

Mobile.SystemNotification.Action.Click
Mobile.SystemNotification.Content.Click
Mobile.SystemNotification.Dismiss

Bug: 898269
Change-Id: I75e199955a028bdd5bc936923c5d88bd9d217137
Reviewed-on: https://chromium-review.googlesource.com/c/1459778
Commit-Queue: Xing Liu <xingliu@chromium.org>
Reviewed-by: Min Qin <qinmin@chromium.org>
Reviewed-by: David Trainor <dtrainor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#631534}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationFactory.java
index 3aa3f00..e8ee6619 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadNotificationFactory.java
@@ -78,9 +78,12 @@
                         .createChromeNotificationBuilder(true /* preferCompat */,
                                 ChannelDefinitions.ChannelId.DOWNLOADS,
                                 null /* remoteAppPackageName */,
-                                new NotificationMetadata(
-                                        NotificationUmaTracker.SystemNotificationType
-                                                .DOWNLOAD_FILES,
+                                new NotificationMetadata(LegacyHelpers.isLegacyDownload(
+                                                                 downloadUpdate.getContentId())
+                                                ? NotificationUmaTracker.SystemNotificationType
+                                                          .DOWNLOAD_FILES
+                                                : NotificationUmaTracker.SystemNotificationType
+                                                          .DOWNLOAD_PAGES,
                                         null /* tag */, notificationId))
                         .setLocalOnly(true)
                         .setGroup(NotificationConstants.GROUP_DOWNLOADS)
@@ -88,6 +91,18 @@
 
         String contentText;
         int iconId;
+        @NotificationUmaTracker.ActionType
+        int cancelActionType,
+                pauseActionType, resumeActionType;
+        if (LegacyHelpers.isLegacyDownload(downloadUpdate.getContentId())) {
+            cancelActionType = NotificationUmaTracker.ActionType.DOWNLOAD_CANCEL;
+            pauseActionType = NotificationUmaTracker.ActionType.DOWNLOAD_PAUSE;
+            resumeActionType = NotificationUmaTracker.ActionType.DOWNLOAD_RESUME;
+        } else {
+            cancelActionType = NotificationUmaTracker.ActionType.DOWNLOAD_PAGE_CANCEL;
+            pauseActionType = NotificationUmaTracker.ActionType.DOWNLOAD_PAGE_PAUSE;
+            resumeActionType = NotificationUmaTracker.ActionType.DOWNLOAD_PAGE_RESUME;
+        }
 
         switch (downloadStatus) {
             case DownloadNotificationService.DownloadStatus.IN_PROGRESS:
@@ -138,13 +153,13 @@
                                         R.string.download_notification_pause_button),
                                 buildPendingIntentProvider(
                                         context, pauseIntent, downloadUpdate.getNotificationId()),
-                                NotificationUmaTracker.ActionType.DOWNLOAD_PAUSE)
+                                pauseActionType)
                         .addAction(R.drawable.btn_close_white,
                                 context.getResources().getString(
                                         R.string.download_notification_cancel_button),
                                 buildPendingIntentProvider(
                                         context, cancelIntent, downloadUpdate.getNotificationId()),
-                                NotificationUmaTracker.ActionType.DOWNLOAD_CANCEL);
+                                cancelActionType);
 
                 if (!downloadUpdate.getIsOffTheRecord())
                     builder.setLargeIcon(downloadUpdate.getIcon());
@@ -191,13 +206,13 @@
                                         R.string.download_notification_resume_button),
                                 buildPendingIntentProvider(
                                         context, resumeIntent, downloadUpdate.getNotificationId()),
-                                NotificationUmaTracker.ActionType.DOWNLOAD_RESUME)
+                                resumeActionType)
                         .addAction(R.drawable.btn_close_white,
                                 context.getResources().getString(
                                         R.string.download_notification_cancel_button),
                                 buildPendingIntentProvider(
                                         context, cancelIntent, downloadUpdate.getNotificationId()),
-                                NotificationUmaTracker.ActionType.DOWNLOAD_CANCEL);
+                                cancelActionType);
 
                 if (!downloadUpdate.getIsOffTheRecord())
                     builder.setLargeIcon(downloadUpdate.getIcon());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java
index fd8ac96..bdc718c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationUmaTracker.java
@@ -85,8 +85,14 @@
         int DOWNLOAD_RESUME = 1;
         // Cancel button on user download notification.
         int DOWNLOAD_CANCEL = 2;
+        // Pause button on page download notification.
+        int DOWNLOAD_PAGE_PAUSE = 3;
+        // Resume button on page download notification.
+        int DOWNLOAD_PAGE_RESUME = 4;
+        // Cancel button on page download notification.
+        int DOWNLOAD_PAGE_CANCEL = 5;
 
-        int NUM_ENTRIES = 3;
+        int NUM_ENTRIES = 6;
     }
 
     private static final String LAST_SHOWN_NOTIFICATION_TYPE_KEY =
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index fe2a01f..7674c03 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -51685,6 +51685,9 @@
   <int value="0" label="Download paused"/>
   <int value="1" label="Download resumed"/>
   <int value="2" label="Download canceled"/>
+  <int value="3" label="Download page paused"/>
+  <int value="4" label="Download page resumed"/>
+  <int value="5" label="Download page canceled"/>
 </enum>
 
 <enum name="SystemNotificationType">