Index: chrome/common/extensions/feature.h |
diff --git a/chrome/common/extensions/feature.h b/chrome/common/extensions/feature.h |
index 6423ccbc7f22a93fda846898f7da73f726dea953..60c44f791f46f4f3a71ed33272926cb7760a0ea6 100644 |
--- a/chrome/common/extensions/feature.h |
+++ b/chrome/common/extensions/feature.h |
@@ -60,14 +60,17 @@ class Feature { |
INVALID_LOCATION, |
INVALID_PLATFORM, |
INVALID_MIN_MANIFEST_VERSION, |
- INVALID_MAX_MANIFEST_VERSION |
+ INVALID_MAX_MANIFEST_VERSION, |
+ NOT_PRESENT, |
+ DEPENDENCY_NOT_PRESENT |
}; |
Feature(); |
+ Feature(const Feature& other); |
~Feature(); |
- // Parses a feature from its JSON representation. |
- static scoped_ptr<Feature> Parse(const DictionaryValue* value); |
+ const std::string& name() const { return name_; } |
+ void set_name(const std::string& name) { name_ = name; } |
// Gets the platform the code is currently running on. |
static Platform GetCurrentPlatform(); |
@@ -95,43 +98,45 @@ class Feature { |
max_manifest_version_ = max_manifest_version; |
} |
- // Returns true if the feature is available to the specified extension. Use |
- // this overload for features that are not associated with a specific context. |
- Availability IsAvailable(const Extension* extension) { |
- return IsAvailable(extension, UNSPECIFIED_CONTEXT); |
+ // Parses the JSON representation of a feature into the fields of this object. |
+ // Unspecified values in the JSON are not modified in the object. This allows |
+ // us to implement inheritance by parsing one value after another. |
koz (OOO until 15th September)
2012/04/02 06:39:48
Cool.
|
+ void Parse(const DictionaryValue* value); |
+ |
+ // Returns true if the feature contains the same values as another. |
+ bool Equals(const Feature& other) const; |
+ |
+ // Returns true if the feature is available to be parsed into a new extension |
+ // manifest. |
+ Availability IsAvailableToManifest(const std::string& extension_id, |
+ Extension::Type type, |
+ Location location, |
+ int manifest_version) const { |
+ return IsAvailableToManifest(extension_id, type, location, manifest_version, |
+ GetCurrentPlatform()); |
} |
- |
- // Returns true if the feature is available to the specified extension, in the |
- // specified context type. |
- Availability IsAvailable(const Extension* extension, Context context) { |
- return IsAvailable(extension->id(), extension->GetType(), |
- ConvertLocation(extension->location()), context, |
- GetCurrentPlatform(), |
- extension->manifest_version()); |
- } |
- |
- // Returns true if the feature is available to extensions with the specified |
- // properties. Use this overload for features that are not associated with a |
- // specific context, and when a full Extension object is not available. |
- Availability IsAvailable(const std::string& extension_id, |
- Extension::Type type, Location location, |
- int manifest_version) { |
- return IsAvailable(extension_id, type, location, UNSPECIFIED_CONTEXT, |
- GetCurrentPlatform(), manifest_version); |
+ Availability IsAvailableToManifest(const std::string& extension_id, |
+ Extension::Type type, |
+ Location location, |
+ int manifest_version, |
+ Platform platform) const; |
+ |
+ // Returns true if the feature is available to used in the specified extension |
koz (OOO until 15th September)
2012/04/02 06:39:48
to used in -> to be used in
Aaron Boodman
2012/04/02 08:21:54
Done.
|
+ // and context. |
+ Availability IsAvailableToContext(const Extension* extension, |
+ Context context) const { |
+ return IsAvailableToContext(extension, context, GetCurrentPlatform()); |
} |
- |
- // Returns true if the feature is available to extensions with the specified |
- // properties, in the specified context type, and on the specified platform. |
- // This overload is mainly used for testing. |
- Availability IsAvailable(const std::string& extension_id, |
- Extension::Type type, Location location, |
- Context context, Platform platform, |
- int manifest_version); |
+ virtual Availability IsAvailableToContext(const Extension* extension, |
+ Context context, |
+ Platform platform) const; |
// Returns an error message for an Availability code. |
std::string GetErrorMessage(Availability result); |
private: |
+ std::string name_; |
+ |
// For clarify and consistency, we handle the default value of each of these |
// members the same way: it matches everything. It is up to the higher level |
// code that reads Features out of static data to validate that data and set |
@@ -143,8 +148,6 @@ class Feature { |
Platform platform_; // we only care about chromeos/not-chromeos now |
int min_manifest_version_; |
int max_manifest_version_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Feature); |
}; |
} // namespace extensions |