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

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

Issue 9950046: Implement FeatureProvider for ExtensionAPI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 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
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

Powered by Google App Engine
This is Rietveld 408576698