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

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

Issue 2255613003: Introduce session type parameter to extension features (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Introduce session type parameter to extension features Created 4 years, 3 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
« no previous file with comments | « extensions/common/features/feature.h ('k') | extensions/common/features/simple_feature.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <initializer_list> 10 #include <initializer_list>
11 #include <memory> 11 #include <memory>
12 #include <set> 12 #include <set>
13 #include <string> 13 #include <string>
14 #include <vector> 14 #include <vector>
15 15
16 #include "base/callback_forward.h" 16 #include "base/callback_forward.h"
17 #include "base/gtest_prod_util.h" 17 #include "base/gtest_prod_util.h"
18 #include "base/lazy_instance.h" 18 #include "base/lazy_instance.h"
19 #include "base/macros.h" 19 #include "base/macros.h"
20 #include "base/values.h" 20 #include "base/values.h"
21 #include "components/version_info/version_info.h" 21 #include "components/version_info/version_info.h"
22 #include "extensions/common/extension.h" 22 #include "extensions/common/extension.h"
23 #include "extensions/common/features/feature.h" 23 #include "extensions/common/features/feature.h"
24 #include "extensions/common/features/feature_session_type.h"
24 #include "extensions/common/manifest.h" 25 #include "extensions/common/manifest.h"
25 26
26 namespace extensions { 27 namespace extensions {
27 28
28 class BaseFeatureProviderTest; 29 class BaseFeatureProviderTest;
29 class ExtensionAPITest; 30 class ExtensionAPITest;
30 class ManifestUnitTest; 31 class ManifestUnitTest;
31 class SimpleFeatureTest; 32 class SimpleFeatureTest;
32 33
33 class SimpleFeature : public Feature { 34 class SimpleFeature : public Feature {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 void set_channel(version_info::Channel channel) { 100 void set_channel(version_info::Channel channel) {
100 channel_.reset(new version_info::Channel(channel)); 101 channel_.reset(new version_info::Channel(channel));
101 } 102 }
102 void set_command_line_switch(base::StringPiece command_line_switch); 103 void set_command_line_switch(base::StringPiece command_line_switch);
103 void set_component_extensions_auto_granted(bool granted) { 104 void set_component_extensions_auto_granted(bool granted) {
104 component_extensions_auto_granted_ = granted; 105 component_extensions_auto_granted_ = granted;
105 } 106 }
106 void set_contexts(std::initializer_list<Context> contexts); 107 void set_contexts(std::initializer_list<Context> contexts);
107 void set_dependencies(std::initializer_list<const char* const> dependencies); 108 void set_dependencies(std::initializer_list<const char* const> dependencies);
108 void set_extension_types(std::initializer_list<Manifest::Type> types); 109 void set_extension_types(std::initializer_list<Manifest::Type> types);
110 void set_session_types(std::initializer_list<FeatureSessionType> types);
109 void set_internal(bool is_internal) { is_internal_ = is_internal; } 111 void set_internal(bool is_internal) { is_internal_ = is_internal; }
110 void set_location(Location location) { location_ = location; } 112 void set_location(Location location) { location_ = location; }
111 // set_matches() is an exception to pass-by-value since we construct an 113 // set_matches() is an exception to pass-by-value since we construct an
112 // URLPatternSet from the vector of strings. 114 // URLPatternSet from the vector of strings.
113 // TODO(devlin): Pass in an URLPatternSet directly. 115 // TODO(devlin): Pass in an URLPatternSet directly.
114 void set_matches(std::initializer_list<const char* const> matches); 116 void set_matches(std::initializer_list<const char* const> matches);
115 void set_max_manifest_version(int max_manifest_version) { 117 void set_max_manifest_version(int max_manifest_version) {
116 max_manifest_version_ = max_manifest_version; 118 max_manifest_version_ = max_manifest_version;
117 } 119 }
118 void set_min_manifest_version(int min_manifest_version) { 120 void set_min_manifest_version(int min_manifest_version) {
(...skipping 23 matching lines...) Expand all
142 } 144 }
143 bool component_extensions_auto_granted() const { 145 bool component_extensions_auto_granted() const {
144 return component_extensions_auto_granted_; 146 return component_extensions_auto_granted_;
145 } 147 }
146 const URLPatternSet& matches() const { return matches_; } 148 const URLPatternSet& matches() const { return matches_; }
147 149
148 std::string GetAvailabilityMessage(AvailabilityResult result, 150 std::string GetAvailabilityMessage(AvailabilityResult result,
149 Manifest::Type type, 151 Manifest::Type type,
150 const GURL& url, 152 const GURL& url,
151 Context context, 153 Context context,
152 version_info::Channel channel) const; 154 version_info::Channel channel,
155 FeatureSessionType session_type) const;
153 156
154 // Handy utilities which construct the correct availability message. 157 // Handy utilities which construct the correct availability message.
155 Availability CreateAvailability(AvailabilityResult result) const; 158 Availability CreateAvailability(AvailabilityResult result) const;
156 Availability CreateAvailability(AvailabilityResult result, 159 Availability CreateAvailability(AvailabilityResult result,
157 Manifest::Type type) const; 160 Manifest::Type type) const;
158 Availability CreateAvailability(AvailabilityResult result, 161 Availability CreateAvailability(AvailabilityResult result,
159 const GURL& url) const; 162 const GURL& url) const;
160 Availability CreateAvailability(AvailabilityResult result, 163 Availability CreateAvailability(AvailabilityResult result,
161 Context context) const; 164 Context context) const;
162 Availability CreateAvailability(AvailabilityResult result, 165 Availability CreateAvailability(AvailabilityResult result,
163 version_info::Channel channel) const; 166 version_info::Channel channel) const;
167 Availability CreateAvailability(AvailabilityResult result,
168 FeatureSessionType session_type) const;
164 169
165 private: 170 private:
166 friend struct FeatureComparator; 171 friend struct FeatureComparator;
167 friend class SimpleFeatureTest; 172 friend class SimpleFeatureTest;
168 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, ManifestFeatureTypes); 173 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, ManifestFeatureTypes);
169 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, PermissionFeatureTypes); 174 FRIEND_TEST_ALL_PREFIXES(BaseFeatureProviderTest, PermissionFeatureTypes);
170 FRIEND_TEST_ALL_PREFIXES(ExtensionAPITest, DefaultConfigurationFeatures); 175 FRIEND_TEST_ALL_PREFIXES(ExtensionAPITest, DefaultConfigurationFeatures);
171 FRIEND_TEST_ALL_PREFIXES(FeaturesGenerationTest, FeaturesTest); 176 FRIEND_TEST_ALL_PREFIXES(FeaturesGenerationTest, FeaturesTest);
172 FRIEND_TEST_ALL_PREFIXES(ManifestUnitTest, Extension); 177 FRIEND_TEST_ALL_PREFIXES(ManifestUnitTest, Extension);
173 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Blacklist); 178 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Blacklist);
174 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, CommandLineSwitch); 179 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, CommandLineSwitch);
175 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ComplexFeatureAvailability); 180 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ComplexFeatureAvailability);
176 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Context); 181 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Context);
182 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, SessionType);
177 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, FeatureValidation); 183 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, FeatureValidation);
178 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdBlacklist); 184 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdBlacklist);
179 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdWhitelist); 185 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, HashedIdWhitelist);
180 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Inheritance); 186 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Inheritance);
181 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Location); 187 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, Location);
182 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ManifestVersion); 188 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ManifestVersion);
183 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, PackageType); 189 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, PackageType);
184 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseContexts); 190 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseContexts);
185 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseLocation); 191 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseLocation);
186 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseManifestVersion); 192 FRIEND_TEST_ALL_PREFIXES(SimpleFeatureTest, ParseManifestVersion);
(...skipping 19 matching lines...) Expand all
206 static bool IsValidExtensionId(const std::string& extension_id); 212 static bool IsValidExtensionId(const std::string& extension_id);
207 213
208 // For clarity and consistency, we handle the default value of each of these 214 // For clarity and consistency, we handle the default value of each of these
209 // members the same way: it matches everything. It is up to the higher level 215 // members the same way: it matches everything. It is up to the higher level
210 // code that reads Features out of static data to validate that data and set 216 // code that reads Features out of static data to validate that data and set
211 // sensible defaults. 217 // sensible defaults.
212 std::vector<std::string> blacklist_; 218 std::vector<std::string> blacklist_;
213 std::vector<std::string> whitelist_; 219 std::vector<std::string> whitelist_;
214 std::vector<std::string> dependencies_; 220 std::vector<std::string> dependencies_;
215 std::vector<Manifest::Type> extension_types_; 221 std::vector<Manifest::Type> extension_types_;
222 std::vector<FeatureSessionType> session_types_;
216 std::vector<Context> contexts_; 223 std::vector<Context> contexts_;
217 std::vector<Platform> platforms_; 224 std::vector<Platform> platforms_;
218 URLPatternSet matches_; 225 URLPatternSet matches_;
219 Location location_; 226 Location location_;
220 int min_manifest_version_; 227 int min_manifest_version_;
221 int max_manifest_version_; 228 int max_manifest_version_;
222 bool component_extensions_auto_granted_; 229 bool component_extensions_auto_granted_;
223 bool is_internal_; 230 bool is_internal_;
224 std::string command_line_switch_; 231 std::string command_line_switch_;
225 std::unique_ptr<version_info::Channel> channel_; 232 std::unique_ptr<version_info::Channel> channel_;
226 233
227 DISALLOW_COPY_AND_ASSIGN(SimpleFeature); 234 DISALLOW_COPY_AND_ASSIGN(SimpleFeature);
228 }; 235 };
229 236
230 } // namespace extensions 237 } // namespace extensions
231 238
232 #endif // EXTENSIONS_COMMON_FEATURES_SIMPLE_FEATURE_H_ 239 #endif // EXTENSIONS_COMMON_FEATURES_SIMPLE_FEATURE_H_
OLDNEW
« no previous file with comments | « extensions/common/features/feature.h ('k') | extensions/common/features/simple_feature.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698