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 "extensions/common/extension.h" 12 #include "extensions/common/extension_icon_set.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_SYSTEM_INDICATOR, 32 }; 33 34 // Loads an ActionInfo from the given DictionaryValue. 35 static scoped_ptr<ActionInfo> Load(const Extension* extension, 36 const base::DictionaryValue* dict, 37 base::string16* error); 38 39 // Returns the extension's browser action, if any. 40 static const ActionInfo* GetBrowserActionInfo(const Extension* extension); 41 42 // Returns the extension's page action, if any. 43 static const ActionInfo* GetPageActionInfo(const Extension* extension); 44 45 // Returns the extension's system indicator, if any. 46 static const ActionInfo* GetSystemIndicatorInfo(const Extension* extension); 47 48 // Sets the extension's browser action. |extension| takes ownership of |info|. 49 static void SetBrowserActionInfo(Extension* extension, ActionInfo* info); 50 51 // Sets the extension's page action. |extension| takes ownership of |info|. 52 static void SetPageActionInfo(Extension* extension, ActionInfo* info); 53 54 // Sets the extension's system indicator. |extension| takes ownership of 55 // |info|. 56 static void SetSystemIndicatorInfo(Extension* extension, ActionInfo* info); 57 58 // Returns true if the extension needs a verbose install message because 59 // of its page action. 60 static bool IsVerboseInstallMessage(const Extension* extension); 61 62 // Empty implies the key wasn't present. 63 ExtensionIconSet default_icon; 64 std::string default_title; 65 GURL default_popup_url; 66 // action id -- only used with legacy page actions API. 67 std::string id; 68 }; 69 70 } // namespace extensions 71 72 #endif // CHROME_COMMON_EXTENSIONS_API_EXTENSION_ACTION_ACTION_INFO_H_ 73