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">