diff options
Diffstat (limited to 'chrome')
6 files changed, 91 insertions, 136 deletions
diff --git a/chrome/browser/gtk/notifications/balloon_view_gtk.cc b/chrome/browser/gtk/notifications/balloon_view_gtk.cc index 038d335..ea9d9ae 100644 --- a/chrome/browser/gtk/notifications/balloon_view_gtk.cc +++ b/chrome/browser/gtk/notifications/balloon_view_gtk.cc @@ -25,10 +25,10 @@ #include "chrome/browser/gtk/info_bubble_gtk.h" #include "chrome/browser/gtk/menu_gtk.h" #include "chrome/browser/gtk/notifications/balloon_view_host_gtk.h" -#include "chrome/browser/gtk/notifications/notification_options_menu_model.h" #include "chrome/browser/gtk/rounded_window.h" #include "chrome/browser/notifications/balloon.h" #include "chrome/browser/notifications/desktop_notification_service.h" +#include "chrome/browser/notifications/notification_options_menu_model.h" #include "chrome/browser/profile.h" #include "chrome/browser/renderer_host/render_view_host.h" #include "chrome/browser/renderer_host/render_widget_host_view.h" diff --git a/chrome/browser/gtk/notifications/notification_options_menu_model.cc b/chrome/browser/gtk/notifications/notification_options_menu_model.cc deleted file mode 100644 index 9b5225a..0000000 --- a/chrome/browser/gtk/notifications/notification_options_menu_model.cc +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "app/l10n_util.h" -#include "base/utf_string_conversions.h" -#include "chrome/browser/gtk/notifications/notification_options_menu_model.h" -#include "chrome/browser/notifications/balloon.h" -#include "chrome/browser/notifications/desktop_notification_service.h" -#include "chrome/browser/profile.h" -#include "grit/generated_resources.h" -#include "grit/theme_resources.h" - -using menus::MenuModel; - -NotificationOptionsMenuModel::NotificationOptionsMenuModel(Balloon* balloon) - : balloon_(balloon) { -} - -NotificationOptionsMenuModel::~NotificationOptionsMenuModel() { -} - -bool NotificationOptionsMenuModel::HasIcons() const { - return false; -} - -int NotificationOptionsMenuModel::GetItemCount() const { - return 1; -} - -MenuModel::ItemType NotificationOptionsMenuModel::GetTypeAt(int index) const { - return MenuModel::TYPE_COMMAND; -} - -int NotificationOptionsMenuModel::GetCommandIdAt(int index) const { - return index; -} - -string16 NotificationOptionsMenuModel::GetLabelAt(int index) const { - DCHECK_EQ(0, index); - - return l10n_util::GetStringFUTF16(IDS_NOTIFICATION_BALLOON_REVOKE_MESSAGE, - WideToUTF16(balloon_->notification().display_source())); -} - -bool NotificationOptionsMenuModel::IsLabelDynamicAt(int index) const { - return false; -} - -bool NotificationOptionsMenuModel::GetAcceleratorAt( - int index, menus::Accelerator* accelerator) const { - return false; -} - -bool NotificationOptionsMenuModel::IsItemCheckedAt(int index) const { - return false; -} - -int NotificationOptionsMenuModel::GetGroupIdAt(int index) const { - return 0; -} - -bool NotificationOptionsMenuModel::GetIconAt(int index, SkBitmap* icon) const { - return false; -} - -menus::ButtonMenuItemModel* NotificationOptionsMenuModel::GetButtonMenuItemAt( - int index) const { - return NULL; -} - -bool NotificationOptionsMenuModel::IsEnabledAt(int index) const { - return true; -} - -MenuModel* NotificationOptionsMenuModel::GetSubmenuModelAt(int index) const { - return NULL; -} - -void NotificationOptionsMenuModel::HighlightChangedTo(int index) { -} - -void NotificationOptionsMenuModel::ActivatedAt(int index) { - DCHECK_EQ(0, index); - - DesktopNotificationService* service = - balloon_->profile()->GetDesktopNotificationService(); - - service->DenyPermission(balloon_->notification().origin_url()); -} diff --git a/chrome/browser/gtk/notifications/notification_options_menu_model.h b/chrome/browser/gtk/notifications/notification_options_menu_model.h deleted file mode 100644 index a88adb7..0000000 --- a/chrome/browser/gtk/notifications/notification_options_menu_model.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_GTK_NOTIFICATIONS_NOTIFICATION_OPTIONS_MENU_MODEL_H_ -#define CHROME_BROWSER_GTK_NOTIFICATIONS_NOTIFICATION_OPTIONS_MENU_MODEL_H_ - -#include "app/menus/menu_model.h" - -class Balloon; - -// Model for the options menu on the notification balloon. -class NotificationOptionsMenuModel : public menus::MenuModel { - public: - explicit NotificationOptionsMenuModel(Balloon* balloon); - ~NotificationOptionsMenuModel(); - - // menus::MenuModel methods. - virtual bool HasIcons() const; - virtual int GetItemCount() const; - virtual ItemType GetTypeAt(int index) const; - virtual int GetCommandIdAt(int index) const; - virtual string16 GetLabelAt(int index) const; - virtual bool IsLabelDynamicAt(int index) const; - virtual bool GetAcceleratorAt(int index, - menus::Accelerator* accelerator) const; - virtual bool IsItemCheckedAt(int index) const; - virtual int GetGroupIdAt(int index) const; - virtual bool GetIconAt(int index, SkBitmap* icon) const; - virtual menus::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const; - virtual bool IsEnabledAt(int index) const; - virtual MenuModel* GetSubmenuModelAt(int index) const; - virtual void HighlightChangedTo(int index); - virtual void ActivatedAt(int index); - - private: - // Non-owned pointer to the balloon involved. - Balloon* balloon_; - - DISALLOW_COPY_AND_ASSIGN(NotificationOptionsMenuModel); -}; - -#endif // CHROME_BROWSER_GTK_NOTIFICATIONS_NOTIFICATION_OPTIONS_MENU_MODEL_H_ diff --git a/chrome/browser/notifications/notification_options_menu_model.cc b/chrome/browser/notifications/notification_options_menu_model.cc new file mode 100644 index 0000000..d89c09c --- /dev/null +++ b/chrome/browser/notifications/notification_options_menu_model.cc @@ -0,0 +1,58 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/notifications/notification_options_menu_model.h" + +#include "app/l10n_util.h" +#include "base/compiler_specific.h" +#include "base/logging.h" +#include "base/utf_string_conversions.h" +#include "chrome/browser/notifications/desktop_notification_service.h" +#include "chrome/browser/profile.h" +#include "grit/generated_resources.h" + +static const int kRevokePermissionCommand = 0; + +NotificationOptionsMenuModel::NotificationOptionsMenuModel(Balloon* balloon) + : ALLOW_THIS_IN_INITIALIZER_LIST(menus::SimpleMenuModel(this)), + balloon_(balloon) { + const string16 label_text = WideToUTF16Hack(l10n_util::GetStringF( + IDS_NOTIFICATION_BALLOON_REVOKE_MESSAGE, + balloon->notification().display_source())); + AddItem(kRevokePermissionCommand, label_text); +} + +NotificationOptionsMenuModel::~NotificationOptionsMenuModel() { +} + +bool NotificationOptionsMenuModel::IsCommandIdChecked(int /* command_id */) + const { + // Nothing in the menu is checked. + return false; +} + +bool NotificationOptionsMenuModel::IsCommandIdEnabled(int /* command_id */) + const { + // All the menu options are always enabled. + return true; +} + +bool NotificationOptionsMenuModel::GetAcceleratorForCommandId( + int /* command_id */, menus::Accelerator* /* accelerator */) { + // Current no accelerators. + return false; +} + +void NotificationOptionsMenuModel::ExecuteCommand(int command_id) { + DesktopNotificationService* service = + balloon_->profile()->GetDesktopNotificationService(); + switch (command_id) { + case kRevokePermissionCommand: + service->DenyPermission(balloon_->notification().origin_url()); + break; + default: + NOTREACHED(); + break; + } +} diff --git a/chrome/browser/notifications/notification_options_menu_model.h b/chrome/browser/notifications/notification_options_menu_model.h new file mode 100644 index 0000000..751c799 --- /dev/null +++ b/chrome/browser/notifications/notification_options_menu_model.h @@ -0,0 +1,30 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_OPTIONS_MENU_MODEL_H_ +#define CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_OPTIONS_MENU_MODEL_H_ + +#include "app/menus/simple_menu_model.h" +#include "chrome/browser/notifications/balloon.h" + +class NotificationOptionsMenuModel : public menus::SimpleMenuModel, + public menus::SimpleMenuModel::Delegate { + public: + explicit NotificationOptionsMenuModel(Balloon* balloon); + virtual ~NotificationOptionsMenuModel(); + + // Overridden from menus::SimpleMenuModel::Delegate: + virtual bool IsCommandIdChecked(int command_id) const; + virtual bool IsCommandIdEnabled(int command_id) const; + virtual bool GetAcceleratorForCommandId(int command_id, + menus::Accelerator* accelerator); + virtual void ExecuteCommand(int command_id); + + private: + Balloon* balloon_; // Not owned. + + DISALLOW_COPY_AND_ASSIGN(NotificationOptionsMenuModel); +}; + +#endif // CHROME_BROWSER_NOTIFICATIONS_NOTIFICATION_OPTIONS_MENU_MODEL_H_ diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 05a38da..4b5959d 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1554,8 +1554,6 @@ 'browser/gtk/notifications/balloon_view_gtk.h', 'browser/gtk/notifications/balloon_view_host_gtk.cc', 'browser/gtk/notifications/balloon_view_host_gtk.h', - 'browser/gtk/notifications/notification_options_menu_model.cc', - 'browser/gtk/notifications/notification_options_menu_model.h', 'browser/gtk/overflow_button.cc', 'browser/gtk/overflow_button.h', 'browser/gtk/options/advanced_contents_gtk.cc', @@ -1935,6 +1933,8 @@ 'browser/notifications/notification_exceptions_table_model.h', 'browser/notifications/notification_object_proxy.cc', 'browser/notifications/notification_object_proxy.h', + 'browser/notifications/notification_options_menu_model.cc', + 'browser/notifications/notification_options_menu_model.h', 'browser/notifications/notification_ui_manager.cc', 'browser/notifications/notification_ui_manager.h', 'browser/notifications/notifications_prefs_cache.cc', |