OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_CONTEXT_MENU_MODEL_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_CONTEXT_MENU_MODEL_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_CONTEXT_MENU_MODEL_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_CONTEXT_MENU_MODEL_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
11 #include "chrome/browser/extensions/extension_uninstall_dialog.h" | 11 #include "chrome/browser/extensions/extension_uninstall_ui.h" |
12 #include "ui/base/models/simple_menu_model.h" | 12 #include "ui/base/models/simple_menu_model.h" |
13 | 13 |
14 class Browser; | 14 class Browser; |
15 class Extension; | 15 class Extension; |
16 class ExtensionAction; | 16 class ExtensionAction; |
17 class Profile; | 17 class Profile; |
18 | 18 |
19 // The menu model for the context menu for extension action icons (browser and | 19 // The menu model for the context menu for extension action icons (browser and |
20 // page actions). | 20 // page actions). |
21 class ExtensionContextMenuModel | 21 class ExtensionContextMenuModel |
22 : public base::RefCounted<ExtensionContextMenuModel>, | 22 : public base::RefCounted<ExtensionContextMenuModel>, |
23 public ui::SimpleMenuModel, | 23 public ui::SimpleMenuModel, |
24 public ui::SimpleMenuModel::Delegate, | 24 public ui::SimpleMenuModel::Delegate, |
25 public ExtensionUninstallDialog::Delegate { | 25 public ExtensionUninstallUI::Delegate { |
26 public: | 26 public: |
27 // Delegate to handle showing an ExtensionAction popup. | 27 // Delegate to handle showing an ExtensionAction popup. |
28 class PopupDelegate { | 28 class PopupDelegate { |
29 public: | 29 public: |
30 // Called when the user selects the menu item which requests that the | 30 // Called when the user selects the menu item which requests that the |
31 // popup be shown and inspected. | 31 // popup be shown and inspected. |
32 virtual void InspectPopup(ExtensionAction* action) = 0; | 32 virtual void InspectPopup(ExtensionAction* action) = 0; |
33 | 33 |
34 protected: | 34 protected: |
35 virtual ~PopupDelegate() {} | 35 virtual ~PopupDelegate() {} |
36 }; | 36 }; |
37 | 37 |
38 // Creates a menu model for the given extension action. If | 38 // Creates a menu model for the given extension action. If |
39 // prefs::kExtensionsUIDeveloperMode is enabled then a menu item | 39 // prefs::kExtensionsUIDeveloperMode is enabled then a menu item |
40 // will be shown for "Inspect Popup" which, when selected, will cause | 40 // will be shown for "Inspect Popup" which, when selected, will cause |
41 // ShowPopupForDevToolsWindow() to be called on |delegate|. | 41 // ShowPopupForDevToolsWindow() to be called on |delegate|. |
42 ExtensionContextMenuModel(const Extension* extension, | 42 ExtensionContextMenuModel(const Extension* extension, |
43 Browser* browser, | 43 Browser* browser, |
44 PopupDelegate* delegate); | 44 PopupDelegate* delegate); |
45 virtual ~ExtensionContextMenuModel(); | 45 virtual ~ExtensionContextMenuModel(); |
46 | 46 |
47 // SimpleMenuModel::Delegate overrides. | 47 // SimpleMenuModel::Delegate overrides. |
48 virtual bool IsCommandIdChecked(int command_id) const; | 48 virtual bool IsCommandIdChecked(int command_id) const; |
49 virtual bool IsCommandIdEnabled(int command_id) const; | 49 virtual bool IsCommandIdEnabled(int command_id) const; |
50 virtual bool GetAcceleratorForCommandId(int command_id, | 50 virtual bool GetAcceleratorForCommandId(int command_id, |
51 ui::Accelerator* accelerator); | 51 ui::Accelerator* accelerator); |
52 virtual void ExecuteCommand(int command_id); | 52 virtual void ExecuteCommand(int command_id); |
53 | 53 |
54 // ExtensionUninstallDialog::Delegate: | 54 // ExtensionUninstallUI::Delegate: |
55 virtual void ExtensionDialogAccepted(); | 55 virtual void ExtensionUninstallAccepted(); |
56 virtual void ExtensionDialogCanceled(); | 56 virtual void ExtensionUninstallCanceled(); |
57 | 57 |
58 private: | 58 private: |
59 void InitCommonCommands(); | 59 void InitCommonCommands(); |
60 | 60 |
61 // Gets the extension we are displaying the menu for. Returns NULL if the | 61 // Gets the extension we are displaying the menu for. Returns NULL if the |
62 // extension has been uninstalled and no longer exists. | 62 // extension has been uninstalled and no longer exists. |
63 const Extension* GetExtension() const; | 63 const Extension* GetExtension() const; |
64 | 64 |
65 // A copy of the extension's id. | 65 // A copy of the extension's id. |
66 std::string extension_id_; | 66 std::string extension_id_; |
67 | 67 |
68 // The extension action we are displaying the menu for (or NULL). | 68 // The extension action we are displaying the menu for (or NULL). |
69 ExtensionAction* extension_action_; | 69 ExtensionAction* extension_action_; |
70 | 70 |
71 Browser* browser_; | 71 Browser* browser_; |
72 | 72 |
73 Profile* profile_; | 73 Profile* profile_; |
74 | 74 |
75 // The delegate which handles the 'inspect popup' menu command (or NULL). | 75 // The delegate which handles the 'inspect popup' menu command (or NULL). |
76 PopupDelegate* delegate_; | 76 PopupDelegate* delegate_; |
77 | 77 |
78 // Keeps track of the extension uninstall dialog. | 78 // Keeps track of the extension uninstall ui. |
79 scoped_ptr<ExtensionUninstallDialog> extension_uninstall_dialog_; | 79 scoped_ptr<ExtensionUninstallUI> extension_uninstall_ui_; |
80 | 80 |
81 DISALLOW_COPY_AND_ASSIGN(ExtensionContextMenuModel); | 81 DISALLOW_COPY_AND_ASSIGN(ExtensionContextMenuModel); |
82 }; | 82 }; |
83 | 83 |
84 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_CONTEXT_MENU_MODEL_H_ | 84 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_CONTEXT_MENU_MODEL_H_ |
OLD | NEW |