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