Upstream version 11.40.277.0
[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 "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_