| Index: ash/system/web_notification/web_notification_tray.cc
|
| diff --git a/ash/system/web_notification/web_notification_tray.cc b/ash/system/web_notification/web_notification_tray.cc
|
| index 5e7822fbb8d3c063863e94884f5916ff799a8a78..f079d53cf2dd70ce2c8b383e1c98dbfa81993c5e 100644
|
| --- a/ash/system/web_notification/web_notification_tray.cc
|
| +++ b/ash/system/web_notification/web_notification_tray.cc
|
| @@ -83,7 +83,8 @@ WebNotificationTray::WebNotificationTray(
|
| : internal::TrayBackgroundView(status_area_widget),
|
| button_(NULL),
|
| show_message_center_on_unlock_(false) {
|
| - message_center_.reset(new message_center::MessageCenter(this));
|
| + message_center_ = message_center::MessageCenter::GetInstance();
|
| + message_center_->AddObserver(this);
|
| button_ = new views::ImageButton(this);
|
| button_->set_triggerable_event_flags(
|
| ui::EF_LEFT_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON);
|
| @@ -92,8 +93,8 @@ WebNotificationTray::WebNotificationTray(
|
| }
|
|
|
| WebNotificationTray::~WebNotificationTray() {
|
| - // message_center_ has a weak pointer to this; destroy it early.
|
| - message_center_.reset();
|
| + // Ensure the message center doesn't notify a destroyed object.
|
| + message_center_->RemoveObserver(this);
|
| // Release any child views that might have back pointers before ~View().
|
| message_center_bubble_.reset();
|
| popup_bubble_.reset();
|
| @@ -116,7 +117,7 @@ void WebNotificationTray::ShowMessageCenterBubble() {
|
| UpdateTray();
|
| HidePopupBubble();
|
| message_center::MessageCenterBubble* bubble =
|
| - new message_center::MessageCenterBubble(message_center_.get());
|
| + new message_center::MessageCenterBubble(message_center_);
|
| message_center_bubble_.reset(
|
| new internal::WebNotificationBubbleWrapper(this, bubble));
|
|
|
| @@ -156,7 +157,7 @@ void WebNotificationTray::ShowPopupBubble() {
|
| popup_bubble_.reset(
|
| new internal::WebNotificationBubbleWrapper(
|
| this, new message_center::MessagePopupBubble(
|
| - message_center_.get())));
|
| + message_center_)));
|
| }
|
| }
|
|
|
| @@ -294,7 +295,7 @@ void WebNotificationTray::HideBubble(const views::TrayBubbleView* bubble_view) {
|
| HideBubbleWithView(bubble_view);
|
| }
|
|
|
| -void WebNotificationTray::MessageCenterChanged(bool new_notification) {
|
| +void WebNotificationTray::OnMessageCenterChanged(bool new_notification) {
|
| if (message_center_bubble()) {
|
| if (message_center_->NotificationCount() == 0)
|
| HideMessageCenterBubble();
|
|
|