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

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

Issue 10855079: Fix Ash notification updates (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update tests. Created 8 years, 4 months 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
« no previous file with comments | « no previous file | ash/system/web_notification/web_notification_tray.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 ASH_SYSTEM_NOTIFICATION_WEB_NOTIFICATION_TRAY_H_ 5 #ifndef ASH_SYSTEM_NOTIFICATION_WEB_NOTIFICATION_TRAY_H_
6 #define ASH_SYSTEM_NOTIFICATION_WEB_NOTIFICATION_TRAY_H_ 6 #define ASH_SYSTEM_NOTIFICATION_WEB_NOTIFICATION_TRAY_H_
7 7
8 #include "ash/ash_export.h" 8 #include "ash/ash_export.h"
9 #include "ash/system/tray/tray_background_view.h" 9 #include "ash/system/tray/tray_background_view.h"
10 #include "ash/system/user/login_status.h" 10 #include "ash/system/user/login_status.h"
11 #include "base/gtest_prod_util.h" 11 #include "base/gtest_prod_util.h"
12 #include "ui/aura/event_filter.h" 12 #include "ui/aura/event_filter.h"
13 13
14 namespace aura { 14 namespace aura {
15 class LocatedEvent; 15 class LocatedEvent;
16 } 16 }
17 17
18 namespace gfx { 18 namespace gfx {
19 class ImageSkia; 19 class ImageSkia;
20 } 20 }
21 21
22 namespace views { 22 namespace views {
23 class Label; 23 class Label;
24 } 24 }
25 25
26 namespace ash { 26 namespace ash {
27 27
28 namespace internal { 28 namespace internal {
29 class StatusAreaWidget; 29 class StatusAreaWidget;
30 class WebNotificationButtonView;
30 class WebNotificationList; 31 class WebNotificationList;
32 class WebNotificationMenuModel;
33 class WebNotificationView;
31 } 34 }
32 35
33 // Status area tray for showing browser and app notifications. The client 36 // Status area tray for showing browser and app notifications. The client
34 // (e.g. Chrome) calls [Add|Remove|Update]Notification to create and update 37 // (e.g. Chrome) calls [Add|Remove|Update]Notification to create and update
35 // notifications in the tray. It can also implement Delegate to receive 38 // notifications in the tray. It can also implement Delegate to receive
36 // callbacks when a notification is removed (closed), clicked on, or a menu 39 // callbacks when a notification is removed (closed), clicked on, or a menu
37 // item is triggered. 40 // item is triggered.
38 // 41 //
39 // Note: These are not related to system notifications (i.e NotificationView 42 // Note: These are not related to system notifications (i.e NotificationView
40 // generated by SystemTrayItem). Visibility of one notification type or other 43 // generated by SystemTrayItem). Visibility of one notification type or other
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 // id will be used to disable notifications from the extension. Otherwise if 81 // id will be used to disable notifications from the extension. Otherwise if
79 // |display_source| is provided, a menu item showing the source and allowing 82 // |display_source| is provided, a menu item showing the source and allowing
80 // notifications from that source to be disabled will be shown. All actual 83 // notifications from that source to be disabled will be shown. All actual
81 // disabling is handled by the Delegate. 84 // disabling is handled by the Delegate.
82 void AddNotification(const std::string& id, 85 void AddNotification(const std::string& id,
83 const string16& title, 86 const string16& title,
84 const string16& message, 87 const string16& message,
85 const string16& display_source, 88 const string16& display_source,
86 const std::string& extension_id); 89 const std::string& extension_id);
87 90
88 // Update an existing notification. 91 // Update an existing notification with id = old_id and set its id to new_id.
89 void UpdateNotification(const std::string& id, 92 void UpdateNotification(const std::string& old_id,
93 const std::string& new_id,
90 const string16& title, 94 const string16& title,
91 const string16& message); 95 const string16& message);
92 96
93 // Remove an existing notification and notify the delegate. 97 // Remove an existing notification.
94 void RemoveNotification(const std::string& id); 98 void RemoveNotification(const std::string& id);
95 99
96 // Remove all notifications and notify the delegate.
97 void RemoveAllNotifications();
98
99 // Set the notification image. 100 // Set the notification image.
100 void SetNotificationImage(const std::string& id, 101 void SetNotificationImage(const std::string& id,
101 const gfx::ImageSkia& image); 102 const gfx::ImageSkia& image);
102 103
103 // Disable all notifications matching notification |id|.
104 void DisableByExtension(const std::string& id);
105 void DisableByUrl(const std::string& id);
106
107 // Show the message center bubble. Should only be called by StatusAreaWidget. 104 // Show the message center bubble. Should only be called by StatusAreaWidget.
108 void ShowMessageCenterBubble(); 105 void ShowMessageCenterBubble();
109 106
110 // Hide the message center bubble. Should only be called by StatusAreaWidget. 107 // Hide the message center bubble. Should only be called by StatusAreaWidget.
111 void HideMessageCenterBubble(); 108 void HideMessageCenterBubble();
112 109
113 // Hide the message center bubble if there are no notifications.
114 void HideMessageCenterBubbleIfEmpty();
115
116 // Show a single notification bubble for the most recent notification. 110 // Show a single notification bubble for the most recent notification.
117 void ShowNotificationBubble(); 111 void ShowNotificationBubble();
118 112
119 // Hide the single notification bubble if visible. 113 // Hide the single notification bubble if visible.
120 void HideNotificationBubble(); 114 void HideNotificationBubble();
121 115
122 // Updates tray visibility login status of the system changes. 116 // Updates tray visibility login status of the system changes.
123 void UpdateAfterLoginStatusChange(user::LoginStatus login_status); 117 void UpdateAfterLoginStatusChange(user::LoginStatus login_status);
124 118
119 // Overridden from TrayBackgroundView.
120 virtual void SetShelfAlignment(ShelfAlignment alignment) OVERRIDE;
121
122 // Overridden from internal::ActionableView.
123 virtual bool PerformAction(const views::Event& event) OVERRIDE;
124
125 protected:
126 // Send a remove request to the delegate.
127 void SendRemoveNotification(const std::string& id);
128
129 // Send a remove request for all notifications to the delegate.
130 void SendRemoveAllNotifications();
131
132 // Disable all notifications matching notification |id|.
133 void DisableByExtension(const std::string& id);
134 void DisableByUrl(const std::string& id);
135
125 // Request the Delegate to the settings dialog. 136 // Request the Delegate to the settings dialog.
126 void ShowSettings(const std::string& id); 137 void ShowSettings(const std::string& id);
127 138
128 // Called when a notification is clicked on. Event is passed to the Delegate. 139 // Called when a notification is clicked on. Event is passed to the Delegate.
129 void OnClicked(const std::string& id); 140 void OnClicked(const std::string& id);
130 141
131 // Overridden from TrayBackgroundView.
132 virtual void SetShelfAlignment(ShelfAlignment alignment) OVERRIDE;
133
134 // Overridden from internal::ActionableView.
135 virtual bool PerformAction(const views::Event& event) OVERRIDE;
136
137 private: 142 private:
138 class Bubble; 143 class Bubble;
144 friend class internal::WebNotificationButtonView;
145 friend class internal::WebNotificationMenuModel;
146 friend class internal::WebNotificationView;
139 FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayTest, WebNotifications); 147 FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayTest, WebNotifications);
148 FRIEND_TEST_ALL_PREFIXES(WebNotificationTrayTest, WebNotificationBubble);
140 149
141 int GetNotificationCount() const; 150 int GetNotificationCount() const;
142 void UpdateTray(); 151 void UpdateTray();
143 void UpdateTrayAndBubble(); 152 void UpdateTrayAndBubble();
144 void HideBubble(Bubble* bubble); 153 void HideBubble(Bubble* bubble);
154 bool HasNotificationForTest(const std::string& id) const;
145 155
146 const internal::WebNotificationList* notification_list() const { 156 const internal::WebNotificationList* notification_list() const {
147 return notification_list_.get(); 157 return notification_list_.get();
148 } 158 }
149 Bubble* message_center_bubble() const { return message_center_bubble_.get(); } 159 Bubble* message_center_bubble() const { return message_center_bubble_.get(); }
150 Bubble* notification_bubble() const { return notification_bubble_.get(); } 160 Bubble* notification_bubble() const { return notification_bubble_.get(); }
151 161
152 scoped_ptr<internal::WebNotificationList> notification_list_; 162 scoped_ptr<internal::WebNotificationList> notification_list_;
153 scoped_ptr<Bubble> message_center_bubble_; 163 scoped_ptr<Bubble> message_center_bubble_;
154 scoped_ptr<Bubble> notification_bubble_; 164 scoped_ptr<Bubble> notification_bubble_;
155 views::Label* count_label_; 165 views::Label* count_label_;
156 Delegate* delegate_; 166 Delegate* delegate_;
157 bool show_message_center_on_unlock_; 167 bool show_message_center_on_unlock_;
158 168
159 DISALLOW_COPY_AND_ASSIGN(WebNotificationTray); 169 DISALLOW_COPY_AND_ASSIGN(WebNotificationTray);
160 }; 170 };
161 171
162 } // namespace ash 172 } // namespace ash
163 173
164 #endif // ASH_SYSTEM_NOTIFICATION_WEB_NOTIFICATION_TRAY_H_ 174 #endif // ASH_SYSTEM_NOTIFICATION_WEB_NOTIFICATION_TRAY_H_
OLDNEW
« no previous file with comments | « no previous file | ash/system/web_notification/web_notification_tray.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698