diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-18 21:12:44 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-18 21:12:44 +0000 |
commit | 78904e96cfdbd62a905bd2d26c3e5c8e6e84cee7 (patch) | |
tree | 0b4e0797f701e1063dc7716851d258ec77ff8778 /chrome/browser/notifications | |
parent | 9e9d7913a4032ff833ce731db7e0f38b37914d47 (diff) | |
download | chromium_src-78904e96cfdbd62a905bd2d26c3e5c8e6e84cee7.zip chromium_src-78904e96cfdbd62a905bd2d26c3e5c8e6e84cee7.tar.gz chromium_src-78904e96cfdbd62a905bd2d26c3e5c8e6e84cee7.tar.bz2 |
Reapply r52859
This reverts commit a3d08737344176477998ba74549b3a23a72cdc96.
This fix the win trybot by adding a missing ALLOW_THIS_IN_INITIALIZER_LIST macro necessary to silent the VS compiler.
BUG=None
TEST=trybots
TBR=johnnyg@chromium.org
Review URL: http://codereview.chromium.org/3045003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52868 0039d316-1c4b-4281-b951-d872f2087c98
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_ |