Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1223)

Side by Side Diff: ash/system/web_notification/message_center.h

Issue 11229022: Move ash/system/web_notification message_center to ui/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase again. Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef ASH_SYSTEM_WEB_NOTIFICATION_MESSAGE_CENTER_H_
6 #define ASH_SYSTEM_WEB_NOTIFICATION_MESSAGE_CENTER_H_
7
8 #include "ash/ash_export.h"
9 #include "ash/system/web_notification/web_notification_list.h"
10 #include "base/memory/scoped_ptr.h"
11
12 // Class for managing the WebNotificationList. The client (e.g. Chrome) calls
13 // [Add|Remove|Update]Notification to create and update notifications in the
14 // list. It can also implement Delegate to receive callbacks when a
15 // notification is removed (closed), or clicked on.
16 // If a Host is provided, it will be informed when the notification list
17 // changes, and is expected to handle creating, showing, and hiding of any
18 // bubbles.
19
20 namespace message_center {
21
22 class ASH_EXPORT MessageCenter : public WebNotificationList::Delegate {
23 public:
24 // Class that hosts the message center.
25 class ASH_EXPORT Host {
26 public:
27 // Called when the notification list has changed. |new_notification| will
28 // be true if a notification was added or updated.
29 virtual void MessageCenterChanged(bool new_notification) = 0;
30
31 protected:
32 virtual ~Host() {}
33 };
34
35 class ASH_EXPORT Delegate {
36 public:
37 // Called when the notification associated with |notification_id| is
38 // removed (i.e. closed by the user).
39 virtual void NotificationRemoved(const std::string& notifcation_id) = 0;
40
41 // Request to disable the extension associated with |notification_id|.
42 virtual void DisableExtension(const std::string& notifcation_id) = 0;
43
44 // Request to disable notifications from the source of |notification_id|.
45 virtual void DisableNotificationsFromSource(
46 const std::string& notifcation_id) = 0;
47
48 // Request to show the notification settings (|notification_id| is used
49 // to identify the requesting browser context).
50 virtual void ShowSettings(const std::string& notifcation_id) = 0;
51
52 // Called when the notification body is clicked on.
53 virtual void OnClicked(const std::string& notifcation_id) = 0;
54
55 protected:
56 virtual ~Delegate() {}
57 };
58
59 // |host| is expected to manage any notification bubbles. It may be NULL.
60 explicit MessageCenter(Host* host);
61
62 virtual ~MessageCenter();
63
64 // Called once to set the delegate.
65 void SetDelegate(Delegate* delegate);
66
67 // Informs the notification list whether the message center is visible.
68 // This affects whether or not a message has been "read".
69 void SetMessageCenterVisible(bool visible);
70
71 // Accessors to notification_list_
72 size_t NotificationCount() const;
73 size_t UnreadNotificationCount() const;
74 bool HasPopupNotifications() const;
75
76 // Adds a new notification. |id| is a unique identifier, used to update or
77 // remove notifications. |title| and |meesage| describe the notification text.
78 // Use SetNotificationImage to set the icon image. If |extension_id| is
79 // provided then 'Disable extension' will appear in a dropdown menu and the
80 // id will be used to disable notifications from the extension. Otherwise if
81 // |display_source| is provided, a menu item showing the source and allowing
82 // notifications from that source to be disabled will be shown. All actual
83 // disabling is handled by the Delegate.
84 void AddNotification(const std::string& id,
85 const string16& title,
86 const string16& message,
87 const string16& display_source,
88 const std::string& extension_id);
89
90 // Updates an existing notification with id = old_id and set its id to new_id.
91 void UpdateNotification(const std::string& old_id,
92 const std::string& new_id,
93 const string16& title,
94 const string16& message);
95
96 // Removes an existing notification.
97 void RemoveNotification(const std::string& id);
98
99 // Sets the notification image.
100 void SetNotificationImage(const std::string& id,
101 const gfx::ImageSkia& image);
102
103 WebNotificationList* notification_list() { return notification_list_.get(); }
104
105 // Overridden from WebNotificationList::Delegate.
106 virtual void SendRemoveNotification(const std::string& id) OVERRIDE;
107 virtual void SendRemoveAllNotifications() OVERRIDE;
108 virtual void DisableNotificationByExtension(const std::string& id) OVERRIDE;
109 virtual void DisableNotificationByUrl(const std::string& id) OVERRIDE;
110 virtual void ShowNotificationSettings(const std::string& id) OVERRIDE;
111 virtual void OnNotificationClicked(const std::string& id) OVERRIDE;
112 virtual message_center::WebNotificationList* GetNotificationList() OVERRIDE;
113
114 private:
115 scoped_ptr<WebNotificationList> notification_list_;
116 Host* host_;
117 Delegate* delegate_;
118
119 DISALLOW_COPY_AND_ASSIGN(MessageCenter);
120 };
121
122 } // namespace message_center
123
124 #endif // ASH_SYSTEM_WEB_NOTIFICATION_MESSAGE_CENTER_H_
OLDNEW
« no previous file with comments | « ash/system/tray/tray_notification_view.cc ('k') | ash/system/web_notification/message_center.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698