OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.ntp; | 5 package org.chromium.chrome.browser.ntp; |
6 | 6 |
7 import android.app.AlarmManager; | 7 import android.app.AlarmManager; |
8 import android.app.Notification; | 8 import android.app.Notification; |
9 import android.app.NotificationManager; | 9 import android.app.NotificationManager; |
10 import android.app.PendingIntent; | 10 import android.app.PendingIntent; |
11 import android.content.BroadcastReceiver; | 11 import android.content.BroadcastReceiver; |
12 import android.content.Context; | 12 import android.content.Context; |
13 import android.content.Intent; | 13 import android.content.Intent; |
14 import android.content.SharedPreferences; | 14 import android.content.SharedPreferences; |
15 import android.graphics.Bitmap; | 15 import android.graphics.Bitmap; |
16 import android.net.Uri; | 16 import android.net.Uri; |
17 import android.provider.Browser; | 17 import android.provider.Browser; |
18 | 18 |
19 import org.chromium.base.ContextUtils; | 19 import org.chromium.base.ContextUtils; |
20 import org.chromium.base.annotations.CalledByNative; | 20 import org.chromium.base.annotations.CalledByNative; |
21 import org.chromium.base.annotations.JNINamespace; | 21 import org.chromium.base.annotations.JNINamespace; |
22 import org.chromium.base.library_loader.LibraryLoader; | 22 import org.chromium.base.library_loader.LibraryLoader; |
23 import org.chromium.chrome.R; | 23 import org.chromium.chrome.R; |
24 import org.chromium.chrome.browser.AppHooks; | 24 import org.chromium.chrome.browser.AppHooks; |
25 import org.chromium.chrome.browser.IntentHandler; | 25 import org.chromium.chrome.browser.IntentHandler; |
26 import org.chromium.chrome.browser.ShortcutHelper; | 26 import org.chromium.chrome.browser.ShortcutHelper; |
27 import org.chromium.chrome.browser.document.ChromeLauncherActivity; | 27 import org.chromium.chrome.browser.document.ChromeLauncherActivity; |
28 import org.chromium.chrome.browser.notifications.ChromeNotificationBuilder; | 28 import org.chromium.chrome.browser.notifications.ChromeNotificationBuilder; |
29 import org.chromium.chrome.browser.notifications.NotificationConstants; | 29 import org.chromium.chrome.browser.notifications.NotificationConstants; |
| 30 import org.chromium.chrome.browser.notifications.NotificationUmaTracker; |
30 import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsNotificationAc
tion; | 31 import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsNotificationAc
tion; |
31 | 32 |
32 import java.util.Collection; | 33 import java.util.Collection; |
33 import java.util.Collections; | 34 import java.util.Collections; |
34 import java.util.HashSet; | 35 import java.util.HashSet; |
35 import java.util.Set; | 36 import java.util.Set; |
36 | 37 |
37 /** | 38 /** |
38 * Provides functionality needed for content suggestion notifications. | 39 * Provides functionality needed for content suggestion notifications. |
39 * | 40 * |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 .setContentTitle(title) | 163 .setContentTitle(title) |
163 .setContentText(text) | 164 .setContentText(text) |
164 .setGroup(NOTIFICATION_TAG) | 165 .setGroup(NOTIFICATION_TAG) |
165 .setPriority(priority) | 166 .setPriority(priority) |
166 .setLargeIcon(image) | 167 .setLargeIcon(image) |
167 .setSmallIcon(R.drawable.ic_chrome); | 168 .setSmallIcon(R.drawable.ic_chrome); |
168 if (priority >= 0) { | 169 if (priority >= 0) { |
169 builder.setDefaults(Notification.DEFAULT_ALL); | 170 builder.setDefaults(Notification.DEFAULT_ALL); |
170 } | 171 } |
171 manager.notify(NOTIFICATION_TAG, nextId, builder.build()); | 172 manager.notify(NOTIFICATION_TAG, nextId, builder.build()); |
| 173 NotificationUmaTracker.getInstance().onNotificationShown( |
| 174 NotificationUmaTracker.CONTENT_SUGGESTION); |
172 addActiveNotification(new ActiveNotification(nextId, category, idWithinC
ategory, uri)); | 175 addActiveNotification(new ActiveNotification(nextId, category, idWithinC
ategory, uri)); |
173 | 176 |
174 // Set timeout. | 177 // Set timeout. |
175 if (timeoutAtMillis != Long.MAX_VALUE) { | 178 if (timeoutAtMillis != Long.MAX_VALUE) { |
176 AlarmManager alarmManager = | 179 AlarmManager alarmManager = |
177 (AlarmManager) context.getSystemService(Context.ALARM_SERVIC
E); | 180 (AlarmManager) context.getSystemService(Context.ALARM_SERVIC
E); |
178 Intent timeoutIntent = | 181 Intent timeoutIntent = |
179 new Intent(context, TimeoutReceiver.class) | 182 new Intent(context, TimeoutReceiver.class) |
180 .setData(Uri.parse(url)) | 183 .setData(Uri.parse(url)) |
181 .putExtra(NOTIFICATION_ID_EXTRA, nextId) | 184 .putExtra(NOTIFICATION_ID_EXTRA, nextId) |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 .remove(PREF_CACHED_ACTION_HIDE_SHUTDOWN) | 438 .remove(PREF_CACHED_ACTION_HIDE_SHUTDOWN) |
436 .remove(PREF_CACHED_CONSECUTIVE_IGNORED) | 439 .remove(PREF_CACHED_CONSECUTIVE_IGNORED) |
437 .apply(); | 440 .apply(); |
438 } | 441 } |
439 } | 442 } |
440 | 443 |
441 private static native void nativeReceiveFlushedMetrics(int tapCount, int dis
missalCount, | 444 private static native void nativeReceiveFlushedMetrics(int tapCount, int dis
missalCount, |
442 int hideDeadlineCount, int hideExpiryCount, int hideFrontmostCount, | 445 int hideDeadlineCount, int hideExpiryCount, int hideFrontmostCount, |
443 int hideDisabledCount, int hideShutdownCount, int consecutiveIgnored
); | 446 int hideDisabledCount, int hideShutdownCount, int consecutiveIgnored
); |
444 } | 447 } |
OLD | NEW |