OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_H_ |
6 #define CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_H_ | 6 #define CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 | 58 |
59 // The DesktopNotificationService is an object, owned by the Profile, | 59 // The DesktopNotificationService is an object, owned by the Profile, |
60 // which provides the creation of desktop "toasts" to web pages and workers. | 60 // which provides the creation of desktop "toasts" to web pages and workers. |
61 class DesktopNotificationService | 61 class DesktopNotificationService |
62 : public PermissionContextBase, | 62 : public PermissionContextBase, |
63 public extensions::ExtensionRegistryObserver { | 63 public extensions::ExtensionRegistryObserver { |
64 public: | 64 public: |
65 // Register profile-specific prefs of notifications. | 65 // Register profile-specific prefs of notifications. |
66 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* prefs); | 66 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* prefs); |
67 | 67 |
68 DesktopNotificationService(Profile* profile, | 68 // Add a desktop notification. |
69 NotificationUIManager* ui_manager); | 69 static std::string AddIconNotification(const GURL& origin_url, |
| 70 const base::string16& title, |
| 71 const base::string16& message, |
| 72 const gfx::Image& icon, |
| 73 const base::string16& replace_id, |
| 74 NotificationDelegate* delegate, |
| 75 Profile* profile); |
| 76 |
| 77 explicit DesktopNotificationService(Profile* profile); |
70 virtual ~DesktopNotificationService(); | 78 virtual ~DesktopNotificationService(); |
71 | 79 |
72 // Requests Web Notification permission for |requesting_frame|. The |callback| | 80 // Requests Web Notification permission for |requesting_frame|. The |callback| |
73 // will be invoked after the user has made a decision. | 81 // will be invoked after the user has made a decision. |
74 void RequestNotificationPermission( | 82 void RequestNotificationPermission( |
75 content::WebContents* web_contents, | 83 content::WebContents* web_contents, |
76 const PermissionRequestID& request_id, | 84 const PermissionRequestID& request_id, |
77 const GURL& requesting_frame, | 85 const GURL& requesting_frame, |
78 bool user_gesture, | 86 bool user_gesture, |
79 const NotificationPermissionCallback& callback); | 87 const NotificationPermissionCallback& callback); |
80 | 88 |
81 // Show a desktop notification. If |cancel_callback| is non-null, it's set to | 89 // Show a desktop notification. If |cancel_callback| is non-null, it's set to |
82 // a callback which can be used to cancel the notification. | 90 // a callback which can be used to cancel the notification. |
83 void ShowDesktopNotification( | 91 void ShowDesktopNotification( |
84 const content::ShowDesktopNotificationHostMsgParams& params, | 92 const content::ShowDesktopNotificationHostMsgParams& params, |
85 content::RenderFrameHost* render_frame_host, | 93 content::RenderFrameHost* render_frame_host, |
86 scoped_ptr<content::DesktopNotificationDelegate> delegate, | 94 scoped_ptr<content::DesktopNotificationDelegate> delegate, |
87 base::Closure* cancel_callback); | 95 base::Closure* cancel_callback); |
88 | 96 |
89 // Creates a data:xxxx URL which contains the full HTML for a notification | |
90 // using supplied icon, title, and text, run through a template which contains | |
91 // the standard formatting for notifications. | |
92 static base::string16 CreateDataUrl(const GURL& icon_url, | |
93 const base::string16& title, | |
94 const base::string16& body, | |
95 blink::WebTextDirection dir); | |
96 | |
97 // Creates a data:xxxx URL which contains the full HTML for a notification | |
98 // using resource template which contains the standard formatting for | |
99 // notifications. | |
100 static base::string16 CreateDataUrl(int resource, | |
101 const std::vector<std::string>& subst); | |
102 | |
103 // Add a desktop notification. | |
104 static std::string AddIconNotification(const GURL& origin_url, | |
105 const base::string16& title, | |
106 const base::string16& message, | |
107 const gfx::Image& icon, | |
108 const base::string16& replace_id, | |
109 NotificationDelegate* delegate, | |
110 Profile* profile); | |
111 | |
112 // Returns true if the notifier with |notifier_id| is allowed to send | 97 // Returns true if the notifier with |notifier_id| is allowed to send |
113 // notifications. | 98 // notifications. |
114 bool IsNotifierEnabled(const message_center::NotifierId& notifier_id); | 99 bool IsNotifierEnabled(const message_center::NotifierId& notifier_id); |
115 | 100 |
116 // Updates the availability of the notifier. | 101 // Updates the availability of the notifier. |
117 void SetNotifierEnabled(const message_center::NotifierId& notifier_id, | 102 void SetNotifierEnabled(const message_center::NotifierId& notifier_id, |
118 bool enabled); | 103 bool enabled); |
119 | 104 |
120 // Adds in a the welcome notification if required for components built | 105 // Adds in a the welcome notification if required for components built |
121 // into Chrome that show notifications like Chrome Now. | 106 // into Chrome that show notifications like Chrome Now. |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 | 163 |
179 // Welcome Notification | 164 // Welcome Notification |
180 scoped_ptr<ExtensionWelcomeNotification> chrome_now_welcome_notification_; | 165 scoped_ptr<ExtensionWelcomeNotification> chrome_now_welcome_notification_; |
181 | 166 |
182 base::WeakPtrFactory<DesktopNotificationService> weak_factory_; | 167 base::WeakPtrFactory<DesktopNotificationService> weak_factory_; |
183 | 168 |
184 DISALLOW_COPY_AND_ASSIGN(DesktopNotificationService); | 169 DISALLOW_COPY_AND_ASSIGN(DesktopNotificationService); |
185 }; | 170 }; |
186 | 171 |
187 #endif // CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_H_ | 172 #endif // CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_H_ |
OLD | NEW |