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

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

Issue 2151583003: [Extensions] Add extension feature generation code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Include fix 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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 const GURL& url) const { 69 const GURL& url) const {
70 return IsAvailableToContext(extension, context, url, GetCurrentPlatform()); 70 return IsAvailableToContext(extension, context, url, GetCurrentPlatform());
71 } 71 }
72 72
73 // extension::Feature: 73 // extension::Feature:
74 Availability IsAvailableToManifest(const std::string& extension_id, 74 Availability IsAvailableToManifest(const std::string& extension_id,
75 Manifest::Type type, 75 Manifest::Type type,
76 Manifest::Location location, 76 Manifest::Location location,
77 int manifest_version, 77 int manifest_version,
78 Platform platform) const override; 78 Platform platform) const override;
79
80 Availability IsAvailableToContext(const Extension* extension, 79 Availability IsAvailableToContext(const Extension* extension,
81 Context context, 80 Context context,
82 const GURL& url, 81 const GURL& url,
83 Platform platform) const override; 82 Platform platform) const override;
84
85 bool IsInternal() const override; 83 bool IsInternal() const override;
86
87 bool IsIdInBlacklist(const std::string& extension_id) const override; 84 bool IsIdInBlacklist(const std::string& extension_id) const override;
88 bool IsIdInWhitelist(const std::string& extension_id) const override; 85 bool IsIdInWhitelist(const std::string& extension_id) const override;
89 86
90 static bool IsIdInArray(const std::string& extension_id, 87 static bool IsIdInArray(const std::string& extension_id,
91 const char* const array[], 88 const char* const array[],
92 size_t array_length); 89 size_t array_length);
93 90
94 protected:
95 // Similar to Manifest::Location, these are the classes of locations 91 // Similar to Manifest::Location, these are the classes of locations
96 // supported in feature files. Production code should never directly access 92 // supported in feature files. These should only be used in this class and in
97 // these. 93 // generated files.
98 enum Location { 94 enum Location {
99 UNSPECIFIED_LOCATION, 95 UNSPECIFIED_LOCATION,
100 COMPONENT_LOCATION, 96 COMPONENT_LOCATION,
101 EXTERNAL_COMPONENT_LOCATION, 97 EXTERNAL_COMPONENT_LOCATION,
102 POLICY_LOCATION, 98 POLICY_LOCATION,
103 }; 99 };
104 100
105 // Accessors defined for testing. 101 // Setters used by generated code to create the feature.
106 std::vector<std::string>* blacklist() { return &blacklist_; } 102 void set_blacklist(const std::vector<std::string>& blacklist) {
107 const std::vector<std::string>* blacklist() const { return &blacklist_; } 103 blacklist_ = blacklist;
108 std::vector<std::string>* whitelist() { return &whitelist_; }
109 const std::vector<std::string>* whitelist() const { return &whitelist_; }
110 std::vector<Manifest::Type>* extension_types() { return &extension_types_; }
111 const std::vector<Manifest::Type>* extension_types() const {
112 return &extension_types_;
113 } 104 }
114 std::vector<Context>* contexts() { return &contexts_; } 105 void set_channel(version_info::Channel channel) {
115 const std::vector<Context>* contexts() const { return &contexts_; } 106 channel_.reset(new version_info::Channel(channel));
116 std::vector<Platform>* platforms() { return &platforms_; }
117 Location location() const { return location_; }
118 void set_location(Location location) { location_ = location; }
119 int min_manifest_version() const { return min_manifest_version_; }
120 void set_min_manifest_version(int min_manifest_version) {
121 min_manifest_version_ = min_manifest_version;
122 }
123 int max_manifest_version() const { return max_manifest_version_; }
124 void set_max_manifest_version(int max_manifest_version) {
125 max_manifest_version_ = max_manifest_version;
126 }
127 const std::string& command_line_switch() const {
128 return command_line_switch_;
129 } 107 }
130 void set_command_line_switch(const std::string& command_line_switch) { 108 void set_command_line_switch(const std::string& command_line_switch) {
131 command_line_switch_ = command_line_switch; 109 command_line_switch_ = command_line_switch;
132 } 110 }
111 void set_component_extensions_auto_granted(bool granted) {
112 component_extensions_auto_granted_ = granted;
113 }
114 void set_contexts(const std::vector<Context>& contexts) {
115 contexts_ = contexts;
116 }
117 void set_dependencies(const std::vector<std::string>& dependencies) {
118 dependencies_ = dependencies;
119 }
120 void set_extension_types(const std::vector<Manifest::Type> types) {
121 extension_types_ = types;
122 }
123 void set_internal(bool is_internal) { is_internal_ = is_internal; }
124 void set_location(Location location) { location_ = location; }
125 void set_matches(const std::vector<std::string>& matches);
126 void set_max_manifest_version(int max_manifest_version) {
127 max_manifest_version_ = max_manifest_version;
128 }
129 void set_min_manifest_version(int min_manifest_version) {
130 min_manifest_version_ = min_manifest_version;
131 }
132 void set_platforms(const std::vector<Platform>& platforms) {
133 platforms_ = platforms;
134 }
135 void set_whitelist(const std::vector<std::string>& whitelist) {
136 whitelist_ = whitelist;
137 }
138
139 protected:
140 // Accessors used by subclasses in feature verification.
141 const std::vector<std::string>& blacklist() const { return blacklist_; }
142 const std::vector<std::string>& whitelist() const { return whitelist_; }
143 const std::vector<Manifest::Type>& extension_types() const {
144 return extension_types_;
145 }
146 const std::vector<Platform>& platforms() const { return platforms_; }
147 const std::vector<Context>& contexts() const { return contexts_; }
148 const std::vector<std::string>& dependencies() const { return dependencies_; }
149 bool has_channel() const { return channel_.get() != nullptr; }
150 version_info::Channel channel() const { return *channel_; }
151 Location location() const { return location_; }
152 int min_manifest_version() const { return min_manifest_version_; }
153 int max_manifest_version() const { return max_manifest_version_; }
154 const std::string& command_line_switch() const {
155 return command_line_switch_;
156 }
157 bool component_extensions_auto_granted() const {
158 return component_extensions_auto_granted_;
159 }
160 const URLPatternSet& matches() const { return matches_; }
133 161
134 std::string GetAvailabilityMessage(AvailabilityResult result, 162 std::string GetAvailabilityMessage(AvailabilityResult result,
135 Manifest::Type type, 163 Manifest::Type type,
136 const GURL& url, 164 const GURL& url,
137 Context context, 165 Context context,
138 version_info::Channel channel) const; 166 version_info::Channel channel) const;
139 167
140 // Handy utilities which construct the correct availability message. 168 // Handy utilities which construct the correct availability message.
141 Availability CreateAvailability(AvailabilityResult result) const; 169 Availability CreateAvailability(AvailabilityResult result) const;
142 Availability CreateAvailability(AvailabilityResult result, 170 Availability CreateAvailability(AvailabilityResult result,
143 Manifest::Type type) const; 171 Manifest::Type type) const;
144 Availability CreateAvailability(AvailabilityResult result, 172 Availability CreateAvailability(AvailabilityResult result,
145 const GURL& url) const; 173 const GURL& url) const;
146 Availability CreateAvailability(AvailabilityResult result, 174 Availability CreateAvailability(AvailabilityResult result,
147 Context context) const; 175 Context context) const;
148 Availability CreateAvailability(AvailabilityResult result, 176 Availability CreateAvailability(AvailabilityResult result,
149 version_info::Channel channel) const; 177 version_info::Channel channel) const;
150 178
151 private: 179 private:
180 friend struct FeatureComparator;
152 friend class SimpleFeatureTest; 181 friend class SimpleFeatureTest;
153 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, ManifestFeatureTypes); 182 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, ManifestFeatureTypes);
154 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, PermissionFeatureTypes); 183 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, PermissionFeatureTypes);
155 FRIEND_TEST_ALL_PREFIXES(ExtensionAPITest, DefaultConfigurationFeatures); 184 FRIEND_TEST_ALL_PREFIXES(ExtensionAPITest, DefaultConfigurationFeatures);
185 FRIEND_TEST_ALL_PREFIXES(FeaturesGenerationTest, FeaturesTest);
156 FRIEND_TEST_ALL_PREFIXES(ManifestUnitTest, Extension); 186 FRIEND_TEST_ALL_PREFIXES(ManifestUnitTest, Extension);
157 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Blacklist); 187 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Blacklist);
158 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, CommandLineSwitch); 188 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, CommandLineSwitch);
159 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ComplexFeatureAvailability); 189 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ComplexFeatureAvailability);
160 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Context); 190 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Context);
161 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, FeatureValidation); 191 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, FeatureValidation);
162 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdBlacklist); 192 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdBlacklist);
163 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdWhitelist); 193 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdWhitelist);
164 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Inheritance); 194 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Inheritance);
165 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Location); 195 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Location);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 std::vector<std::string> whitelist_; 227 std::vector<std::string> whitelist_;
198 std::vector<std::string> dependencies_; 228 std::vector<std::string> dependencies_;
199 std::vector<Manifest::Type> extension_types_; 229 std::vector<Manifest::Type> extension_types_;
200 std::vector<Context> contexts_; 230 std::vector<Context> contexts_;
201 std::vector<Platform> platforms_; 231 std::vector<Platform> platforms_;
202 URLPatternSet matches_; 232 URLPatternSet matches_;
203 Location location_; 233 Location location_;
204 int min_manifest_version_; 234 int min_manifest_version_;
205 int max_manifest_version_; 235 int max_manifest_version_;
206 bool component_extensions_auto_granted_; 236 bool component_extensions_auto_granted_;
237 bool is_internal_;
207 std::string command_line_switch_; 238 std::string command_line_switch_;
208 std::unique_ptr<version_info::Channel> channel_; 239 std::unique_ptr<version_info::Channel> channel_;
209 bool internal_;
210 240
211 DISALLOW_COPY_AND_ASSIGN(SimpleFeature); 241 DISALLOW_COPY_AND_ASSIGN(SimpleFeature);
212 }; 242 };
213 243
214 } // namespace extensions 244 } // namespace extensions
215 245
216 #endif // EXTENSIONS_COMMON_FEATURES_SIMPLE_FEATURE_H_ 246 #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