Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4784)

Unified Diff: chrome/common/extensions/extension.h

Issue 12093036: Move Extension Location and Type enums to Manifest, and move InstallWarning to its own file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/extensions/csp_validator_unittest.cc ('k') | chrome/common/extensions/extension.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/extensions/extension.h
diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h
index a6ead5b410b3df15e24b9f05f21615941f78ea03..046532534a871b94f351a0bd6faf70a26824f481 100644
--- a/chrome/common/extensions/extension.h
+++ b/chrome/common/extensions/extension.h
@@ -23,10 +23,12 @@
#include "base/threading/thread_checker.h"
#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/extension_icon_set.h"
+#include "chrome/common/extensions/manifest.h"
#include "chrome/common/extensions/permissions/api_permission.h"
#include "chrome/common/extensions/permissions/api_permission_set.h"
#include "chrome/common/extensions/permissions/permission_message.h"
#include "chrome/common/extensions/user_script.h"
+#include "extensions/common/install_warning.h"
#include "extensions/common/url_pattern.h"
#include "extensions/common/url_pattern_set.h"
#include "googleurl/src/gurl.h"
@@ -51,7 +53,6 @@ FORWARD_DECLARE_TEST(TabStripModelTest, Apps);
namespace extensions {
struct ActionInfo;
-class Manifest;
class PermissionSet;
typedef std::set<std::string> OAuth2Scopes;
@@ -59,36 +60,12 @@ typedef std::set<std::string> OAuth2Scopes;
// Represents a Chrome extension.
class Extension : public base::RefCountedThreadSafe<Extension> {
public:
- struct InstallWarning;
struct ManifestData;
typedef std::vector<std::string> ScriptingWhitelist;
- typedef std::vector<InstallWarning> InstallWarningVector;
typedef std::map<const std::string, linked_ptr<ManifestData> >
ManifestDataMap;
- // What an extension was loaded from.
- // NOTE: These values are stored as integers in the preferences and used
- // in histograms so don't remove or reorder existing items. Just append
- // to the end.
- enum Location {
- INVALID,
- INTERNAL, // A crx file from the internal Extensions directory.
- EXTERNAL_PREF, // A crx file from an external directory (via prefs).
- EXTERNAL_REGISTRY, // A crx file from an external directory (via eg the
- // registry on Windows).
- LOAD, // --load-extension.
- COMPONENT, // An integral component of Chrome itself, which
- // happens to be implemented as an extension. We don't
- // show these in the management UI.
- EXTERNAL_PREF_DOWNLOAD, // A crx file from an external directory (via
- // prefs), installed from an update URL.
- EXTERNAL_POLICY_DOWNLOAD, // A crx file from an external directory (via
- // admin policies), installed from an update URL.
-
- NUM_LOCATIONS
- };
-
enum State {
DISABLED = 0,
ENABLED,
@@ -128,20 +105,6 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
NEW_INSTALL
};
- // Do not change the order of entries or remove entries in this list
- // as this is used in UMA_HISTOGRAM_ENUMERATIONs about extensions.
- enum Type {
- TYPE_UNKNOWN = 0,
- TYPE_EXTENSION,
- TYPE_THEME,
- TYPE_USER_SCRIPT,
- TYPE_HOSTED_APP,
- // This is marked legacy because platform apps are preferred. For
- // backwards compatibility, we can't remove support for packaged apps
- TYPE_LEGACY_PACKAGED_APP,
- TYPE_PLATFORM_APP
- };
-
enum SyncType {
SYNC_TYPE_NONE = 0,
SYNC_TYPE_EXTENSION,
@@ -181,21 +144,6 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
std::vector<std::string> scopes;
};
- struct InstallWarning {
- enum Format {
- // IMPORTANT: Do not build HTML strings from user or developer-supplied
- // input.
- FORMAT_TEXT,
- FORMAT_HTML,
- };
- InstallWarning(Format format, const std::string& message)
- : format(format), message(message) {
- }
- bool operator==(const InstallWarning& other) const;
- Format format;
- std::string message;
- };
-
// A base class for parsed manifest data that APIs want to store on
// the extension. Related to base::SupportsUserData, but with an immutable
// thread-safe interface to match Extension.
@@ -245,7 +193,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
};
static scoped_refptr<Extension> Create(const FilePath& path,
- Location location,
+ Manifest::Location location,
const base::DictionaryValue& value,
int flags,
std::string* error);
@@ -253,17 +201,12 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// In a few special circumstances, we want to create an Extension and give it
// an explicit id. Most consumers should just use the other Create() method.
static scoped_refptr<Extension> Create(const FilePath& path,
- Location location,
+ Manifest::Location location,
const base::DictionaryValue& value,
int flags,
const std::string& explicit_id,
std::string* error);
- // Given two install sources, return the one which should take priority
- // over the other. If an extension is installed from two sources A and B,
- // its install source should be set to GetHigherPriorityLocation(A, B).
- static Location GetHigherPriorityLocation(Location loc1, Location loc2);
-
// Max size (both dimensions) for browser and page actions.
static const int kPageActionIconMaxSize;
static const int kBrowserActionIconMaxSize;
@@ -303,33 +246,12 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// Returns true if the specified file is an extension.
static bool IsExtension(const FilePath& file_name);
- // Whether the |location| is external or not.
- static inline bool IsExternalLocation(Location location) {
- return location == Extension::EXTERNAL_PREF ||
- location == Extension::EXTERNAL_REGISTRY ||
- location == Extension::EXTERNAL_PREF_DOWNLOAD ||
- location == Extension::EXTERNAL_POLICY_DOWNLOAD;
- }
-
- // Whether extensions with |location| are auto-updatable or not.
- static inline bool IsAutoUpdateableLocation(Location location) {
- // Only internal and external extensions can be autoupdated.
- return location == Extension::INTERNAL ||
- IsExternalLocation(location);
- }
-
- // Unpacked extensions start off with file access since they are a developer
- // feature.
- static inline bool ShouldAlwaysAllowFileAccess(Location location) {
- return location == Extension::LOAD;
- }
-
// Fills the |info| dictionary with basic information about the extension.
// |enabled| is injected for easier testing.
void GetBasicInfo(bool enabled, base::DictionaryValue* info) const;
- // See Type definition above.
- Type GetType() const;
+ // See Type definition in Manifest.
+ Manifest::Type GetType() const;
// Returns an absolute url to a resource inside of an extension. The
// |extension_url| argument should be the url() from an Extension object. The
@@ -588,7 +510,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
const Requirements& requirements() const { return requirements_; }
const FilePath& path() const { return path_; }
const GURL& url() const { return extension_url_; }
- Location location() const;
+ Manifest::Location location() const;
const std::string& id() const;
const Version* version() const { return version_.get(); }
const std::string VersionString() const;
@@ -635,8 +557,8 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
}
// Appends |new_warning[s]| to install_warnings_.
void AddInstallWarning(const InstallWarning& new_warning);
- void AddInstallWarnings(const InstallWarningVector& new_warnings);
- const InstallWarningVector& install_warnings() const {
+ void AddInstallWarnings(const std::vector<InstallWarning>& new_warnings);
+ const std::vector<InstallWarning>& install_warnings() const {
return install_warnings_;
}
const ExtensionIconSet& icons() const { return icons_; }
@@ -925,7 +847,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
scoped_refptr<const PermissionSet> required_permission_set_;
// Any warnings that occurred when trying to create/parse the extension.
- InstallWarningVector install_warnings_;
+ std::vector<InstallWarning> install_warnings_;
// The icons for the extension.
ExtensionIconSet icons_;
@@ -1071,21 +993,18 @@ typedef std::vector< scoped_refptr<const Extension> > ExtensionList;
typedef std::set<std::string> ExtensionIdSet;
typedef std::vector<std::string> ExtensionIdList;
-// Let gtest print InstallWarnings.
-void PrintTo(const Extension::InstallWarning&, ::std::ostream* os);
-
// Handy struct to pass core extension info around.
struct ExtensionInfo {
ExtensionInfo(const base::DictionaryValue* manifest,
const std::string& id,
const FilePath& path,
- Extension::Location location);
+ Manifest::Location location);
~ExtensionInfo();
scoped_ptr<base::DictionaryValue> extension_manifest;
std::string extension_id;
FilePath extension_path;
- Extension::Location extension_location;
+ Manifest::Location extension_location;
private:
DISALLOW_COPY_AND_ASSIGN(ExtensionInfo);
« no previous file with comments | « chrome/common/extensions/csp_validator_unittest.cc ('k') | chrome/common/extensions/extension.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698