| 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 |