1 // Copyright (c) 2010 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_EXTENSIONS_EXTENSION_BROWSER_ACTIONS_API_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_BROWSER_ACTIONS_API_H_ 7 #pragma once 8 9 #include "chrome/browser/extensions/extension_function.h" 10 #include "chrome/common/extensions/extension_action.h" 11 12 class DictionaryValue; 13 class ExtensionAction; 14 15 // Base class for chrome.browserAction.* APIs. 16 class BrowserActionFunction : public SyncExtensionFunction { 17 protected: BrowserActionFunction()18 BrowserActionFunction() 19 : details_(NULL), 20 tab_id_(ExtensionAction::kDefaultTabId), 21 browser_action_(NULL) {} ~BrowserActionFunction()22 virtual ~BrowserActionFunction() {} 23 virtual bool RunImpl(); 24 virtual bool RunBrowserAction() = 0; 25 26 // All the browser action APIs take a single argument called details that is 27 // a dictionary. 28 DictionaryValue* details_; 29 30 // The tab id the browser action function should apply to, if any, or 31 // kDefaultTabId if none was specified. 32 int tab_id_; 33 34 // The browser action for the current extension. 35 ExtensionAction* browser_action_; 36 }; 37 38 // Implement chrome.browserAction.setIcon(). 39 class BrowserActionSetIconFunction : public BrowserActionFunction { ~BrowserActionSetIconFunction()40 ~BrowserActionSetIconFunction() {} 41 virtual bool RunBrowserAction(); 42 DECLARE_EXTENSION_FUNCTION_NAME("browserAction.setIcon") 43 }; 44 45 // Implement chrome.browserAction.setTitle(). 46 class BrowserActionSetTitleFunction : public BrowserActionFunction { ~BrowserActionSetTitleFunction()47 ~BrowserActionSetTitleFunction() {} 48 virtual bool RunBrowserAction(); 49 DECLARE_EXTENSION_FUNCTION_NAME("browserAction.setTitle") 50 }; 51 52 // Implement chrome.browserActions.setPopup(). 53 class BrowserActionSetPopupFunction : public BrowserActionFunction { ~BrowserActionSetPopupFunction()54 ~BrowserActionSetPopupFunction() {} 55 virtual bool RunBrowserAction(); 56 DECLARE_EXTENSION_FUNCTION_NAME("browserAction.setPopup") 57 }; 58 59 // Implement chrome.browserAction.setBadgeText(). 60 class BrowserActionSetBadgeTextFunction : public BrowserActionFunction { ~BrowserActionSetBadgeTextFunction()61 ~BrowserActionSetBadgeTextFunction() {} 62 virtual bool RunBrowserAction(); 63 DECLARE_EXTENSION_FUNCTION_NAME("browserAction.setBadgeText") 64 }; 65 66 // Implement chrome.browserAction.setBadgeBackgroundColor(). 67 class BrowserActionSetBadgeBackgroundColorFunction 68 : public BrowserActionFunction { ~BrowserActionSetBadgeBackgroundColorFunction()69 ~BrowserActionSetBadgeBackgroundColorFunction() {} 70 virtual bool RunBrowserAction(); 71 DECLARE_EXTENSION_FUNCTION_NAME("browserAction.setBadgeBackgroundColor") 72 }; 73 74 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_BROWSER_ACTIONS_API_H_ 75