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

Side by Side Diff: extensions/common/features/simple_feature_unittest.cc

Issue 2151583003: [Extensions] Add extension feature generation code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Compile 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 #include "extensions/common/features/simple_feature.h" 5 #include "extensions/common/features/simple_feature.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 10
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 test.manifest_version, 110 test.manifest_version,
111 test.platform).result()); 111 test.platform).result());
112 } 112 }
113 } 113 }
114 114
115 TEST_F(SimpleFeatureTest, Whitelist) { 115 TEST_F(SimpleFeatureTest, Whitelist) {
116 const std::string kIdFoo("fooabbbbccccddddeeeeffffgggghhhh"); 116 const std::string kIdFoo("fooabbbbccccddddeeeeffffgggghhhh");
117 const std::string kIdBar("barabbbbccccddddeeeeffffgggghhhh"); 117 const std::string kIdBar("barabbbbccccddddeeeeffffgggghhhh");
118 const std::string kIdBaz("bazabbbbccccddddeeeeffffgggghhhh"); 118 const std::string kIdBaz("bazabbbbccccddddeeeeffffgggghhhh");
119 SimpleFeature feature; 119 SimpleFeature feature;
120 feature.whitelist()->push_back(kIdFoo); 120 feature.whitelist_.push_back(kIdFoo);
121 feature.whitelist()->push_back(kIdBar); 121 feature.whitelist_.push_back(kIdBar);
122 122
123 EXPECT_EQ( 123 EXPECT_EQ(
124 Feature::IS_AVAILABLE, 124 Feature::IS_AVAILABLE,
125 feature.IsAvailableToManifest(kIdFoo, 125 feature.IsAvailableToManifest(kIdFoo,
126 Manifest::TYPE_UNKNOWN, 126 Manifest::TYPE_UNKNOWN,
127 Manifest::INVALID_LOCATION, 127 Manifest::INVALID_LOCATION,
128 -1, 128 -1,
129 Feature::UNSPECIFIED_PLATFORM).result()); 129 Feature::UNSPECIFIED_PLATFORM).result());
130 EXPECT_EQ( 130 EXPECT_EQ(
131 Feature::IS_AVAILABLE, 131 Feature::IS_AVAILABLE,
(...skipping 11 matching lines...) Expand all
143 -1, 143 -1,
144 Feature::UNSPECIFIED_PLATFORM).result()); 144 Feature::UNSPECIFIED_PLATFORM).result());
145 EXPECT_EQ( 145 EXPECT_EQ(
146 Feature::NOT_FOUND_IN_WHITELIST, 146 Feature::NOT_FOUND_IN_WHITELIST,
147 feature.IsAvailableToManifest(std::string(), 147 feature.IsAvailableToManifest(std::string(),
148 Manifest::TYPE_UNKNOWN, 148 Manifest::TYPE_UNKNOWN,
149 Manifest::INVALID_LOCATION, 149 Manifest::INVALID_LOCATION,
150 -1, 150 -1,
151 Feature::UNSPECIFIED_PLATFORM).result()); 151 Feature::UNSPECIFIED_PLATFORM).result());
152 152
153 feature.extension_types()->push_back(Manifest::TYPE_LEGACY_PACKAGED_APP); 153 feature.extension_types_.push_back(Manifest::TYPE_LEGACY_PACKAGED_APP);
154 EXPECT_EQ( 154 EXPECT_EQ(
155 Feature::NOT_FOUND_IN_WHITELIST, 155 Feature::NOT_FOUND_IN_WHITELIST,
156 feature.IsAvailableToManifest(kIdBaz, 156 feature.IsAvailableToManifest(kIdBaz,
157 Manifest::TYPE_LEGACY_PACKAGED_APP, 157 Manifest::TYPE_LEGACY_PACKAGED_APP,
158 Manifest::INVALID_LOCATION, 158 Manifest::INVALID_LOCATION,
159 -1, 159 -1,
160 Feature::UNSPECIFIED_PLATFORM).result()); 160 Feature::UNSPECIFIED_PLATFORM).result());
161 } 161 }
162 162
163 TEST_F(SimpleFeatureTest, HashedIdWhitelist) { 163 TEST_F(SimpleFeatureTest, HashedIdWhitelist) {
164 // echo -n "fooabbbbccccddddeeeeffffgggghhhh" | 164 // echo -n "fooabbbbccccddddeeeeffffgggghhhh" |
165 // sha1sum | tr '[:lower:]' '[:upper:]' 165 // sha1sum | tr '[:lower:]' '[:upper:]'
166 const std::string kIdFoo("fooabbbbccccddddeeeeffffgggghhhh"); 166 const std::string kIdFoo("fooabbbbccccddddeeeeffffgggghhhh");
167 const std::string kIdFooHashed("55BC7228A0D502A2A48C9BB16B07062A01E62897"); 167 const std::string kIdFooHashed("55BC7228A0D502A2A48C9BB16B07062A01E62897");
168 SimpleFeature feature; 168 SimpleFeature feature;
169 169
170 feature.whitelist()->push_back(kIdFooHashed); 170 feature.whitelist_.push_back(kIdFooHashed);
171 171
172 EXPECT_EQ( 172 EXPECT_EQ(
173 Feature::IS_AVAILABLE, 173 Feature::IS_AVAILABLE,
174 feature.IsAvailableToManifest(kIdFoo, 174 feature.IsAvailableToManifest(kIdFoo,
175 Manifest::TYPE_UNKNOWN, 175 Manifest::TYPE_UNKNOWN,
176 Manifest::INVALID_LOCATION, 176 Manifest::INVALID_LOCATION,
177 -1, 177 -1,
178 Feature::UNSPECIFIED_PLATFORM).result()); 178 Feature::UNSPECIFIED_PLATFORM).result());
179 EXPECT_NE( 179 EXPECT_NE(
180 Feature::IS_AVAILABLE, 180 Feature::IS_AVAILABLE,
(...skipping 16 matching lines...) Expand all
197 Manifest::INVALID_LOCATION, 197 Manifest::INVALID_LOCATION,
198 -1, 198 -1,
199 Feature::UNSPECIFIED_PLATFORM).result()); 199 Feature::UNSPECIFIED_PLATFORM).result());
200 } 200 }
201 201
202 TEST_F(SimpleFeatureTest, Blacklist) { 202 TEST_F(SimpleFeatureTest, Blacklist) {
203 const std::string kIdFoo("fooabbbbccccddddeeeeffffgggghhhh"); 203 const std::string kIdFoo("fooabbbbccccddddeeeeffffgggghhhh");
204 const std::string kIdBar("barabbbbccccddddeeeeffffgggghhhh"); 204 const std::string kIdBar("barabbbbccccddddeeeeffffgggghhhh");
205 const std::string kIdBaz("bazabbbbccccddddeeeeffffgggghhhh"); 205 const std::string kIdBaz("bazabbbbccccddddeeeeffffgggghhhh");
206 SimpleFeature feature; 206 SimpleFeature feature;
207 feature.blacklist()->push_back(kIdFoo); 207 feature.blacklist_.push_back(kIdFoo);
208 feature.blacklist()->push_back(kIdBar); 208 feature.blacklist_.push_back(kIdBar);
209 209
210 EXPECT_EQ( 210 EXPECT_EQ(
211 Feature::FOUND_IN_BLACKLIST, 211 Feature::FOUND_IN_BLACKLIST,
212 feature.IsAvailableToManifest(kIdFoo, 212 feature.IsAvailableToManifest(kIdFoo,
213 Manifest::TYPE_UNKNOWN, 213 Manifest::TYPE_UNKNOWN,
214 Manifest::INVALID_LOCATION, 214 Manifest::INVALID_LOCATION,
215 -1, 215 -1,
216 Feature::UNSPECIFIED_PLATFORM).result()); 216 Feature::UNSPECIFIED_PLATFORM).result());
217 EXPECT_EQ( 217 EXPECT_EQ(
218 Feature::FOUND_IN_BLACKLIST, 218 Feature::FOUND_IN_BLACKLIST,
(...skipping 19 matching lines...) Expand all
238 Feature::UNSPECIFIED_PLATFORM).result()); 238 Feature::UNSPECIFIED_PLATFORM).result());
239 } 239 }
240 240
241 TEST_F(SimpleFeatureTest, HashedIdBlacklist) { 241 TEST_F(SimpleFeatureTest, HashedIdBlacklist) {
242 // echo -n "fooabbbbccccddddeeeeffffgggghhhh" | 242 // echo -n "fooabbbbccccddddeeeeffffgggghhhh" |
243 // sha1sum | tr '[:lower:]' '[:upper:]' 243 // sha1sum | tr '[:lower:]' '[:upper:]'
244 const std::string kIdFoo("fooabbbbccccddddeeeeffffgggghhhh"); 244 const std::string kIdFoo("fooabbbbccccddddeeeeffffgggghhhh");
245 const std::string kIdFooHashed("55BC7228A0D502A2A48C9BB16B07062A01E62897"); 245 const std::string kIdFooHashed("55BC7228A0D502A2A48C9BB16B07062A01E62897");
246 SimpleFeature feature; 246 SimpleFeature feature;
247 247
248 feature.blacklist()->push_back(kIdFooHashed); 248 feature.blacklist_.push_back(kIdFooHashed);
249 249
250 EXPECT_EQ( 250 EXPECT_EQ(
251 Feature::FOUND_IN_BLACKLIST, 251 Feature::FOUND_IN_BLACKLIST,
252 feature.IsAvailableToManifest(kIdFoo, 252 feature.IsAvailableToManifest(kIdFoo,
253 Manifest::TYPE_UNKNOWN, 253 Manifest::TYPE_UNKNOWN,
254 Manifest::INVALID_LOCATION, 254 Manifest::INVALID_LOCATION,
255 -1, 255 -1,
256 Feature::UNSPECIFIED_PLATFORM).result()); 256 Feature::UNSPECIFIED_PLATFORM).result());
257 EXPECT_NE( 257 EXPECT_NE(
258 Feature::FOUND_IN_BLACKLIST, 258 Feature::FOUND_IN_BLACKLIST,
(...skipping 13 matching lines...) Expand all
272 Feature::IS_AVAILABLE, 272 Feature::IS_AVAILABLE,
273 feature.IsAvailableToManifest("tooshortforanextensionid", 273 feature.IsAvailableToManifest("tooshortforanextensionid",
274 Manifest::TYPE_UNKNOWN, 274 Manifest::TYPE_UNKNOWN,
275 Manifest::INVALID_LOCATION, 275 Manifest::INVALID_LOCATION,
276 -1, 276 -1,
277 Feature::UNSPECIFIED_PLATFORM).result()); 277 Feature::UNSPECIFIED_PLATFORM).result());
278 } 278 }
279 279
280 TEST_F(SimpleFeatureTest, PackageType) { 280 TEST_F(SimpleFeatureTest, PackageType) {
281 SimpleFeature feature; 281 SimpleFeature feature;
282 feature.extension_types()->push_back(Manifest::TYPE_EXTENSION); 282 feature.extension_types_.push_back(Manifest::TYPE_EXTENSION);
283 feature.extension_types()->push_back(Manifest::TYPE_LEGACY_PACKAGED_APP); 283 feature.extension_types_.push_back(Manifest::TYPE_LEGACY_PACKAGED_APP);
284 284
285 EXPECT_EQ( 285 EXPECT_EQ(
286 Feature::IS_AVAILABLE, 286 Feature::IS_AVAILABLE,
287 feature.IsAvailableToManifest(std::string(), 287 feature.IsAvailableToManifest(std::string(),
288 Manifest::TYPE_EXTENSION, 288 Manifest::TYPE_EXTENSION,
289 Manifest::INVALID_LOCATION, 289 Manifest::INVALID_LOCATION,
290 -1, 290 -1,
291 Feature::UNSPECIFIED_PLATFORM).result()); 291 Feature::UNSPECIFIED_PLATFORM).result());
292 EXPECT_EQ( 292 EXPECT_EQ(
293 Feature::IS_AVAILABLE, 293 Feature::IS_AVAILABLE,
(...skipping 15 matching lines...) Expand all
309 feature.IsAvailableToManifest(std::string(), 309 feature.IsAvailableToManifest(std::string(),
310 Manifest::TYPE_THEME, 310 Manifest::TYPE_THEME,
311 Manifest::INVALID_LOCATION, 311 Manifest::INVALID_LOCATION,
312 -1, 312 -1,
313 Feature::UNSPECIFIED_PLATFORM).result()); 313 Feature::UNSPECIFIED_PLATFORM).result());
314 } 314 }
315 315
316 TEST_F(SimpleFeatureTest, Context) { 316 TEST_F(SimpleFeatureTest, Context) {
317 SimpleFeature feature; 317 SimpleFeature feature;
318 feature.set_name("somefeature"); 318 feature.set_name("somefeature");
319 feature.contexts()->push_back(Feature::BLESSED_EXTENSION_CONTEXT); 319 feature.contexts_.push_back(Feature::BLESSED_EXTENSION_CONTEXT);
320 feature.extension_types()->push_back(Manifest::TYPE_LEGACY_PACKAGED_APP); 320 feature.extension_types_.push_back(Manifest::TYPE_LEGACY_PACKAGED_APP);
321 feature.platforms()->push_back(Feature::CHROMEOS_PLATFORM); 321 feature.platforms_.push_back(Feature::CHROMEOS_PLATFORM);
322 feature.set_min_manifest_version(21); 322 feature.set_min_manifest_version(21);
323 feature.set_max_manifest_version(25); 323 feature.set_max_manifest_version(25);
324 324
325 base::DictionaryValue manifest; 325 base::DictionaryValue manifest;
326 manifest.SetString("name", "test"); 326 manifest.SetString("name", "test");
327 manifest.SetString("version", "1"); 327 manifest.SetString("version", "1");
328 manifest.SetInteger("manifest_version", 21); 328 manifest.SetInteger("manifest_version", 21);
329 manifest.SetString("app.launch.local_path", "foo.html"); 329 manifest.SetString("app.launch.local_path", "foo.html");
330 330
331 std::string error; 331 std::string error;
332 scoped_refptr<const Extension> extension(Extension::Create( 332 scoped_refptr<const Extension> extension(Extension::Create(
333 base::FilePath(), Manifest::INTERNAL, manifest, Extension::NO_FLAGS, 333 base::FilePath(), Manifest::INTERNAL, manifest, Extension::NO_FLAGS,
334 &error)); 334 &error));
335 EXPECT_EQ("", error); 335 EXPECT_EQ("", error);
336 ASSERT_TRUE(extension.get()); 336 ASSERT_TRUE(extension.get());
337 337
338 feature.whitelist()->push_back("monkey"); 338 feature.whitelist_.push_back("monkey");
339 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToContext( 339 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToContext(
340 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 340 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
341 Feature::CHROMEOS_PLATFORM).result()); 341 Feature::CHROMEOS_PLATFORM).result());
342 feature.whitelist()->clear(); 342 feature.whitelist_.clear();
343 343
344 feature.extension_types()->clear(); 344 feature.extension_types_.clear();
345 feature.extension_types()->push_back(Manifest::TYPE_THEME); 345 feature.extension_types_.push_back(Manifest::TYPE_THEME);
346 { 346 {
347 Feature::Availability availability = feature.IsAvailableToContext( 347 Feature::Availability availability = feature.IsAvailableToContext(
348 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 348 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
349 Feature::CHROMEOS_PLATFORM); 349 Feature::CHROMEOS_PLATFORM);
350 EXPECT_EQ(Feature::INVALID_TYPE, availability.result()); 350 EXPECT_EQ(Feature::INVALID_TYPE, availability.result());
351 EXPECT_EQ("'somefeature' is only allowed for themes, " 351 EXPECT_EQ("'somefeature' is only allowed for themes, "
352 "but this is a legacy packaged app.", 352 "but this is a legacy packaged app.",
353 availability.message()); 353 availability.message());
354 } 354 }
355 355
356 feature.extension_types()->clear(); 356 feature.extension_types_.clear();
357 feature.extension_types()->push_back(Manifest::TYPE_LEGACY_PACKAGED_APP); 357 feature.extension_types_.push_back(Manifest::TYPE_LEGACY_PACKAGED_APP);
358 feature.contexts()->clear(); 358 feature.contexts_.clear();
359 feature.contexts()->push_back(Feature::UNBLESSED_EXTENSION_CONTEXT); 359 feature.contexts_.push_back(Feature::UNBLESSED_EXTENSION_CONTEXT);
360 feature.contexts()->push_back(Feature::CONTENT_SCRIPT_CONTEXT); 360 feature.contexts_.push_back(Feature::CONTENT_SCRIPT_CONTEXT);
361 { 361 {
362 Feature::Availability availability = feature.IsAvailableToContext( 362 Feature::Availability availability = feature.IsAvailableToContext(
363 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 363 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
364 Feature::CHROMEOS_PLATFORM); 364 Feature::CHROMEOS_PLATFORM);
365 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result()); 365 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result());
366 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes and " 366 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes and "
367 "content scripts, but this is a privileged page", 367 "content scripts, but this is a privileged page",
368 availability.message()); 368 availability.message());
369 } 369 }
370 370
371 feature.contexts()->push_back(Feature::WEB_PAGE_CONTEXT); 371 feature.contexts_.push_back(Feature::WEB_PAGE_CONTEXT);
372 { 372 {
373 Feature::Availability availability = feature.IsAvailableToContext( 373 Feature::Availability availability = feature.IsAvailableToContext(
374 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 374 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
375 Feature::CHROMEOS_PLATFORM); 375 Feature::CHROMEOS_PLATFORM);
376 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result()); 376 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result());
377 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes, " 377 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes, "
378 "content scripts, and web pages, but this is a privileged page", 378 "content scripts, and web pages, but this is a privileged page",
379 availability.message()); 379 availability.message());
380 } 380 }
381 381
382 feature.contexts()->clear(); 382 feature.contexts_.clear();
383 feature.contexts()->push_back(Feature::BLESSED_EXTENSION_CONTEXT); 383 feature.contexts_.push_back(Feature::BLESSED_EXTENSION_CONTEXT);
384 feature.set_location(SimpleFeature::COMPONENT_LOCATION); 384 feature.set_location(SimpleFeature::COMPONENT_LOCATION);
385 EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext( 385 EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext(
386 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 386 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
387 Feature::CHROMEOS_PLATFORM).result()); 387 Feature::CHROMEOS_PLATFORM).result());
388 feature.set_location(SimpleFeature::UNSPECIFIED_LOCATION); 388 feature.set_location(SimpleFeature::UNSPECIFIED_LOCATION);
389 389
390 EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext( 390 EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext(
391 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 391 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
392 Feature::UNSPECIFIED_PLATFORM).result()); 392 Feature::UNSPECIFIED_PLATFORM).result());
393 393
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 Manifest::EXTERNAL_PREF_DOWNLOAD)); 446 Manifest::EXTERNAL_PREF_DOWNLOAD));
447 447
448 // External component extensions can access the "external_component" 448 // External component extensions can access the "external_component"
449 // location. 449 // location.
450 EXPECT_TRUE(LocationIsAvailable(SimpleFeature::EXTERNAL_COMPONENT_LOCATION, 450 EXPECT_TRUE(LocationIsAvailable(SimpleFeature::EXTERNAL_COMPONENT_LOCATION,
451 Manifest::EXTERNAL_COMPONENT)); 451 Manifest::EXTERNAL_COMPONENT));
452 } 452 }
453 453
454 TEST_F(SimpleFeatureTest, Platform) { 454 TEST_F(SimpleFeatureTest, Platform) {
455 SimpleFeature feature; 455 SimpleFeature feature;
456 feature.platforms()->push_back(Feature::CHROMEOS_PLATFORM); 456 feature.platforms_.push_back(Feature::CHROMEOS_PLATFORM);
457 EXPECT_EQ(Feature::IS_AVAILABLE, 457 EXPECT_EQ(Feature::IS_AVAILABLE,
458 feature.IsAvailableToManifest(std::string(), 458 feature.IsAvailableToManifest(std::string(),
459 Manifest::TYPE_UNKNOWN, 459 Manifest::TYPE_UNKNOWN,
460 Manifest::INVALID_LOCATION, 460 Manifest::INVALID_LOCATION,
461 -1, 461 -1,
462 Feature::CHROMEOS_PLATFORM).result()); 462 Feature::CHROMEOS_PLATFORM).result());
463 EXPECT_EQ( 463 EXPECT_EQ(
464 Feature::INVALID_PLATFORM, 464 Feature::INVALID_PLATFORM,
465 feature.IsAvailableToManifest(std::string(), 465 feature.IsAvailableToManifest(std::string(),
466 Manifest::TYPE_UNKNOWN, 466 Manifest::TYPE_UNKNOWN,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 Manifest::TYPE_UNKNOWN, 525 Manifest::TYPE_UNKNOWN,
526 Manifest::INVALID_LOCATION, 526 Manifest::INVALID_LOCATION,
527 7, 527 7,
528 Feature::UNSPECIFIED_PLATFORM).result()); 528 Feature::UNSPECIFIED_PLATFORM).result());
529 } 529 }
530 530
531 TEST_F(SimpleFeatureTest, ParseNull) { 531 TEST_F(SimpleFeatureTest, ParseNull) {
532 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 532 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
533 std::unique_ptr<SimpleFeature> feature(new SimpleFeature()); 533 std::unique_ptr<SimpleFeature> feature(new SimpleFeature());
534 feature->Parse(value.get()); 534 feature->Parse(value.get());
535 EXPECT_TRUE(feature->whitelist()->empty()); 535 EXPECT_TRUE(feature->whitelist().empty());
536 EXPECT_TRUE(feature->extension_types()->empty()); 536 EXPECT_TRUE(feature->extension_types().empty());
537 EXPECT_TRUE(feature->contexts()->empty()); 537 EXPECT_TRUE(feature->contexts().empty());
538 EXPECT_EQ(SimpleFeature::UNSPECIFIED_LOCATION, feature->location()); 538 EXPECT_EQ(SimpleFeature::UNSPECIFIED_LOCATION, feature->location());
539 EXPECT_TRUE(feature->platforms()->empty()); 539 EXPECT_TRUE(feature->platforms().empty());
540 EXPECT_EQ(0, feature->min_manifest_version()); 540 EXPECT_EQ(0, feature->min_manifest_version());
541 EXPECT_EQ(0, feature->max_manifest_version()); 541 EXPECT_EQ(0, feature->max_manifest_version());
542 } 542 }
543 543
544 TEST_F(SimpleFeatureTest, ParseWhitelist) { 544 TEST_F(SimpleFeatureTest, ParseWhitelist) {
545 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 545 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
546 base::ListValue* whitelist = new base::ListValue(); 546 base::ListValue* whitelist = new base::ListValue();
547 whitelist->AppendString("foo"); 547 whitelist->AppendString("foo");
548 whitelist->AppendString("bar"); 548 whitelist->AppendString("bar");
549 value->Set("whitelist", whitelist); 549 value->Set("whitelist", whitelist);
550 std::unique_ptr<SimpleFeature> feature(new SimpleFeature()); 550 std::unique_ptr<SimpleFeature> feature(new SimpleFeature());
551 feature->Parse(value.get()); 551 feature->Parse(value.get());
552 EXPECT_EQ(2u, feature->whitelist()->size()); 552 EXPECT_EQ(2u, feature->whitelist().size());
553 EXPECT_TRUE(STLCount(*(feature->whitelist()), "foo")); 553 EXPECT_TRUE(STLCount(feature->whitelist(), "foo"));
554 EXPECT_TRUE(STLCount(*(feature->whitelist()), "bar")); 554 EXPECT_TRUE(STLCount(feature->whitelist(), "bar"));
555 } 555 }
556 556
557 TEST_F(SimpleFeatureTest, ParsePackageTypes) { 557 TEST_F(SimpleFeatureTest, ParsePackageTypes) {
558 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 558 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
559 base::ListValue* extension_types = new base::ListValue(); 559 base::ListValue* extension_types = new base::ListValue();
560 extension_types->AppendString("extension"); 560 extension_types->AppendString("extension");
561 extension_types->AppendString("theme"); 561 extension_types->AppendString("theme");
562 extension_types->AppendString("legacy_packaged_app"); 562 extension_types->AppendString("legacy_packaged_app");
563 extension_types->AppendString("hosted_app"); 563 extension_types->AppendString("hosted_app");
564 extension_types->AppendString("platform_app"); 564 extension_types->AppendString("platform_app");
565 extension_types->AppendString("shared_module"); 565 extension_types->AppendString("shared_module");
566 value->Set("extension_types", extension_types); 566 value->Set("extension_types", extension_types);
567 std::unique_ptr<SimpleFeature> feature(new SimpleFeature()); 567 std::unique_ptr<SimpleFeature> feature(new SimpleFeature());
568 feature->Parse(value.get()); 568 feature->Parse(value.get());
569 EXPECT_EQ(6u, feature->extension_types()->size()); 569 EXPECT_EQ(6u, feature->extension_types().size());
570 EXPECT_TRUE(STLCount(feature->extension_types(), Manifest::TYPE_EXTENSION));
571 EXPECT_TRUE(STLCount(feature->extension_types(), Manifest::TYPE_THEME));
570 EXPECT_TRUE( 572 EXPECT_TRUE(
571 STLCount(*(feature->extension_types()), Manifest::TYPE_EXTENSION)); 573 STLCount(feature->extension_types(), Manifest::TYPE_LEGACY_PACKAGED_APP));
574 EXPECT_TRUE(STLCount(feature->extension_types(), Manifest::TYPE_HOSTED_APP));
572 EXPECT_TRUE( 575 EXPECT_TRUE(
573 STLCount(*(feature->extension_types()), Manifest::TYPE_THEME)); 576 STLCount(feature->extension_types(), Manifest::TYPE_PLATFORM_APP));
574 EXPECT_TRUE( 577 EXPECT_TRUE(
575 STLCount( 578 STLCount(feature->extension_types(), Manifest::TYPE_SHARED_MODULE));
576 *(feature->extension_types()), Manifest::TYPE_LEGACY_PACKAGED_APP));
577 EXPECT_TRUE(
578 STLCount(*(feature->extension_types()), Manifest::TYPE_HOSTED_APP));
579 EXPECT_TRUE(
580 STLCount(*(feature->extension_types()), Manifest::TYPE_PLATFORM_APP));
581 EXPECT_TRUE(
582 STLCount(*(feature->extension_types()), Manifest::TYPE_SHARED_MODULE));
583 579
584 value->SetString("extension_types", "all"); 580 value->SetString("extension_types", "all");
585 std::unique_ptr<SimpleFeature> feature2(new SimpleFeature()); 581 std::unique_ptr<SimpleFeature> feature2(new SimpleFeature());
586 feature2->Parse(value.get()); 582 feature2->Parse(value.get());
587 EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types())); 583 EXPECT_EQ(feature->extension_types(), feature2->extension_types());
588 } 584 }
589 585
590 TEST_F(SimpleFeatureTest, ParseContexts) { 586 TEST_F(SimpleFeatureTest, ParseContexts) {
591 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 587 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
592 base::ListValue* contexts = new base::ListValue(); 588 base::ListValue* contexts = new base::ListValue();
593 contexts->AppendString("blessed_extension"); 589 contexts->AppendString("blessed_extension");
594 contexts->AppendString("unblessed_extension"); 590 contexts->AppendString("unblessed_extension");
595 contexts->AppendString("content_script"); 591 contexts->AppendString("content_script");
596 contexts->AppendString("web_page"); 592 contexts->AppendString("web_page");
597 contexts->AppendString("blessed_web_page"); 593 contexts->AppendString("blessed_web_page");
598 contexts->AppendString("webui"); 594 contexts->AppendString("webui");
599 contexts->AppendString("extension_service_worker"); 595 contexts->AppendString("extension_service_worker");
600 value->Set("contexts", contexts); 596 value->Set("contexts", contexts);
601 std::unique_ptr<SimpleFeature> feature(new SimpleFeature()); 597 std::unique_ptr<SimpleFeature> feature(new SimpleFeature());
602 feature->Parse(value.get()); 598 feature->Parse(value.get());
603 EXPECT_EQ(7u, feature->contexts()->size()); 599 EXPECT_EQ(7u, feature->contexts().size());
604 EXPECT_TRUE( 600 EXPECT_TRUE(
605 STLCount(*(feature->contexts()), Feature::BLESSED_EXTENSION_CONTEXT)); 601 STLCount(feature->contexts(), Feature::BLESSED_EXTENSION_CONTEXT));
606 EXPECT_TRUE( 602 EXPECT_TRUE(
607 STLCount(*(feature->contexts()), Feature::UNBLESSED_EXTENSION_CONTEXT)); 603 STLCount(feature->contexts(), Feature::UNBLESSED_EXTENSION_CONTEXT));
608 EXPECT_TRUE( 604 EXPECT_TRUE(STLCount(feature->contexts(), Feature::CONTENT_SCRIPT_CONTEXT));
609 STLCount(*(feature->contexts()), Feature::CONTENT_SCRIPT_CONTEXT)); 605 EXPECT_TRUE(STLCount(feature->contexts(), Feature::WEB_PAGE_CONTEXT));
610 EXPECT_TRUE( 606 EXPECT_TRUE(STLCount(feature->contexts(), Feature::BLESSED_WEB_PAGE_CONTEXT));
611 STLCount(*(feature->contexts()), Feature::WEB_PAGE_CONTEXT));
612 EXPECT_TRUE(
613 STLCount(*(feature->contexts()), Feature::BLESSED_WEB_PAGE_CONTEXT));
614 607
615 value->SetString("contexts", "all"); 608 value->SetString("contexts", "all");
616 std::unique_ptr<SimpleFeature> feature2(new SimpleFeature()); 609 std::unique_ptr<SimpleFeature> feature2(new SimpleFeature());
617 feature2->Parse(value.get()); 610 feature2->Parse(value.get());
618 EXPECT_EQ(*(feature->contexts()), *(feature2->contexts())); 611 EXPECT_EQ(feature->contexts(), feature2->contexts());
619 } 612 }
620 613
621 TEST_F(SimpleFeatureTest, ParseLocation) { 614 TEST_F(SimpleFeatureTest, ParseLocation) {
622 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 615 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
623 value->SetString("location", "component"); 616 value->SetString("location", "component");
624 std::unique_ptr<SimpleFeature> feature(new SimpleFeature()); 617 std::unique_ptr<SimpleFeature> feature(new SimpleFeature());
625 feature->Parse(value.get()); 618 feature->Parse(value.get());
626 EXPECT_EQ(SimpleFeature::COMPONENT_LOCATION, feature->location()); 619 EXPECT_EQ(SimpleFeature::COMPONENT_LOCATION, feature->location());
627 } 620 }
628 621
629 TEST_F(SimpleFeatureTest, ParsePlatforms) { 622 TEST_F(SimpleFeatureTest, ParsePlatforms) {
630 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 623 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
631 std::unique_ptr<SimpleFeature> feature(new SimpleFeature()); 624 std::unique_ptr<SimpleFeature> feature(new SimpleFeature());
632 base::ListValue* platforms = new base::ListValue(); 625 base::ListValue* platforms = new base::ListValue();
633 value->Set("platforms", platforms); 626 value->Set("platforms", platforms);
634 feature->Parse(value.get()); 627 feature->Parse(value.get());
635 EXPECT_TRUE(feature->platforms()->empty()); 628 EXPECT_TRUE(feature->platforms().empty());
636 629
637 platforms->AppendString("chromeos"); 630 platforms->AppendString("chromeos");
638 feature->Parse(value.get()); 631 feature->Parse(value.get());
639 EXPECT_FALSE(feature->platforms()->empty()); 632 EXPECT_FALSE(feature->platforms().empty());
640 EXPECT_EQ(Feature::CHROMEOS_PLATFORM, *feature->platforms()->begin()); 633 EXPECT_EQ(Feature::CHROMEOS_PLATFORM, *feature->platforms().begin());
641 634
642 platforms->Clear(); 635 platforms->Clear();
643 platforms->AppendString("win"); 636 platforms->AppendString("win");
644 feature->Parse(value.get()); 637 feature->Parse(value.get());
645 EXPECT_FALSE(feature->platforms()->empty()); 638 EXPECT_FALSE(feature->platforms().empty());
646 EXPECT_EQ(Feature::WIN_PLATFORM, *feature->platforms()->begin()); 639 EXPECT_EQ(Feature::WIN_PLATFORM, *feature->platforms().begin());
647 640
648 platforms->Clear(); 641 platforms->Clear();
649 platforms->AppendString("win"); 642 platforms->AppendString("win");
650 platforms->AppendString("chromeos"); 643 platforms->AppendString("chromeos");
651 feature->Parse(value.get()); 644 feature->Parse(value.get());
652 std::vector<Feature::Platform> expected_platforms; 645 std::vector<Feature::Platform> expected_platforms;
653 expected_platforms.push_back(Feature::CHROMEOS_PLATFORM); 646 expected_platforms.push_back(Feature::CHROMEOS_PLATFORM);
654 expected_platforms.push_back(Feature::WIN_PLATFORM); 647 expected_platforms.push_back(Feature::WIN_PLATFORM);
655 648
656 EXPECT_FALSE(feature->platforms()->empty()); 649 EXPECT_FALSE(feature->platforms().empty());
657 EXPECT_EQ(expected_platforms, *feature->platforms()); 650 EXPECT_EQ(expected_platforms, feature->platforms());
658 } 651 }
659 652
660 TEST_F(SimpleFeatureTest, ParseManifestVersion) { 653 TEST_F(SimpleFeatureTest, ParseManifestVersion) {
661 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 654 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
662 value->SetInteger("min_manifest_version", 1); 655 value->SetInteger("min_manifest_version", 1);
663 value->SetInteger("max_manifest_version", 5); 656 value->SetInteger("max_manifest_version", 5);
664 std::unique_ptr<SimpleFeature> feature(new SimpleFeature()); 657 std::unique_ptr<SimpleFeature> feature(new SimpleFeature());
665 feature->Parse(value.get()); 658 feature->Parse(value.get());
666 EXPECT_EQ(1, feature->min_manifest_version()); 659 EXPECT_EQ(1, feature->min_manifest_version());
667 EXPECT_EQ(5, feature->max_manifest_version()); 660 EXPECT_EQ(5, feature->max_manifest_version());
668 } 661 }
669 662
670 TEST_F(SimpleFeatureTest, Inheritance) { 663 TEST_F(SimpleFeatureTest, Inheritance) {
671 SimpleFeature feature; 664 SimpleFeature feature;
672 feature.whitelist()->push_back("foo"); 665 feature.whitelist_.push_back("foo");
673 feature.extension_types()->push_back(Manifest::TYPE_THEME); 666 feature.extension_types_.push_back(Manifest::TYPE_THEME);
674 feature.contexts()->push_back(Feature::BLESSED_EXTENSION_CONTEXT); 667 feature.contexts_.push_back(Feature::BLESSED_EXTENSION_CONTEXT);
675 feature.set_location(SimpleFeature::COMPONENT_LOCATION); 668 feature.set_location(SimpleFeature::COMPONENT_LOCATION);
676 feature.platforms()->push_back(Feature::CHROMEOS_PLATFORM); 669 feature.platforms_.push_back(Feature::CHROMEOS_PLATFORM);
677 feature.set_min_manifest_version(1); 670 feature.set_min_manifest_version(1);
678 feature.set_max_manifest_version(2); 671 feature.set_max_manifest_version(2);
679 672
680 // Test additive parsing. Parsing an empty dictionary should result in no 673 // Test additive parsing. Parsing an empty dictionary should result in no
681 // changes to a SimpleFeature. 674 // changes to a SimpleFeature.
682 base::DictionaryValue definition; 675 base::DictionaryValue definition;
683 feature.Parse(&definition); 676 feature.Parse(&definition);
684 EXPECT_EQ(1u, feature.whitelist()->size()); 677 EXPECT_EQ(1u, feature.whitelist().size());
685 EXPECT_EQ(1u, feature.extension_types()->size()); 678 EXPECT_EQ(1u, feature.extension_types().size());
686 EXPECT_EQ(1u, feature.contexts()->size()); 679 EXPECT_EQ(1u, feature.contexts().size());
687 EXPECT_EQ(1, STLCount(*(feature.whitelist()), "foo")); 680 EXPECT_EQ(1, STLCount(feature.whitelist(), "foo"));
688 EXPECT_EQ(SimpleFeature::COMPONENT_LOCATION, feature.location()); 681 EXPECT_EQ(SimpleFeature::COMPONENT_LOCATION, feature.location());
689 EXPECT_EQ(1u, feature.platforms()->size()); 682 EXPECT_EQ(1u, feature.platforms().size());
690 EXPECT_EQ(1, STLCount(*(feature.platforms()), Feature::CHROMEOS_PLATFORM)); 683 EXPECT_EQ(1, STLCount(feature.platforms(), Feature::CHROMEOS_PLATFORM));
691 EXPECT_EQ(1, feature.min_manifest_version()); 684 EXPECT_EQ(1, feature.min_manifest_version());
692 EXPECT_EQ(2, feature.max_manifest_version()); 685 EXPECT_EQ(2, feature.max_manifest_version());
693 686
694 base::ListValue* whitelist = new base::ListValue(); 687 base::ListValue* whitelist = new base::ListValue();
695 base::ListValue* extension_types = new base::ListValue(); 688 base::ListValue* extension_types = new base::ListValue();
696 base::ListValue* contexts = new base::ListValue(); 689 base::ListValue* contexts = new base::ListValue();
697 whitelist->AppendString("bar"); 690 whitelist->AppendString("bar");
698 extension_types->AppendString("extension"); 691 extension_types->AppendString("extension");
699 contexts->AppendString("unblessed_extension"); 692 contexts->AppendString("unblessed_extension");
700 definition.Set("whitelist", whitelist); 693 definition.Set("whitelist", whitelist);
701 definition.Set("extension_types", extension_types); 694 definition.Set("extension_types", extension_types);
702 definition.Set("contexts", contexts); 695 definition.Set("contexts", contexts);
703 // Can't test location or platform because we only have one value so far. 696 // Can't test location or platform because we only have one value so far.
704 definition.Set("min_manifest_version", new base::FundamentalValue(2)); 697 definition.Set("min_manifest_version", new base::FundamentalValue(2));
705 definition.Set("max_manifest_version", new base::FundamentalValue(3)); 698 definition.Set("max_manifest_version", new base::FundamentalValue(3));
706 699
707 feature.Parse(&definition); 700 feature.Parse(&definition);
708 EXPECT_EQ(1u, feature.whitelist()->size()); 701 EXPECT_EQ(1u, feature.whitelist().size());
709 EXPECT_EQ(1u, feature.extension_types()->size()); 702 EXPECT_EQ(1u, feature.extension_types().size());
710 EXPECT_EQ(1u, feature.contexts()->size()); 703 EXPECT_EQ(1u, feature.contexts().size());
711 EXPECT_EQ(1, STLCount(*(feature.whitelist()), "bar")); 704 EXPECT_EQ(1, STLCount(feature.whitelist(), "bar"));
705 EXPECT_EQ(1, STLCount(feature.extension_types(), Manifest::TYPE_EXTENSION));
712 EXPECT_EQ(1, 706 EXPECT_EQ(1,
713 STLCount(*(feature.extension_types()), Manifest::TYPE_EXTENSION)); 707 STLCount(feature.contexts(), Feature::UNBLESSED_EXTENSION_CONTEXT));
714 EXPECT_EQ(1,
715 STLCount(
716 *(feature.contexts()), Feature::UNBLESSED_EXTENSION_CONTEXT));
717 EXPECT_EQ(2, feature.min_manifest_version()); 708 EXPECT_EQ(2, feature.min_manifest_version());
718 EXPECT_EQ(3, feature.max_manifest_version()); 709 EXPECT_EQ(3, feature.max_manifest_version());
719 } 710 }
720 711
721 TEST_F(SimpleFeatureTest, CommandLineSwitch) { 712 TEST_F(SimpleFeatureTest, CommandLineSwitch) {
722 SimpleFeature feature; 713 SimpleFeature feature;
723 feature.set_command_line_switch("laser-beams"); 714 feature.set_command_line_switch("laser-beams");
724 { 715 {
725 EXPECT_EQ(Feature::MISSING_COMMAND_LINE_SWITCH, 716 EXPECT_EQ(Feature::MISSING_COMMAND_LINE_SWITCH,
726 feature.IsAvailableToEnvironment().result()); 717 feature.IsAvailableToEnvironment().result());
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1007 Feature::IS_AVAILABLE, 998 Feature::IS_AVAILABLE,
1008 feature->IsAvailableToManifest("1", 999 feature->IsAvailableToManifest("1",
1009 Manifest::TYPE_EXTENSION, 1000 Manifest::TYPE_EXTENSION,
1010 Manifest::INVALID_LOCATION, 1001 Manifest::INVALID_LOCATION,
1011 Feature::UNSPECIFIED_PLATFORM, 1002 Feature::UNSPECIFIED_PLATFORM,
1012 Feature::GetCurrentPlatform()).result()); 1003 Feature::GetCurrentPlatform()).result());
1013 } 1004 }
1014 } 1005 }
1015 1006
1016 } // namespace extensions 1007 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698