Home | History | Annotate | Download | only in extension_action
      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