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

Unified Diff: chrome/common/extensions/features/base_feature_provider.cc

Issue 12846011: Implement API features for the Extension API feature system (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed memory leak Created 7 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/features/base_feature_provider.cc
diff --git a/chrome/common/extensions/features/base_feature_provider.cc b/chrome/common/extensions/features/base_feature_provider.cc
index 44cc4544a9388b45f275856a9c533fba8820bc06..3e2c5e5c7a51b5c3419e6aeb26fbd268ea5d633a 100644
--- a/chrome/common/extensions/features/base_feature_provider.cc
+++ b/chrome/common/extensions/features/base_feature_provider.cc
@@ -6,6 +6,7 @@
#include "base/json/json_reader.h"
#include "base/lazy_instance.h"
+#include "chrome/common/extensions/features/api_feature.h"
#include "chrome/common/extensions/features/complex_feature.h"
#include "chrome/common/extensions/features/manifest_feature.h"
#include "chrome/common/extensions/features/permission_feature.h"
@@ -23,7 +24,11 @@ SimpleFeature* CreateFeature() {
struct Static {
Static()
- : manifest_features(
+ : api_features(
+ LoadProvider("api",
+ &CreateFeature<APIFeature>,
+ IDR_EXTENSION_API_FEATURES)),
+ manifest_features(
LoadProvider("manifest",
&CreateFeature<ManifestFeature>,
IDR_EXTENSION_MANIFEST_FEATURES)),
@@ -33,6 +38,7 @@ struct Static {
IDR_EXTENSION_PERMISSION_FEATURES)) {
}
+ scoped_ptr<BaseFeatureProvider> api_features;
scoped_ptr<BaseFeatureProvider> manifest_features;
scoped_ptr<BaseFeatureProvider> permission_features;
@@ -67,20 +73,10 @@ bool ParseFeature(const DictionaryValue* value,
const std::string& name,
SimpleFeature* feature) {
feature->set_name(name);
- feature->Parse(value);
-
- if (feature->extension_types()->empty()) {
- LOG(ERROR) << name << ": Simple features must specify at least one "
- << "value for extension_types.";
- return false;
- }
-
- if (!feature->GetContexts()->empty()) {
- LOG(ERROR) << name << ": Simple features do not support contexts.";
- return false;
- }
-
- return true;
+ std::string error = feature->Parse(value);
+ if (!error.empty())
+ LOG(ERROR) << error;
+ return error.empty();
}
base::LazyInstance<Static> g_static = LAZY_INSTANCE_INITIALIZER;
@@ -141,6 +137,11 @@ BaseFeatureProvider::~BaseFeatureProvider() {
}
// static
+BaseFeatureProvider* BaseFeatureProvider::GetApiFeatures() {
+ return g_static.Get().api_features.get();
+}
+
+// static
BaseFeatureProvider* BaseFeatureProvider::GetManifestFeatures() {
return g_static.Get().manifest_features.get();
}

Powered by Google App Engine
This is Rietveld 408576698