| Index: ui/message_center/message_center.cc
|
| diff --git a/ui/message_center/message_center.cc b/ui/message_center/message_center.cc
|
| index a5460ee89f424a57417277f9c91e2db8d5a32f4b..0462a03563e61ac78938614b40fc1fcaac5d483e 100644
|
| --- a/ui/message_center/message_center.cc
|
| +++ b/ui/message_center/message_center.cc
|
| @@ -5,23 +5,31 @@
|
| #include "ui/message_center/message_center.h"
|
|
|
| #include "base/logging.h"
|
| +#include "base/memory/singleton.h"
|
| +#include "base/observer_list.h"
|
|
|
| namespace message_center {
|
|
|
| //------------------------------------------------------------------------------
|
|
|
| -MessageCenter::MessageCenter(Host* host)
|
| - : host_(host),
|
| - delegate_(NULL) {
|
| - notification_list_.reset(new NotificationList(this));
|
| +// static
|
| +MessageCenter* MessageCenter::GetInstance() {
|
| + return Singleton<MessageCenter>::get();
|
| }
|
|
|
| MessageCenter::~MessageCenter() {
|
| notification_list_.reset();
|
| }
|
|
|
| +void MessageCenter::AddObserver(Observer* observer) {
|
| + observer_list_.AddObserver(observer);
|
| +}
|
| +
|
| +void MessageCenter::RemoveObserver(Observer* observer) {
|
| + observer_list_.RemoveObserver(observer);
|
| +}
|
| +
|
| void MessageCenter::SetDelegate(Delegate* delegate) {
|
| - DCHECK(!delegate_);
|
| delegate_ = delegate;
|
| }
|
|
|
| @@ -54,8 +62,7 @@ void MessageCenter::AddNotification(
|
| const base::DictionaryValue* optional_fields) {
|
| notification_list_->AddNotification(type, id, title, message, display_source,
|
| extension_id, optional_fields);
|
| - if (host_)
|
| - host_->MessageCenterChanged(true);
|
| + NotifyMessageCenterChanged(true);
|
| }
|
|
|
| void MessageCenter::UpdateNotification(
|
| @@ -66,27 +73,25 @@ void MessageCenter::UpdateNotification(
|
| const base::DictionaryValue* optional_fields) {
|
| notification_list_->UpdateNotificationMessage(
|
| old_id, new_id, title, message, optional_fields);
|
| - if (host_)
|
| - host_->MessageCenterChanged(true);
|
| + NotifyMessageCenterChanged(true);
|
| }
|
|
|
| void MessageCenter::RemoveNotification(const std::string& id) {
|
| if (!notification_list_->RemoveNotification(id))
|
| return;
|
| - if (host_)
|
| - host_->MessageCenterChanged(false);
|
| + NotifyMessageCenterChanged(false);
|
| }
|
|
|
| void MessageCenter::SetNotificationPrimaryIcon(const std::string& id,
|
| const gfx::ImageSkia& image) {
|
| - if (notification_list_->SetNotificationPrimaryIcon(id, image) && host_)
|
| - host_->MessageCenterChanged(true);
|
| + if (notification_list_->SetNotificationPrimaryIcon(id, image))
|
| + NotifyMessageCenterChanged(true);
|
| }
|
|
|
| void MessageCenter::SetNotificationSecondaryIcon(const std::string& id,
|
| const gfx::ImageSkia& image) {
|
| - if (notification_list_->SetNotificationSecondaryIcon(id, image) && host_)
|
| - host_->MessageCenterChanged(true);
|
| + if (notification_list_->SetNotificationSecondaryIcon(id, image))
|
| + NotifyMessageCenterChanged(true);
|
| }
|
|
|
| //------------------------------------------------------------------------------
|
| @@ -138,7 +143,7 @@ void MessageCenter::OnNotificationClicked(const std::string& id) {
|
| }
|
|
|
| void MessageCenter::OnQuietModeChanged(bool quiet_mode) {
|
| - host_->MessageCenterChanged(true);
|
| + NotifyMessageCenterChanged(true);
|
| }
|
|
|
| void MessageCenter::OnButtonClicked(const std::string& id, int button_index) {
|
| @@ -154,4 +159,19 @@ void MessageCenter::Delegate::OnButtonClicked(const std::string& id,
|
| int button_index) {
|
| }
|
|
|
| +//------------------------------------------------------------------------------
|
| +// Private.
|
| +
|
| +MessageCenter::MessageCenter()
|
| + : delegate_(NULL) {
|
| + notification_list_.reset(new NotificationList(this));
|
| +}
|
| +
|
| +void MessageCenter::NotifyMessageCenterChanged(bool new_notification) {
|
| + FOR_EACH_OBSERVER(Observer,
|
| + observer_list_,
|
| + OnMessageCenterChanged(new_notification));
|
| +}
|
| +
|
| +
|
| } // namespace message_center
|
|
|