OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |