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.NotificationManager; | |
8 import android.app.PendingIntent; | |
7 import android.content.Context; | 9 import android.content.Context; |
8 import android.content.Intent; | 10 import android.content.Intent; |
11 import android.graphics.Bitmap; | |
9 import android.net.Uri; | 12 import android.net.Uri; |
10 import android.provider.Browser; | 13 import android.provider.Browser; |
14 import android.support.v4.app.NotificationCompat; | |
11 | 15 |
12 import org.chromium.base.ContextUtils; | 16 import org.chromium.base.ContextUtils; |
13 import org.chromium.base.annotations.CalledByNative; | 17 import org.chromium.base.annotations.CalledByNative; |
18 import org.chromium.chrome.R; | |
14 import org.chromium.chrome.browser.IntentHandler; | 19 import org.chromium.chrome.browser.IntentHandler; |
15 import org.chromium.chrome.browser.ShortcutHelper; | 20 import org.chromium.chrome.browser.ShortcutHelper; |
16 import org.chromium.chrome.browser.document.ChromeLauncherActivity; | 21 import org.chromium.chrome.browser.document.ChromeLauncherActivity; |
17 | 22 |
18 /** | 23 /** |
19 * Provides functionality needed for content suggestion notifications. | 24 * Provides functionality needed for content suggestion notifications. |
20 * | 25 * |
21 * Exposes helper functions to native C++ code. | 26 * Exposes helper functions to native C++ code. |
22 */ | 27 */ |
23 public class ContentSuggestionsNotificationHelper { | 28 public class ContentSuggestionsNotificationHelper { |
29 private static final String TAG = "ContentSuggestionsNotification"; | |
dgn
2016/12/28 11:00:26
nit: name it differently (NOTIFICATION_TAG maybe?)
sfiera
2017/01/05 13:35:01
Done.
| |
30 private static final int ID = 0; | |
31 | |
24 private ContentSuggestionsNotificationHelper() {} // Prevent instantiation | 32 private ContentSuggestionsNotificationHelper() {} // Prevent instantiation |
25 | 33 |
26 @CalledByNative | 34 @CalledByNative |
27 private static void openUrl(String url) { | 35 private static void openUrl(String url) { |
28 Context context = ContextUtils.getApplicationContext(); | 36 Context context = ContextUtils.getApplicationContext(); |
29 Intent intent = new Intent(); | 37 Intent intent = new Intent(); |
30 intent.setAction(Intent.ACTION_VIEW); | 38 intent.setAction(Intent.ACTION_VIEW); |
31 intent.setData(Uri.parse(url)); | 39 intent.setData(Uri.parse(url)); |
32 intent.setClass(context, ChromeLauncherActivity.class); | 40 intent.setClass(context, ChromeLauncherActivity.class); |
33 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | 41 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
34 intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName()); | 42 intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName()); |
35 intent.putExtra(ShortcutHelper.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, true ); | 43 intent.putExtra(ShortcutHelper.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, true ); |
36 IntentHandler.addTrustedIntentExtras(intent, context); | 44 IntentHandler.addTrustedIntentExtras(intent, context); |
37 context.startActivity(intent); | 45 context.startActivity(intent); |
38 } | 46 } |
47 | |
48 @CalledByNative | |
49 private static void showNotification(String url, String title, String text, Bitmap image) { | |
50 Context context = ContextUtils.getApplicationContext(); | |
51 NotificationManager manager = | |
52 (NotificationManager) context.getSystemService(Context.NOTIFICAT ION_SERVICE); | |
53 Intent intent = new Intent() | |
54 .setAction(Intent.ACTION_VIEW) | |
55 .setData(Uri.parse(url)) | |
56 .setClass(context, ChromeLauncherActivity.class) | |
57 .putExtra(ShortcutHelper.REUSE_URL_MATCHING_TAB_ ELSE_NEW_TAB, true) | |
58 .putExtra(Browser.EXTRA_APPLICATION_ID, context. getPackageName()); | |
59 NotificationCompat.Builder builder = | |
60 new NotificationCompat.Builder(context) | |
61 .setAutoCancel(true) | |
62 .setContentIntent(PendingIntent.getActivity(context, 0, intent, 0)) | |
63 .setContentTitle(title) | |
64 .setContentText(text) | |
65 .setLargeIcon(image) | |
66 .setSmallIcon(R.drawable.ic_chrome); | |
67 manager.notify(TAG, ID, builder.build()); | |
68 } | |
69 | |
70 @CalledByNative | |
71 private static void hideNotification() { | |
72 Context context = ContextUtils.getApplicationContext(); | |
73 NotificationManager manager = | |
74 (NotificationManager) context.getSystemService(Context.NOTIFICAT ION_SERVICE); | |
75 manager.cancel(TAG, ID); | |
76 } | |
39 } | 77 } |
OLD | NEW |