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

Side by Side Diff: extensions/common/features/simple_feature.h

Issue 2150193002: [Extensions] Add a SimpleFeature::Validate function (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Istiaque's Created 4 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef EXTENSIONS_COMMON_FEATURES_SIMPLE_FEATURE_H_ 5 #ifndef EXTENSIONS_COMMON_FEATURES_SIMPLE_FEATURE_H_
6 #define EXTENSIONS_COMMON_FEATURES_SIMPLE_FEATURE_H_ 6 #define EXTENSIONS_COMMON_FEATURES_SIMPLE_FEATURE_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 29 matching lines...) Expand all
40 private: 40 private:
41 std::string* previous_id_; 41 std::string* previous_id_;
42 42
43 DISALLOW_COPY_AND_ASSIGN(ScopedWhitelistForTest); 43 DISALLOW_COPY_AND_ASSIGN(ScopedWhitelistForTest);
44 }; 44 };
45 45
46 SimpleFeature(); 46 SimpleFeature();
47 ~SimpleFeature() override; 47 ~SimpleFeature() override;
48 48
49 // Parses the JSON representation of a feature into the fields of this object. 49 // Parses the JSON representation of a feature into the fields of this object.
50 // Unspecified values in the JSON are not modified in the object. This allows 50 // Note: Validate() should be called after this.
51 // us to implement inheritance by parsing one value after another. Returns 51 void Parse(const base::DictionaryValue* dictionary);
52 // the error found, or an empty string on success. 52
53 virtual std::string Parse(const base::DictionaryValue* dictionary); 53 // Checks whether the feature is valid. Invalid features should not be used.
54 // Subclasses can override to implement specific checking, but should always
55 // call this method as well.
56 virtual bool Validate(std::string* error);
54 57
55 Availability IsAvailableToContext(const Extension* extension, 58 Availability IsAvailableToContext(const Extension* extension,
56 Context context) const { 59 Context context) const {
57 return IsAvailableToContext(extension, context, GURL()); 60 return IsAvailableToContext(extension, context, GURL());
58 } 61 }
59 Availability IsAvailableToContext(const Extension* extension, 62 Availability IsAvailableToContext(const Extension* extension,
60 Context context, 63 Context context,
61 Platform platform) const { 64 Platform platform) const {
62 return IsAvailableToContext(extension, context, GURL(), platform); 65 return IsAvailableToContext(extension, context, GURL(), platform);
63 } 66 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 version_info::Channel channel) const; 149 version_info::Channel channel) const;
147 150
148 private: 151 private:
149 friend class SimpleFeatureTest; 152 friend class SimpleFeatureTest;
150 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, ManifestFeatureTypes); 153 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, ManifestFeatureTypes);
151 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, PermissionFeatureTypes); 154 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, PermissionFeatureTypes);
152 FRIEND_TEST_ALL_PREFIXES(ExtensionAPITest, DefaultConfigurationFeatures); 155 FRIEND_TEST_ALL_PREFIXES(ExtensionAPITest, DefaultConfigurationFeatures);
153 FRIEND_TEST_ALL_PREFIXES(ManifestUnitTest, Extension); 156 FRIEND_TEST_ALL_PREFIXES(ManifestUnitTest, Extension);
154 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Blacklist); 157 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Blacklist);
155 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, CommandLineSwitch); 158 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, CommandLineSwitch);
159 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ComplexFeatureAvailability);
156 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Context); 160 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Context);
161 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, FeatureValidation);
157 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdBlacklist); 162 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdBlacklist);
158 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdWhitelist); 163 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdWhitelist);
159 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Inheritance); 164 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Inheritance);
160 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Location); 165 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Location);
161 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ManifestVersion); 166 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ManifestVersion);
162 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, PackageType); 167 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, PackageType);
163 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseContexts); 168 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseContexts);
164 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseLocation); 169 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseLocation);
165 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseManifestVersion); 170 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseManifestVersion);
166 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseNull); 171 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseNull);
167 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParsePackageTypes); 172 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParsePackageTypes);
168 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParsePlatforms); 173 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParsePlatforms);
169 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseWhitelist); 174 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseWhitelist);
170 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Platform); 175 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Platform);
176 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, SimpleFeatureAvailability);
171 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Whitelist); 177 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Whitelist);
172 178
173 // Holds String to Enum value mappings. 179 // Holds String to Enum value mappings.
174 struct Mappings; 180 struct Mappings;
175 181
176 static bool IsIdInList(const std::string& extension_id, 182 static bool IsIdInList(const std::string& extension_id,
177 const std::vector<std::string>& list); 183 const std::vector<std::string>& list);
178 184
179 bool MatchesManifestLocation(Manifest::Location manifest_location) const; 185 bool MatchesManifestLocation(Manifest::Location manifest_location) const;
180 186
(...skipping 12 matching lines...) Expand all
193 std::vector<Manifest::Type> extension_types_; 199 std::vector<Manifest::Type> extension_types_;
194 std::vector<Context> contexts_; 200 std::vector<Context> contexts_;
195 std::vector<Platform> platforms_; 201 std::vector<Platform> platforms_;
196 URLPatternSet matches_; 202 URLPatternSet matches_;
197 Location location_; 203 Location location_;
198 int min_manifest_version_; 204 int min_manifest_version_;
199 int max_manifest_version_; 205 int max_manifest_version_;
200 bool component_extensions_auto_granted_; 206 bool component_extensions_auto_granted_;
201 std::string command_line_switch_; 207 std::string command_line_switch_;
202 std::unique_ptr<version_info::Channel> channel_; 208 std::unique_ptr<version_info::Channel> channel_;
209 bool internal_;
203 210
204 DISALLOW_COPY_AND_ASSIGN(SimpleFeature); 211 DISALLOW_COPY_AND_ASSIGN(SimpleFeature);
205 }; 212 };
206 213
207 } // namespace extensions 214 } // namespace extensions
208 215
209 #endif // EXTENSIONS_COMMON_FEATURES_SIMPLE_FEATURE_H_ 216 #endif // EXTENSIONS_COMMON_FEATURES_SIMPLE_FEATURE_H_
OLDNEW
« no previous file with comments | « extensions/common/features/permission_feature.cc ('k') | extensions/common/features/simple_feature.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698