summaryrefslogtreecommitdiffstats
path: root/ui/message_center/notification_list.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ui/message_center/notification_list.cc')
-rw-r--r--ui/message_center/notification_list.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/ui/message_center/notification_list.cc b/ui/message_center/notification_list.cc
index d92051a7e..9425454 100644
--- a/ui/message_center/notification_list.cc
+++ b/ui/message_center/notification_list.cc
@@ -261,6 +261,32 @@ void NotificationList::MarkPopupsAsShown(int priority) {
iter->shown_as_popup = true;
}
+void NotificationList::MarkSinglePopupAsShown(const std::string& id) {
+ Notifications::iterator iter;
+ if (!GetNotification(id, &iter))
+ return;
+
+ if (iter->shown_as_popup)
+ return;
+
+ // Moves the item to the beginning of the already-shown items.
+ Notification notification = *iter;
+ notification.shown_as_popup = true;
+ notifications_[notification.priority].erase(iter);
+ for (Notifications::iterator iter2 =
+ notifications_[notification.priority].begin();
+ iter2 != notifications_[notification.priority].end(); iter2++) {
+ if (iter2->shown_as_popup) {
+ notifications_[notification.priority].insert(iter2, notification);
+ return;
+ }
+ }
+
+ // No notifications are already shown as popup, so just re-adding at the end
+ // of the list.
+ notifications_[notification.priority].push_back(notification);
+}
+
void NotificationList::SetQuietMode(bool quiet_mode) {
SetQuietModeInternal(quiet_mode);
quiet_mode_timer_.reset();