• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_ACTION_CONTEXT_MENU_CONTROLLER_H_
6 #define CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_ACTION_CONTEXT_MENU_CONTROLLER_H_
7 
8 #import <Cocoa/Cocoa.h>
9 
10 #include "base/memory/scoped_ptr.h"
11 
12 class AsyncUninstaller;
13 class Browser;
14 class ExtensionAction;
15 
16 namespace extensions {
17 class Extension;
18 }
19 
20 // Controller for extension context menu. This class builds the context menu
21 // and handles actions. This is mostly used when the user right clicks on
22 // page and browser actions in the toolbar.
23 @interface ExtensionActionContextMenuController : NSObject {
24  @private
25   // The extension that the menu belongs to. Weak.
26   const extensions::Extension* extension_;
27 
28   // The extension action the menu belongs to. Weak.
29   ExtensionAction* action_;
30 
31   // The browser that contains this extension. Weak.
32   Browser* browser_;
33 
34   // Used to load the extension icon asynchronously on the I/O thread then show
35   // the uninstall confirmation dialog.
36   scoped_ptr<AsyncUninstaller> uninstaller_;
37 }
38 
39 // Initializes and returns a context menu controller for the given extension and
40 // browser.
41 - (id)initWithExtension:(const extensions::Extension*)extension
42                 browser:(Browser*)browser
43         extensionAction:(ExtensionAction*)action;
44 
45 // Adds context menu items to the given menu.
46 - (void)populateMenu:(NSMenu*)menu;
47 
48 @end
49 
50 #endif  // CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_ACTION_CONTEXT_MENU_H_
51