- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / api / extension_action / action_info.h
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.h"
12 #include "chrome/common/extensions/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_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                                      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_