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 "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_
     80