From 78904e96cfdbd62a905bd2d26c3e5c8e6e84cee7 Mon Sep 17 00:00:00 2001 From: "tfarina@chromium.org" Date: Sun, 18 Jul 2010 21:12:44 +0000 Subject: 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 --- .../notification_options_menu_model.cc | 58 ++++++++++++++++++++++ .../notification_options_menu_model.h | 30 +++++++++++ 2 files changed, 88 insertions(+) create mode 100644 chrome/browser/notifications/notification_options_menu_model.cc create mode 100644 chrome/browser/notifications/notification_options_menu_model.h (limited to 'chrome/browser/notifications') 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_ -- cgit v1.1