| 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..6b5612825906e65da2cfe997f6b280321935a980 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,15 @@ 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)
|
| : list_delegate_(list_delegate),
|
| - notification_(notification),
|
| scroller_(NULL) {
|
| ControlButton *close = new ControlButton(this);
|
| close->SetPadding(-kCloseIconRightPadding, kCloseIconTopPadding);
|
| @@ -240,18 +241,24 @@ MessageView::MessageView() {
|
| MessageView::~MessageView() {
|
| }
|
|
|
| +void MessageView::SetUpView(const Notification& notification) {
|
| +
|
| notification_id_ = notification.id();
|
| + display_source_ = notification.display_source();
|
| + extension_id_ = notification.extension_id();
|
| +}
|
| +
|
| bool MessageView::OnMousePressed(const ui::MouseEvent& event) {
|
| if (event.flags() & ui::EF_RIGHT_MOUSE_BUTTON) {
|
| 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 +285,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 +309,7 @@ void MessageView::ShowMenu(gfx::Point screen_location) {
|
| }
|
|
|
| void MessageView::OnSlideOut() {
|
| - list_delegate_->SendRemoveNotification(notification_.id);
|
| + list_delegate_->SendRemoveNotification(notification_id_);
|
| }
|
|
|
| } // namespace message_center
|
|
|