1 // Copyright (c) 2012 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_COMMON_EXTENSIONS_API_EXTENSION_ACTION_ACTION_INFO_H_ 6 #define CHROME_COMMON_EXTENSIONS_API_EXTENSION_ACTION_ACTION_INFO_H_ 7 8 #include <string> 9 10 #include "base/strings/string16.h" 11 #include "chrome/common/extensions/extension_icon_set.h" 12 #include "extensions/common/extension.h" 13 #include "url/gurl.h" 14 15 namespace base { 16 class DictionaryValue; 17 } 18 19 namespace extensions { 20 21 class Extension; 22 23 struct ActionInfo { 24 ActionInfo(); 25 ~ActionInfo(); 26 27 // The types of extension actions. 28 enum Type { 29 TYPE_BROWSER, 30 TYPE_PAGE, 31 TYPE_SCRIPT_BADGE, 32 TYPE_SYSTEM_INDICATOR, 33 }; 34 35 // Loads an ActionInfo from the given DictionaryValue. 36 static scoped_ptr<ActionInfo> Load(const Extension* extension, 37 const base::DictionaryValue* dict, 38 base::string16* error); 39 40 // Returns the extension's browser action, if any. 41 static const ActionInfo* GetBrowserActionInfo(const Extension* extension); 42 43 // Returns the extension's page action, if any. 44 static const ActionInfo* GetPageActionInfo(const Extension* extension); 45 46 // Returns the extension's script badge. 47 static const ActionInfo* GetScriptBadgeInfo(const Extension* etxension); 48 49 // Returns the extension's system indicator, if any. 50 static const ActionInfo* GetSystemIndicatorInfo(const Extension* extension); 51 52 // Sets the extension's browser action. |extension| takes ownership of |info|. 53 static void SetBrowserActionInfo(Extension* extension, ActionInfo* info); 54 55 // Sets the extension's page action. |extension| takes ownership of |info|. 56 static void SetPageActionInfo(Extension* extension, ActionInfo* info); 57 58 // Sets the extension's script badge. |extension| takes ownership of |info|. 59 static void SetScriptBadgeInfo(Extension* extension, ActionInfo* info); 60 61 // Sets the extension's system indicator. |extension| takes ownership of 62 // |info|. 63 static void SetSystemIndicatorInfo(Extension* extension, ActionInfo* info); 64 65 // Returns true if the extension needs a verbose install message because 66 // of its page action. 67 static bool IsVerboseInstallMessage(const Extension* extension); 68 69 // Empty implies the key wasn't present. 70 ExtensionIconSet default_icon; 71 std::string default_title; 72 GURL default_popup_url; 73 // action id -- only used with legacy page actions API. 74 std::string id; 75 }; 76 77 } // namespace extensions 78 79 #endif // CHROME_COMMON_EXTENSIONS_API_EXTENSION_ACTION_ACTION_INFO_H_ 80