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

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

Issue 10855113: Show extension settings for extension notifications (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase 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
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 #include "ash/system/web_notification/web_notification_tray.h" 5 #include "ash/system/web_notification/web_notification_tray.h"
6 6
7 #include "ash/system/status_area_widget.h" 7 #include "ash/system/status_area_widget.h"
8 #include "ash/system/tray/system_tray.h" 8 #include "ash/system/tray/system_tray.h"
9 #include "ash/system/tray/tray_bubble_view.h" 9 #include "ash/system/tray/tray_bubble_view.h"
10 #include "ash/system/tray/tray_constants.h" 10 #include "ash/system/tray/tray_constants.h"
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 if (iter == notifications_.end()) 155 if (iter == notifications_.end())
156 return false; 156 return false;
157 EraseNotification(iter); 157 EraseNotification(iter);
158 return true; 158 return true;
159 } 159 }
160 160
161 void RemoveAllNotifications() { 161 void RemoveAllNotifications() {
162 notifications_.clear(); 162 notifications_.clear();
163 } 163 }
164 164
165 void RemoveNotificationsBySource(const std::string& id) { 165 void SendRemoveNotificationsBySource(WebNotificationTray* tray,
166 const std::string& id) {
166 Notifications::iterator source_iter = GetNotification(id); 167 Notifications::iterator source_iter = GetNotification(id);
167 if (source_iter == notifications_.end()) 168 if (source_iter == notifications_.end())
168 return; 169 return;
169 string16 display_source = source_iter->display_source; 170 string16 display_source = source_iter->display_source;
170 for (Notifications::iterator loopiter = notifications_.begin(); 171 for (Notifications::iterator loopiter = notifications_.begin();
171 loopiter != notifications_.end(); ) { 172 loopiter != notifications_.end(); ) {
172 Notifications::iterator curiter = loopiter++; 173 Notifications::iterator curiter = loopiter++;
173 if (curiter->display_source == display_source) 174 if (curiter->display_source == display_source)
174 EraseNotification(curiter); 175 tray->SendRemoveNotification(curiter->id);
175 } 176 }
176 } 177 }
177 178
178 void RemoveNotificationsByExtension(const std::string& id) { 179 void SendRemoveNotificationsByExtension(WebNotificationTray* tray,
180 const std::string& id) {
179 Notifications::iterator source_iter = GetNotification(id); 181 Notifications::iterator source_iter = GetNotification(id);
180 if (source_iter == notifications_.end()) 182 if (source_iter == notifications_.end())
181 return; 183 return;
182 std::string extension_id = source_iter->extension_id; 184 std::string extension_id = source_iter->extension_id;
183 for (Notifications::iterator loopiter = notifications_.begin(); 185 for (Notifications::iterator loopiter = notifications_.begin();
184 loopiter != notifications_.end(); ) { 186 loopiter != notifications_.end(); ) {
185 Notifications::iterator curiter = loopiter++; 187 Notifications::iterator curiter = loopiter++;
186 if (curiter->extension_id == extension_id) 188 if (curiter->extension_id == extension_id)
187 EraseNotification(curiter); 189 tray->SendRemoveNotification(curiter->id);
188 } 190 }
189 } 191 }
190 192
191 bool SetNotificationImage(const std::string& id, 193 bool SetNotificationImage(const std::string& id,
192 const gfx::ImageSkia& image) { 194 const gfx::ImageSkia& image) {
193 Notifications::iterator iter = GetNotification(id); 195 Notifications::iterator iter = GetNotification(id);
194 if (iter == notifications_.end()) 196 if (iter == notifications_.end())
195 return false; 197 return false;
196 iter->image = image; 198 iter->image = image;
197 return true; 199 return true;
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 std::string notification_id = curiter->id; 990 std::string notification_id = curiter->id;
989 // May call RemoveNotification and erase curiter. 991 // May call RemoveNotification and erase curiter.
990 delegate_->NotificationRemoved(notification_id); 992 delegate_->NotificationRemoved(notification_id);
991 } 993 }
992 } 994 }
993 } 995 }
994 996
995 // When we disable notifications, we remove any existing matching 997 // When we disable notifications, we remove any existing matching
996 // notifications to avoid adding complicated UI to re-enable the source. 998 // notifications to avoid adding complicated UI to re-enable the source.
997 void WebNotificationTray::DisableByExtension(const std::string& id) { 999 void WebNotificationTray::DisableByExtension(const std::string& id) {
998 // Will call SendRemoveNotification for each matching notification.
999 notification_list_->RemoveNotificationsByExtension(id);
1000 if (delegate_) 1000 if (delegate_)
1001 delegate_->DisableExtension(id); 1001 delegate_->DisableExtension(id);
1002 // Will call SendRemoveNotification for each matching notification.
1003 notification_list_->SendRemoveNotificationsByExtension(this, id);
1002 } 1004 }
1003 1005
1004 void WebNotificationTray::DisableByUrl(const std::string& id) { 1006 void WebNotificationTray::DisableByUrl(const std::string& id) {
1005 // Will call SendRemoveNotification for each matching notification.
1006 notification_list_->RemoveNotificationsBySource(id);
1007 if (delegate_) 1007 if (delegate_)
1008 delegate_->DisableNotificationsFromSource(id); 1008 delegate_->DisableNotificationsFromSource(id);
1009 // Will call SendRemoveNotification for each matching notification.
1010 notification_list_->SendRemoveNotificationsBySource(this, id);
1009 } 1011 }
1010 1012
1011 bool WebNotificationTray::PerformAction(const ui::Event& event) { 1013 bool WebNotificationTray::PerformAction(const ui::Event& event) {
1012 if (message_center_bubble()) 1014 if (message_center_bubble())
1013 HideMessageCenterBubble(); 1015 HideMessageCenterBubble();
1014 else 1016 else
1015 ShowMessageCenterBubble(); 1017 ShowMessageCenterBubble();
1016 return true; 1018 return true;
1017 } 1019 }
1018 1020
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 } else if (bubble == notification_bubble()) { 1066 } else if (bubble == notification_bubble()) {
1065 HideNotificationBubble(); 1067 HideNotificationBubble();
1066 } 1068 }
1067 } 1069 }
1068 1070
1069 bool WebNotificationTray::HasNotificationForTest(const std::string& id) const { 1071 bool WebNotificationTray::HasNotificationForTest(const std::string& id) const {
1070 return notification_list_->HasNotification(id); 1072 return notification_list_->HasNotification(id);
1071 } 1073 }
1072 1074
1073 } // namespace ash 1075 } // namespace ash
OLDNEW
« no previous file with comments | « ash/system/web_notification/web_notification_tray.h ('k') | chrome/browser/ui/views/ash/balloon_collection_impl_ash.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698