| Index: ui/message_center/message_view.cc
|
| diff --git a/ui/message_center/message_view.cc b/ui/message_center/message_view.cc
|
| index 27535b74c1d54e27c9cdf0e5283cc3e019407858..4bb81d1f4d80a322fd0b9f8fc915f00c57bf1f7a 100644
|
| --- a/ui/message_center/message_view.cc
|
| +++ b/ui/message_center/message_view.cc
|
| @@ -144,20 +144,23 @@ class WebNotificationMenuModel : public ui::SimpleMenuModel,
|
| public ui::SimpleMenuModel::Delegate {
|
| public:
|
| WebNotificationMenuModel(NotificationList::Delegate* list_delegate,
|
| - const Notification& notification)
|
| + const std::string& notification_id,
|
| + const string16& display_source,
|
| + const std::string& extension_id)
|
| : ALLOW_THIS_IN_INITIALIZER_LIST(ui::SimpleMenuModel(this)),
|
| list_delegate_(list_delegate),
|
| - notification_(notification) {
|
| + notification_id_(notification_id),
|
| + display_source_(display_source) {
|
| // Add 'disable notifications' menu item.
|
| - if (!notification.extension_id.empty()) {
|
| + if (!extension_id.empty()) {
|
| AddItem(kToggleExtensionCommand,
|
| GetLabelForCommandId(kToggleExtensionCommand));
|
| - } else if (!notification.display_source.empty()) {
|
| + } else if (!display_source.empty()) {
|
| AddItem(kTogglePermissionCommand,
|
| GetLabelForCommandId(kTogglePermissionCommand));
|
| }
|
| // Add settings menu item.
|
| - if (!notification.display_source.empty()) {
|
| + if (!display_source.empty()) {
|
| AddItem(kShowSettingsCommand,
|
| GetLabelForCommandId(kShowSettingsCommand));
|
| }
|
| @@ -173,7 +176,7 @@ class WebNotificationMenuModel : public ui::SimpleMenuModel,
|
| return l10n_util::GetStringUTF16(IDS_MESSAGE_CENTER_EXTENSIONS_DISABLE);
|
| case kTogglePermissionCommand:
|
| return l10n_util::GetStringFUTF16(IDS_MESSAGE_CENTER_SITE_DISABLE,
|
| - notification_.display_source);
|
| + display_source_);
|
| case kShowSettingsCommand:
|
| return l10n_util::GetStringUTF16(IDS_MESSAGE_CENTER_SETTINGS);
|
| default:
|
| @@ -200,13 +203,13 @@ class WebNotificationMenuModel : public ui::SimpleMenuModel,
|
| virtual void ExecuteCommand(int command_id) OVERRIDE {
|
| switch (command_id) {
|
| case kToggleExtensionCommand:
|
| - list_delegate_->DisableNotificationByExtension(notification_.id);
|
| + list_delegate_->DisableNotificationByExtension(notification_id_);
|
| break;
|
| case kTogglePermissionCommand:
|
| - list_delegate_->DisableNotificationByUrl(notification_.id);
|
| + list_delegate_->DisableNotificationByUrl(notification_id_);
|
| break;
|
| case kShowSettingsCommand:
|
| - list_delegate_->ShowNotificationSettings(notification_.id);
|
| + list_delegate_->ShowNotificationSettings(notification_id_);
|
| break;
|
| default:
|
| NOTREACHED();
|
| @@ -214,17 +217,19 @@ class WebNotificationMenuModel : public ui::SimpleMenuModel,
|
| }
|
|
|
| private:
|
| - NotificationList::Delegate* list_delegate_;
|
| - Notification notification_;
|
| + NotificationList::Delegate* list_delegate_; // Weak, global MessageCenter
|
| + std::string notification_id_;
|
| + string16 display_source_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(WebNotificationMenuModel);
|
| };
|
|
|
| -MessageView::MessageView(
|
| - NotificationList::Delegate* list_delegate,
|
| - const Notification& notification)
|
| +MessageView::MessageView(NotificationList::Delegate* list_delegate,
|
| + const Notification& notification)
|
| : list_delegate_(list_delegate),
|
| - notification_(notification),
|
| + notification_id_(notification.id()),
|
| + display_source_(notification.display_source()),
|
| + extension_id_(notification.extension_id()),
|
| scroller_(NULL) {
|
| ControlButton *close = new ControlButton(this);
|
| close->SetPadding(-kCloseIconRightPadding, kCloseIconTopPadding);
|
| @@ -245,13 +250,13 @@ bool MessageView::OnMousePressed(const ui::MouseEvent& event) {
|
| ShowMenu(event.location());
|
| return true;
|
| }
|
| - list_delegate_->OnNotificationClicked(notification_.id);
|
| + list_delegate_->OnNotificationClicked(notification_id_);
|
| return true;
|
| }
|
|
|
| void MessageView::OnGestureEvent(ui::GestureEvent* event) {
|
| if (event->type() == ui::ET_GESTURE_TAP) {
|
| - list_delegate_->OnNotificationClicked(notification_.id);
|
| + list_delegate_->OnNotificationClicked(notification_id_);
|
| event->SetHandled();
|
| return;
|
| }
|
| @@ -278,11 +283,14 @@ void MessageView::OnGestureEvent(ui::GestureEvent* event) {
|
| void MessageView::ButtonPressed(views::Button* sender,
|
| const ui::Event& event) {
|
| if (sender == close_button())
|
| - list_delegate_->SendRemoveNotification(notification_.id);
|
| + list_delegate_->SendRemoveNotification(notification_id_);
|
| }
|
|
|
| void MessageView::ShowMenu(gfx::Point screen_location) {
|
| - WebNotificationMenuModel menu_model(list_delegate_, notification_);
|
| + WebNotificationMenuModel menu_model(list_delegate_,
|
| + notification_id_,
|
| + display_source_,
|
| + extension_id_);
|
| if (menu_model.GetItemCount() == 0)
|
| return;
|
|
|
| @@ -299,7 +307,7 @@ void MessageView::ShowMenu(gfx::Point screen_location) {
|
| }
|
|
|
| void MessageView::OnSlideOut() {
|
| - list_delegate_->SendRemoveNotification(notification_.id);
|
| + list_delegate_->SendRemoveNotification(notification_id_);
|
| }
|
|
|
| } // namespace message_center
|
|
|