| Index: ui/message_center/message_center_impl.cc
|
| diff --git a/ui/message_center/message_center_impl.cc b/ui/message_center/message_center_impl.cc
|
| index c5e7144ba65c72eb4564eeca7875be722a559b23..949e0d055e9a1e1f9722bcab01c1a31473ea3d1f 100644
|
| --- a/ui/message_center/message_center_impl.cc
|
| +++ b/ui/message_center/message_center_impl.cc
|
| @@ -82,13 +82,20 @@ void MessageCenterImpl::AddNotification(
|
| const string16& message,
|
| const string16& display_source,
|
| const std::string& extension_id,
|
| - const base::DictionaryValue* optional_fields) {
|
| + const base::DictionaryValue* optional_fields,
|
| + NotificationDelegate* delegate) {
|
| // Sometimes the notification can be added with the same id and the
|
| // |notification_list| will replace the notification instead of adding new.
|
| // This is essentially an update rather than addition.
|
| bool already_exists = notification_list_->HasNotification(id);
|
| - notification_list_->AddNotification(type, id, title, message, display_source,
|
| - extension_id, optional_fields);
|
| + notification_list_->AddNotification(type,
|
| + id,
|
| + title,
|
| + message,
|
| + display_source,
|
| + extension_id,
|
| + optional_fields,
|
| + delegate);
|
| if (already_exists) {
|
| FOR_EACH_OBSERVER(MessageCenterObserver, observer_list_,
|
| OnNotificationUpdated(id));
|
| @@ -229,8 +236,12 @@ void MessageCenterImpl::ClickOnNotification(const std::string& id) {
|
| return;
|
| if (HasPopupNotifications())
|
| MarkSinglePopupAsShown(id, true);
|
| - FOR_EACH_OBSERVER(MessageCenterObserver, observer_list_,
|
| - OnNotificationClicked(id));
|
| + NotificationDelegate* delegate =
|
| + notification_list_->GetNotificationDelegate(id);
|
| + if (delegate)
|
| + delegate->Click();
|
| + FOR_EACH_OBSERVER(
|
| + MessageCenterObserver, observer_list_, OnNotificationClicked(id));
|
| }
|
|
|
| void MessageCenterImpl::ClickOnNotificationButton(const std::string& id,
|
| @@ -239,7 +250,12 @@ void MessageCenterImpl::ClickOnNotificationButton(const std::string& id,
|
| return;
|
| if (HasPopupNotifications())
|
| MarkSinglePopupAsShown(id, true);
|
| - FOR_EACH_OBSERVER(MessageCenterObserver, observer_list_,
|
| + NotificationDelegate* delegate =
|
| + notification_list_->GetNotificationDelegate(id);
|
| + if (delegate)
|
| + delegate->ButtonClick(button_index);
|
| + FOR_EACH_OBSERVER(MessageCenterObserver,
|
| + observer_list_,
|
| OnNotificationButtonClicked(id, button_index));
|
| }
|
|
|
| @@ -258,8 +274,12 @@ void MessageCenterImpl::DisplayedNotification(const std::string& id) {
|
|
|
| if (HasPopupNotifications())
|
| notification_list_->MarkSinglePopupAsDisplayed(id);
|
| - FOR_EACH_OBSERVER(MessageCenterObserver, observer_list_,
|
| - OnNotificationDisplayed(id));
|
| + NotificationDelegate* delegate =
|
| + notification_list_->GetNotificationDelegate(id);
|
| + if (delegate)
|
| + delegate->Display();
|
| + FOR_EACH_OBSERVER(
|
| + MessageCenterObserver, observer_list_, OnNotificationDisplayed(id));
|
| }
|
|
|
| void MessageCenterImpl::SetQuietMode(bool in_quiet_mode) {
|
|
|