Index: chrome/browser/notifications/desktop_notification_service.h |
diff --git a/chrome/browser/notifications/desktop_notification_service.h b/chrome/browser/notifications/desktop_notification_service.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..38e0b27b299cfb6fd5bbede65e379bd1b1f63f51 |
--- /dev/null |
+++ b/chrome/browser/notifications/desktop_notification_service.h |
@@ -0,0 +1,78 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_H |
+#define CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_H |
+ |
+#include <set> |
+ |
+#include "base/basictypes.h" |
+#include "chrome/browser/notifications/notification.h" |
+#include "googleurl/src/gurl.h" |
+ |
+class NotificationUIManager; |
+class NotificationsPrefsCache; |
+class PrefService; |
+class Profile; |
+class Task; |
+ |
+// The DesktopNotificationService is an object, owned by the Profile, |
+// which provides the creation of desktop "toasts" to web pages and workers. |
+class DesktopNotificationService { |
+ public: |
+ enum NotificationSource { |
+ PageNotification, |
+ WorkerNotification |
+ }; |
+ |
+ DesktopNotificationService(Profile* profile, |
+ NotificationUIManager* ui_manager); |
+ ~DesktopNotificationService(); |
+ |
+ // Requests permission (using an info-bar) for a given origin. |
+ // |callback_context| contains an opaque value to pass back to the |
+ // requesting process when the info-bar finishes. |
+ void RequestPermission(const GURL& origin, int callback_context); |
+ |
+ // Takes a notification object and shows it in the UI. |
+ void ShowNotification(const Notification& notification); |
+ |
+ // Two ShowNotification methods: getting content either from remote |
+ // URL or as local parameters. These are called on the UI thread |
+ // in response to IPCs from a child process running script. |origin| |
+ // is the origin of the script. |source| indicates whether the |
+ // script is in a worker or page. |notification_id| is an opaque |
+ // value to be passed back to the process when events occur on |
+ // this notification. |
+ bool ShowDesktopNotification(const GURL& origin, const GURL& url, |
+ int process_id, int route_id, NotificationSource source, |
+ int notification_id); |
+ bool ShowDesktopNotificationText(const GURL& origin, const GURL& icon, |
+ const string16& title, const string16& text, int process_id, |
+ int route_id, NotificationSource source, int notification_id); |
+ |
+ // Methods to setup and modify permission preferences. |
+ void GrantPermission(const GURL& origin); |
+ void DenyPermission(const GURL& origin); |
+ |
+ NotificationsPrefsCache* prefs_cache() { return prefs_cache_; } |
+ |
+ private: |
+ void InitPrefs(); |
+ |
+ // The profile which owns this object. |
+ Profile* profile_; |
+ |
+ // A cache of preferences which is accessible only on the IO thread |
+ // to service synchronous IPCs. |
+ scoped_refptr<NotificationsPrefsCache> prefs_cache_; |
+ |
+ // Non-owned pointer to the notification manager which manages the |
+ // UI for desktop toasts. |
+ NotificationUIManager* ui_manager_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DesktopNotificationService); |
+}; |
+ |
+#endif // #ifndef CHROME_BROWSER_NOTIFICATIONS_DESKTOP_NOTIFICATION_SERVICE_H |