| Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/ContentSuggestionsNotificationHelper.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/ContentSuggestionsNotificationHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/ContentSuggestionsNotificationHelper.java
|
| index ed299336897ca1d862100d376a09133bc6367664..73de4adfc3ee1801f25364483acc13ac80657540 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/ContentSuggestionsNotificationHelper.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/ContentSuggestionsNotificationHelper.java
|
| @@ -30,8 +30,9 @@
|
| import org.chromium.chrome.browser.notifications.NotificationConstants;
|
| import org.chromium.chrome.browser.notifications.NotificationUmaTracker;
|
| import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsNotificationAction;
|
| +import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsNotificationAction.ContentSuggestionsNotificationActionEnum;
|
| +import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsNotificationOptOut.ContentSuggestionsNotificationOptOutEnum;
|
| import org.chromium.chrome.browser.preferences.ContentSuggestionsPreferences;
|
| -import org.chromium.chrome.browser.preferences.PreferencesLauncher;
|
|
|
| import java.util.Collection;
|
| import java.util.Collections;
|
| @@ -74,6 +75,24 @@
|
| private ContentSuggestionsNotificationHelper() {} // Prevent instantiation
|
|
|
| /**
|
| + * Records the reason why Content Suggestions notifications have been opted out.
|
| + * @see ContentSuggestionsNotificationOptOutEnum;
|
| + */
|
| + public static void recordNotificationOptOut(
|
| + @ContentSuggestionsNotificationOptOutEnum int reason) {
|
| + nativeRecordNotificationOptOut(reason);
|
| + }
|
| +
|
| + /**
|
| + * Records an action performed on a Content Suggestions notification.
|
| + * @see ContentSuggestionsNotificationActionEnum;
|
| + */
|
| + public static void recordNotificationAction(
|
| + @ContentSuggestionsNotificationActionEnum int action) {
|
| + nativeRecordNotificationAction(action);
|
| + }
|
| +
|
| + /**
|
| * Opens the content suggestion when notification is tapped.
|
| */
|
| public static final class OpenUrlReceiver extends BroadcastReceiver {
|
| @@ -82,7 +101,7 @@ public void onReceive(Context context, Intent intent) {
|
| int category = intent.getIntExtra(NOTIFICATION_CATEGORY_EXTRA, -1);
|
| String idWithinCategory = intent.getStringExtra(NOTIFICATION_ID_WITHIN_CATEGORY_EXTRA);
|
| openUrl(intent.getData());
|
| - recordCachedActionMetric(ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_TAP);
|
| + recordCachedActionMetric(ContentSuggestionsNotificationAction.TAP);
|
| removeActiveNotification(category, idWithinCategory);
|
| }
|
| }
|
| @@ -95,8 +114,7 @@ public void onReceive(Context context, Intent intent) {
|
| public void onReceive(Context context, Intent intent) {
|
| int category = intent.getIntExtra(NOTIFICATION_CATEGORY_EXTRA, -1);
|
| String idWithinCategory = intent.getStringExtra(NOTIFICATION_ID_WITHIN_CATEGORY_EXTRA);
|
| - recordCachedActionMetric(
|
| - ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_DISMISSAL);
|
| + recordCachedActionMetric(ContentSuggestionsNotificationAction.DISMISSAL);
|
| removeActiveNotification(category, idWithinCategory);
|
| }
|
| }
|
| @@ -113,8 +131,8 @@ public void onReceive(Context context, Intent intent) {
|
| return; // tapped or swiped
|
| }
|
|
|
| - hideNotification(category, idWithinCategory,
|
| - ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_DEADLINE);
|
| + hideNotification(
|
| + category, idWithinCategory, ContentSuggestionsNotificationAction.HIDE_DEADLINE);
|
| }
|
| }
|
|
|
| @@ -173,8 +191,8 @@ private static boolean showNotification(int category, String idWithinCategory, S
|
| .setSmallIcon(R.drawable.ic_chrome);
|
| if (ChromeFeatureList.isEnabled(ChromeFeatureList.CONTENT_SUGGESTIONS_SETTINGS)) {
|
| PendingIntent settingsIntent = PendingIntent.getActivity(context, 0,
|
| - PreferencesLauncher.createIntentForSettingsPage(
|
| - context, ContentSuggestionsPreferences.class.getName()),
|
| + ContentSuggestionsPreferences.createLaunchIntent(
|
| + context, ContentSuggestionsPreferences.LAUNCH_SOURCE_NOTIFICATION),
|
| 0);
|
| builder.addAction(R.drawable.settings_cog, context.getString(R.string.preferences),
|
| settingsIntent);
|
| @@ -349,22 +367,21 @@ private static int nextNotificationId() {
|
| }
|
|
|
| private static String cachedMetricNameForAction(
|
| - @ContentSuggestionsNotificationAction.ContentSuggestionsNotificationActionEnum
|
| - int action) {
|
| + @ContentSuggestionsNotificationActionEnum int action) {
|
| switch (action) {
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_TAP:
|
| + case ContentSuggestionsNotificationAction.TAP:
|
| return PREF_CACHED_ACTION_TAP;
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_DISMISSAL:
|
| + case ContentSuggestionsNotificationAction.DISMISSAL:
|
| return PREF_CACHED_ACTION_DISMISSAL;
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_DEADLINE:
|
| + case ContentSuggestionsNotificationAction.HIDE_DEADLINE:
|
| return PREF_CACHED_ACTION_HIDE_DEADLINE;
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_EXPIRY:
|
| + case ContentSuggestionsNotificationAction.HIDE_EXPIRY:
|
| return PREF_CACHED_ACTION_HIDE_EXPIRY;
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_FRONTMOST:
|
| + case ContentSuggestionsNotificationAction.HIDE_FRONTMOST:
|
| return PREF_CACHED_ACTION_HIDE_FRONTMOST;
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_DISABLED:
|
| + case ContentSuggestionsNotificationAction.HIDE_DISABLED:
|
| return PREF_CACHED_ACTION_HIDE_DISABLED;
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_SHUTDOWN:
|
| + case ContentSuggestionsNotificationAction.HIDE_SHUTDOWN:
|
| return PREF_CACHED_ACTION_HIDE_SHUTDOWN;
|
| }
|
| return "";
|
| @@ -383,8 +400,7 @@ private static String cachedMetricNameForAction(
|
| * @param action The action to update the pref for.
|
| */
|
| private static void recordCachedActionMetric(
|
| - @ContentSuggestionsNotificationAction.ContentSuggestionsNotificationActionEnum
|
| - int action) {
|
| + @ContentSuggestionsNotificationActionEnum int action) {
|
| String prefName = cachedMetricNameForAction(action);
|
| assert !prefName.isEmpty();
|
|
|
| @@ -393,17 +409,17 @@ private static void recordCachedActionMetric(
|
|
|
| int consecutiveIgnored = prefs.getInt(PREF_CACHED_CONSECUTIVE_IGNORED, 0);
|
| switch (action) {
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_TAP:
|
| + case ContentSuggestionsNotificationAction.TAP:
|
| consecutiveIgnored = 0;
|
| break;
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_DISMISSAL:
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_DEADLINE:
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_EXPIRY:
|
| + case ContentSuggestionsNotificationAction.DISMISSAL:
|
| + case ContentSuggestionsNotificationAction.HIDE_DEADLINE:
|
| + case ContentSuggestionsNotificationAction.HIDE_EXPIRY:
|
| ++consecutiveIgnored;
|
| break;
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_FRONTMOST:
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_DISABLED:
|
| - case ContentSuggestionsNotificationAction.CONTENT_SUGGESTIONS_HIDE_SHUTDOWN:
|
| + case ContentSuggestionsNotificationAction.HIDE_FRONTMOST:
|
| + case ContentSuggestionsNotificationAction.HIDE_DISABLED:
|
| + case ContentSuggestionsNotificationAction.HIDE_SHUTDOWN:
|
| break; // no change
|
| }
|
|
|
| @@ -457,4 +473,8 @@ private static void flushCachedMetrics() {
|
| private static native void nativeReceiveFlushedMetrics(int tapCount, int dismissalCount,
|
| int hideDeadlineCount, int hideExpiryCount, int hideFrontmostCount,
|
| int hideDisabledCount, int hideShutdownCount, int consecutiveIgnored);
|
| + private static native void nativeRecordNotificationOptOut(
|
| + @ContentSuggestionsNotificationOptOutEnum int reason);
|
| + private static native void nativeRecordNotificationAction(
|
| + @ContentSuggestionsNotificationActionEnum int action);
|
| }
|
|
|