Index: extensions/common/features/simple_feature.cc |
diff --git a/extensions/common/features/simple_feature.cc b/extensions/common/features/simple_feature.cc |
index b4a39198bcd62498e6f5c0ab5ee210556a1b7227..f449e8f7bf1b2ccf8078d25cb6ab9ee81b80211e 100644 |
--- a/extensions/common/features/simple_feature.cc |
+++ b/extensions/common/features/simple_feature.cc |
@@ -310,11 +310,12 @@ SimpleFeature::SimpleFeature() |
: location_(UNSPECIFIED_LOCATION), |
min_manifest_version_(0), |
max_manifest_version_(0), |
- component_extensions_auto_granted_(true) {} |
+ component_extensions_auto_granted_(true), |
+ internal_(false) {} |
SimpleFeature::~SimpleFeature() {} |
-std::string SimpleFeature::Parse(const base::DictionaryValue* dictionary) { |
+void SimpleFeature::Parse(const base::DictionaryValue* dictionary) { |
static base::LazyInstance<SimpleFeature::Mappings> mappings = |
LAZY_INSTANCE_INITIALIZER; |
@@ -358,6 +359,8 @@ std::string SimpleFeature::Parse(const base::DictionaryValue* dictionary) { |
channel_.reset(new version_info::Channel(version_info::Channel::UNKNOWN)); |
ParseEnum<version_info::Channel>(value, channel_.get(), |
mappings.Get().channels); |
+ } else if (key == "internal") { |
+ value->GetAsBoolean(&internal_); |
} |
} |
@@ -369,13 +372,18 @@ std::string SimpleFeature::Parse(const base::DictionaryValue* dictionary) { |
// and "matches" google.com/*. Then a sub-feature "foo.bar" might override |
// "matches" to be chromium.org/*. That sub-feature doesn't need to specify |
// "web_page" context because it's inherited, but we don't know that here. |
+} |
+bool SimpleFeature::Validate(std::string* error) { |
+ DCHECK(error); |
// All features must be channel-restricted, either directly or through |
// dependents. |
- if (!channel_ && dependencies_.empty()) |
- return name() + ": Must supply a value for channel or dependencies."; |
+ if (!channel_ && dependencies_.empty()) { |
+ *error = name() + ": Must supply a value for channel or dependencies."; |
+ return false; |
+ } |
- return std::string(); |
+ return true; |
} |
Feature::Availability SimpleFeature::IsAvailableToManifest( |
@@ -583,7 +591,7 @@ Feature::Availability SimpleFeature::CreateAvailability( |
} |
bool SimpleFeature::IsInternal() const { |
- return false; |
+ return internal_; |
} |
bool SimpleFeature::IsIdInBlacklist(const std::string& extension_id) const { |