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

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: Dirk's 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( 570 EXPECT_TRUE(
571 STLCount(*(feature->extension_types()), Manifest::TYPE_EXTENSION)); 571 STLCount(*(feature->extension_types()), Manifest::TYPE_EXTENSION));
572 EXPECT_TRUE( 572 EXPECT_TRUE(
573 STLCount(*(feature->extension_types()), Manifest::TYPE_THEME)); 573 STLCount(*(feature->extension_types()), Manifest::TYPE_THEME));
574 EXPECT_TRUE( 574 EXPECT_TRUE(
575 STLCount( 575 STLCount(
576 *(feature->extension_types()), Manifest::TYPE_LEGACY_PACKAGED_APP)); 576 *(feature->extension_types()), Manifest::TYPE_LEGACY_PACKAGED_APP));
577 EXPECT_TRUE( 577 EXPECT_TRUE(
578 STLCount(*(feature->extension_types()), Manifest::TYPE_HOSTED_APP)); 578 STLCount(*(feature->extension_types()), Manifest::TYPE_HOSTED_APP));
579 EXPECT_TRUE( 579 EXPECT_TRUE(
(...skipping 13 matching lines...) Expand all
593 contexts->AppendString("blessed_extension"); 593 contexts->AppendString("blessed_extension");
594 contexts->AppendString("unblessed_extension"); 594 contexts->AppendString("unblessed_extension");
595 contexts->AppendString("content_script"); 595 contexts->AppendString("content_script");
596 contexts->AppendString("web_page"); 596 contexts->AppendString("web_page");
597 contexts->AppendString("blessed_web_page"); 597 contexts->AppendString("blessed_web_page");
598 contexts->AppendString("webui"); 598 contexts->AppendString("webui");
599 contexts->AppendString("extension_service_worker"); 599 contexts->AppendString("extension_service_worker");
600 value->Set("contexts", contexts); 600 value->Set("contexts", contexts);
601 std::unique_ptr<SimpleFeature> feature(new SimpleFeature()); 601 std::unique_ptr<SimpleFeature> feature(new SimpleFeature());
602 feature->Parse(value.get()); 602 feature->Parse(value.get());
603 EXPECT_EQ(7u, feature->contexts()->size()); 603 EXPECT_EQ(7u, feature->contexts().size());
604 EXPECT_TRUE( 604 EXPECT_TRUE(
605 STLCount(*(feature->contexts()), Feature::BLESSED_EXTENSION_CONTEXT)); 605 STLCount(*(feature->contexts()), Feature::BLESSED_EXTENSION_CONTEXT));
606 EXPECT_TRUE( 606 EXPECT_TRUE(
607 STLCount(*(feature->contexts()), Feature::UNBLESSED_EXTENSION_CONTEXT)); 607 STLCount(*(feature->contexts()), Feature::UNBLESSED_EXTENSION_CONTEXT));
608 EXPECT_TRUE( 608 EXPECT_TRUE(
609 STLCount(*(feature->contexts()), Feature::CONTENT_SCRIPT_CONTEXT)); 609 STLCount(*(feature->contexts()), Feature::CONTENT_SCRIPT_CONTEXT));
610 EXPECT_TRUE( 610 EXPECT_TRUE(
611 STLCount(*(feature->contexts()), Feature::WEB_PAGE_CONTEXT)); 611 STLCount(*(feature->contexts()), Feature::WEB_PAGE_CONTEXT));
612 EXPECT_TRUE( 612 EXPECT_TRUE(
613 STLCount(*(feature->contexts()), Feature::BLESSED_WEB_PAGE_CONTEXT)); 613 STLCount(*(feature->contexts()), Feature::BLESSED_WEB_PAGE_CONTEXT));
(...skipping 11 matching lines...) Expand all
625 feature->Parse(value.get()); 625 feature->Parse(value.get());
626 EXPECT_EQ(SimpleFeature::COMPONENT_LOCATION, feature->location()); 626 EXPECT_EQ(SimpleFeature::COMPONENT_LOCATION, feature->location());
627 } 627 }
628 628
629 TEST_F(SimpleFeatureTest, ParsePlatforms) { 629 TEST_F(SimpleFeatureTest, ParsePlatforms) {
630 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 630 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
631 std::unique_ptr<SimpleFeature> feature(new SimpleFeature()); 631 std::unique_ptr<SimpleFeature> feature(new SimpleFeature());
632 base::ListValue* platforms = new base::ListValue(); 632 base::ListValue* platforms = new base::ListValue();
633 value->Set("platforms", platforms); 633 value->Set("platforms", platforms);
634 feature->Parse(value.get()); 634 feature->Parse(value.get());
635 EXPECT_TRUE(feature->platforms()->empty()); 635 EXPECT_TRUE(feature->platforms().empty());
636 636
637 platforms->AppendString("chromeos"); 637 platforms->AppendString("chromeos");
638 feature->Parse(value.get()); 638 feature->Parse(value.get());
639 EXPECT_FALSE(feature->platforms()->empty()); 639 EXPECT_FALSE(feature->platforms().empty());
640 EXPECT_EQ(Feature::CHROMEOS_PLATFORM, *feature->platforms()->begin()); 640 EXPECT_EQ(Feature::CHROMEOS_PLATFORM, *feature->platforms()->begin());
641 641
642 platforms->Clear(); 642 platforms->Clear();
643 platforms->AppendString("win"); 643 platforms->AppendString("win");
644 feature->Parse(value.get()); 644 feature->Parse(value.get());
645 EXPECT_FALSE(feature->platforms()->empty()); 645 EXPECT_FALSE(feature->platforms().empty());
646 EXPECT_EQ(Feature::WIN_PLATFORM, *feature->platforms()->begin()); 646 EXPECT_EQ(Feature::WIN_PLATFORM, *feature->platforms()->begin());
647 647
648 platforms->Clear(); 648 platforms->Clear();
649 platforms->AppendString("win"); 649 platforms->AppendString("win");
650 platforms->AppendString("chromeos"); 650 platforms->AppendString("chromeos");
651 feature->Parse(value.get()); 651 feature->Parse(value.get());
652 std::vector<Feature::Platform> expected_platforms; 652 std::vector<Feature::Platform> expected_platforms;
653 expected_platforms.push_back(Feature::CHROMEOS_PLATFORM); 653 expected_platforms.push_back(Feature::CHROMEOS_PLATFORM);
654 expected_platforms.push_back(Feature::WIN_PLATFORM); 654 expected_platforms.push_back(Feature::WIN_PLATFORM);
655 655
656 EXPECT_FALSE(feature->platforms()->empty()); 656 EXPECT_FALSE(feature->platforms().empty());
657 EXPECT_EQ(expected_platforms, *feature->platforms()); 657 EXPECT_EQ(expected_platforms, *feature->platforms());
658 } 658 }
659 659
660 TEST_F(SimpleFeatureTest, ParseManifestVersion) { 660 TEST_F(SimpleFeatureTest, ParseManifestVersion) {
661 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 661 std::unique_ptr<base::DictionaryValue> value(new base::DictionaryValue());
662 value->SetInteger("min_manifest_version", 1); 662 value->SetInteger("min_manifest_version", 1);
663 value->SetInteger("max_manifest_version", 5); 663 value->SetInteger("max_manifest_version", 5);
664 std::unique_ptr<SimpleFeature> feature(new SimpleFeature()); 664 std::unique_ptr<SimpleFeature> feature(new SimpleFeature());
665 feature->Parse(value.get()); 665 feature->Parse(value.get());
666 EXPECT_EQ(1, feature->min_manifest_version()); 666 EXPECT_EQ(1, feature->min_manifest_version());
667 EXPECT_EQ(5, feature->max_manifest_version()); 667 EXPECT_EQ(5, feature->max_manifest_version());
668 } 668 }
669 669
670 TEST_F(SimpleFeatureTest, Inheritance) { 670 TEST_F(SimpleFeatureTest, Inheritance) {
671 SimpleFeature feature; 671 SimpleFeature feature;
672 feature.whitelist()->push_back("foo"); 672 feature.whitelist_.push_back("foo");
673 feature.extension_types()->push_back(Manifest::TYPE_THEME); 673 feature.extension_types_.push_back(Manifest::TYPE_THEME);
674 feature.contexts()->push_back(Feature::BLESSED_EXTENSION_CONTEXT); 674 feature.contexts_.push_back(Feature::BLESSED_EXTENSION_CONTEXT);
675 feature.set_location(SimpleFeature::COMPONENT_LOCATION); 675 feature.set_location(SimpleFeature::COMPONENT_LOCATION);
676 feature.platforms()->push_back(Feature::CHROMEOS_PLATFORM); 676 feature.platforms_.push_back(Feature::CHROMEOS_PLATFORM);
677 feature.set_min_manifest_version(1); 677 feature.set_min_manifest_version(1);
678 feature.set_max_manifest_version(2); 678 feature.set_max_manifest_version(2);
679 679
680 // Test additive parsing. Parsing an empty dictionary should result in no 680 // Test additive parsing. Parsing an empty dictionary should result in no
681 // changes to a SimpleFeature. 681 // changes to a SimpleFeature.
682 base::DictionaryValue definition; 682 base::DictionaryValue definition;
683 feature.Parse(&definition); 683 feature.Parse(&definition);
684 EXPECT_EQ(1u, feature.whitelist()->size()); 684 EXPECT_EQ(1u, feature.whitelist().size());
685 EXPECT_EQ(1u, feature.extension_types()->size()); 685 EXPECT_EQ(1u, feature.extension_types().size());
686 EXPECT_EQ(1u, feature.contexts()->size()); 686 EXPECT_EQ(1u, feature.contexts().size());
687 EXPECT_EQ(1, STLCount(*(feature.whitelist()), "foo")); 687 EXPECT_EQ(1, STLCount(*(feature.whitelist()), "foo"));
688 EXPECT_EQ(SimpleFeature::COMPONENT_LOCATION, feature.location()); 688 EXPECT_EQ(SimpleFeature::COMPONENT_LOCATION, feature.location());
689 EXPECT_EQ(1u, feature.platforms()->size()); 689 EXPECT_EQ(1u, feature.platforms().size());
690 EXPECT_EQ(1, STLCount(*(feature.platforms()), Feature::CHROMEOS_PLATFORM)); 690 EXPECT_EQ(1, STLCount(*(feature.platforms()), Feature::CHROMEOS_PLATFORM));
691 EXPECT_EQ(1, feature.min_manifest_version()); 691 EXPECT_EQ(1, feature.min_manifest_version());
692 EXPECT_EQ(2, feature.max_manifest_version()); 692 EXPECT_EQ(2, feature.max_manifest_version());
693 693
694 base::ListValue* whitelist = new base::ListValue(); 694 base::ListValue* whitelist = new base::ListValue();
695 base::ListValue* extension_types = new base::ListValue(); 695 base::ListValue* extension_types = new base::ListValue();
696 base::ListValue* contexts = new base::ListValue(); 696 base::ListValue* contexts = new base::ListValue();
697 whitelist->AppendString("bar"); 697 whitelist->AppendString("bar");
698 extension_types->AppendString("extension"); 698 extension_types->AppendString("extension");
699 contexts->AppendString("unblessed_extension"); 699 contexts->AppendString("unblessed_extension");
700 definition.Set("whitelist", whitelist); 700 definition.Set("whitelist", whitelist);
701 definition.Set("extension_types", extension_types); 701 definition.Set("extension_types", extension_types);
702 definition.Set("contexts", contexts); 702 definition.Set("contexts", contexts);
703 // Can't test location or platform because we only have one value so far. 703 // Can't test location or platform because we only have one value so far.
704 definition.Set("min_manifest_version", new base::FundamentalValue(2)); 704 definition.Set("min_manifest_version", new base::FundamentalValue(2));
705 definition.Set("max_manifest_version", new base::FundamentalValue(3)); 705 definition.Set("max_manifest_version", new base::FundamentalValue(3));
706 706
707 feature.Parse(&definition); 707 feature.Parse(&definition);
708 EXPECT_EQ(1u, feature.whitelist()->size()); 708 EXPECT_EQ(1u, feature.whitelist().size());
709 EXPECT_EQ(1u, feature.extension_types()->size()); 709 EXPECT_EQ(1u, feature.extension_types().size());
710 EXPECT_EQ(1u, feature.contexts()->size()); 710 EXPECT_EQ(1u, feature.contexts().size());
711 EXPECT_EQ(1, STLCount(*(feature.whitelist()), "bar")); 711 EXPECT_EQ(1, STLCount(*(feature.whitelist()), "bar"));
712 EXPECT_EQ(1, 712 EXPECT_EQ(1,
713 STLCount(*(feature.extension_types()), Manifest::TYPE_EXTENSION)); 713 STLCount(*(feature.extension_types()), Manifest::TYPE_EXTENSION));
714 EXPECT_EQ(1, 714 EXPECT_EQ(1,
715 STLCount( 715 STLCount(
716 *(feature.contexts()), Feature::UNBLESSED_EXTENSION_CONTEXT)); 716 *(feature.contexts()), Feature::UNBLESSED_EXTENSION_CONTEXT));
717 EXPECT_EQ(2, feature.min_manifest_version()); 717 EXPECT_EQ(2, feature.min_manifest_version());
718 EXPECT_EQ(3, feature.max_manifest_version()); 718 EXPECT_EQ(3, feature.max_manifest_version());
719 } 719 }
720 720
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
1007 Feature::IS_AVAILABLE, 1007 Feature::IS_AVAILABLE,
1008 feature->IsAvailableToManifest("1", 1008 feature->IsAvailableToManifest("1",
1009 Manifest::TYPE_EXTENSION, 1009 Manifest::TYPE_EXTENSION,
1010 Manifest::INVALID_LOCATION, 1010 Manifest::INVALID_LOCATION,
1011 Feature::UNSPECIFIED_PLATFORM, 1011 Feature::UNSPECIFIED_PLATFORM,
1012 Feature::GetCurrentPlatform()).result()); 1012 Feature::GetCurrentPlatform()).result());
1013 } 1013 }
1014 } 1014 }
1015 1015
1016 } // namespace extensions 1016 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698