• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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