diff options
Diffstat (limited to 'chrome/browser/notifications')
-rw-r--r-- | chrome/browser/notifications/notification_options_menu_model.cc | 58 | ||||
-rw-r--r-- | chrome/browser/notifications/notification_options_menu_model.h | 30 |
2 files changed, 88 insertions, 0 deletions
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_ |