OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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_ |
OLD | NEW |