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 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 manifest.SetString("app.launch.local_path", "foo.html"); | 327 manifest.SetString("app.launch.local_path", "foo.html"); |
328 | 328 |
329 std::string error; | 329 std::string error; |
330 scoped_refptr<const Extension> extension(Extension::Create( | 330 scoped_refptr<const Extension> extension(Extension::Create( |
331 base::FilePath(), Manifest::INTERNAL, manifest, Extension::NO_FLAGS, | 331 base::FilePath(), Manifest::INTERNAL, manifest, Extension::NO_FLAGS, |
332 &error)); | 332 &error)); |
333 EXPECT_EQ("", error); | 333 EXPECT_EQ("", error); |
334 ASSERT_TRUE(extension.get()); | 334 ASSERT_TRUE(extension.get()); |
335 | 335 |
336 feature.whitelist_.push_back("monkey"); | 336 feature.whitelist_.push_back("monkey"); |
337 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToContext( | 337 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, |
338 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 338 feature |
339 Feature::CHROMEOS_PLATFORM).result()); | 339 .IsAvailableToContext(extension.get(), |
| 340 Feature::BLESSED_EXTENSION_CONTEXT, |
| 341 Feature::SESSION_TYPE_UNSPECIFIED, |
| 342 Feature::CHROMEOS_PLATFORM) |
| 343 .result()); |
340 feature.whitelist_.clear(); | 344 feature.whitelist_.clear(); |
341 | 345 |
342 feature.extension_types_.clear(); | 346 feature.extension_types_.clear(); |
343 feature.extension_types_.push_back(Manifest::TYPE_THEME); | 347 feature.extension_types_.push_back(Manifest::TYPE_THEME); |
344 { | 348 { |
345 Feature::Availability availability = feature.IsAvailableToContext( | 349 Feature::Availability availability = feature.IsAvailableToContext( |
346 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 350 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
347 Feature::CHROMEOS_PLATFORM); | 351 Feature::SESSION_TYPE_UNSPECIFIED, Feature::CHROMEOS_PLATFORM); |
348 EXPECT_EQ(Feature::INVALID_TYPE, availability.result()); | 352 EXPECT_EQ(Feature::INVALID_TYPE, availability.result()); |
349 EXPECT_EQ("'somefeature' is only allowed for themes, " | 353 EXPECT_EQ("'somefeature' is only allowed for themes, " |
350 "but this is a legacy packaged app.", | 354 "but this is a legacy packaged app.", |
351 availability.message()); | 355 availability.message()); |
352 } | 356 } |
353 | 357 |
354 feature.extension_types_.clear(); | 358 feature.extension_types_.clear(); |
355 feature.extension_types_.push_back(Manifest::TYPE_LEGACY_PACKAGED_APP); | 359 feature.extension_types_.push_back(Manifest::TYPE_LEGACY_PACKAGED_APP); |
356 feature.contexts_.clear(); | 360 feature.contexts_.clear(); |
357 feature.contexts_.push_back(Feature::UNBLESSED_EXTENSION_CONTEXT); | 361 feature.contexts_.push_back(Feature::UNBLESSED_EXTENSION_CONTEXT); |
358 feature.contexts_.push_back(Feature::CONTENT_SCRIPT_CONTEXT); | 362 feature.contexts_.push_back(Feature::CONTENT_SCRIPT_CONTEXT); |
359 { | 363 { |
360 Feature::Availability availability = feature.IsAvailableToContext( | 364 Feature::Availability availability = feature.IsAvailableToContext( |
361 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 365 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
362 Feature::CHROMEOS_PLATFORM); | 366 Feature::SESSION_TYPE_UNSPECIFIED, Feature::CHROMEOS_PLATFORM); |
363 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result()); | 367 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result()); |
364 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes and " | 368 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes and " |
365 "content scripts, but this is a privileged page", | 369 "content scripts, but this is a privileged page", |
366 availability.message()); | 370 availability.message()); |
367 } | 371 } |
368 | 372 |
369 feature.contexts_.push_back(Feature::WEB_PAGE_CONTEXT); | 373 feature.contexts_.push_back(Feature::WEB_PAGE_CONTEXT); |
370 { | 374 { |
371 Feature::Availability availability = feature.IsAvailableToContext( | 375 Feature::Availability availability = feature.IsAvailableToContext( |
372 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 376 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
373 Feature::CHROMEOS_PLATFORM); | 377 Feature::SESSION_TYPE_UNSPECIFIED, Feature::CHROMEOS_PLATFORM); |
374 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result()); | 378 EXPECT_EQ(Feature::INVALID_CONTEXT, availability.result()); |
375 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes, " | 379 EXPECT_EQ("'somefeature' is only allowed to run in extension iframes, " |
376 "content scripts, and web pages, but this is a privileged page", | 380 "content scripts, and web pages, but this is a privileged page", |
377 availability.message()); | 381 availability.message()); |
378 } | 382 } |
379 | 383 |
380 feature.contexts_.clear(); | 384 feature.contexts_.clear(); |
381 feature.contexts_.push_back(Feature::BLESSED_EXTENSION_CONTEXT); | 385 feature.contexts_.push_back(Feature::BLESSED_EXTENSION_CONTEXT); |
382 feature.set_location(SimpleFeature::COMPONENT_LOCATION); | 386 feature.set_location(SimpleFeature::COMPONENT_LOCATION); |
383 EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext( | 387 EXPECT_EQ(Feature::INVALID_LOCATION, |
384 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 388 feature |
385 Feature::CHROMEOS_PLATFORM).result()); | 389 .IsAvailableToContext(extension.get(), |
| 390 Feature::BLESSED_EXTENSION_CONTEXT, |
| 391 Feature::SESSION_TYPE_UNSPECIFIED, |
| 392 Feature::CHROMEOS_PLATFORM) |
| 393 .result()); |
386 feature.set_location(SimpleFeature::UNSPECIFIED_LOCATION); | 394 feature.set_location(SimpleFeature::UNSPECIFIED_LOCATION); |
387 | 395 |
388 EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext( | 396 EXPECT_EQ(Feature::INVALID_PLATFORM, |
389 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 397 feature |
390 Feature::UNSPECIFIED_PLATFORM).result()); | 398 .IsAvailableToContext(extension.get(), |
| 399 Feature::BLESSED_EXTENSION_CONTEXT, |
| 400 Feature::SESSION_TYPE_UNSPECIFIED, |
| 401 Feature::UNSPECIFIED_PLATFORM) |
| 402 .result()); |
391 | 403 |
392 feature.set_min_manifest_version(22); | 404 feature.set_min_manifest_version(22); |
393 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, feature.IsAvailableToContext( | 405 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, |
394 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 406 feature |
395 Feature::CHROMEOS_PLATFORM).result()); | 407 .IsAvailableToContext(extension.get(), |
| 408 Feature::BLESSED_EXTENSION_CONTEXT, |
| 409 Feature::SESSION_TYPE_UNSPECIFIED, |
| 410 Feature::CHROMEOS_PLATFORM) |
| 411 .result()); |
396 feature.set_min_manifest_version(21); | 412 feature.set_min_manifest_version(21); |
397 | 413 |
398 feature.set_max_manifest_version(18); | 414 feature.set_max_manifest_version(18); |
399 EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, feature.IsAvailableToContext( | 415 EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, |
400 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 416 feature |
401 Feature::CHROMEOS_PLATFORM).result()); | 417 .IsAvailableToContext(extension.get(), |
| 418 Feature::BLESSED_EXTENSION_CONTEXT, |
| 419 Feature::SESSION_TYPE_UNSPECIFIED, |
| 420 Feature::CHROMEOS_PLATFORM) |
| 421 .result()); |
402 feature.set_max_manifest_version(25); | 422 feature.set_max_manifest_version(25); |
403 } | 423 } |
404 | 424 |
405 TEST_F(SimpleFeatureTest, Location) { | 425 TEST_F(SimpleFeatureTest, Location) { |
406 // Component extensions can access any location. | 426 // Component extensions can access any location. |
407 EXPECT_TRUE(LocationIsAvailable(SimpleFeature::COMPONENT_LOCATION, | 427 EXPECT_TRUE(LocationIsAvailable(SimpleFeature::COMPONENT_LOCATION, |
408 Manifest::COMPONENT)); | 428 Manifest::COMPONENT)); |
409 EXPECT_TRUE(LocationIsAvailable(SimpleFeature::EXTERNAL_COMPONENT_LOCATION, | 429 EXPECT_TRUE(LocationIsAvailable(SimpleFeature::EXTERNAL_COMPONENT_LOCATION, |
410 Manifest::COMPONENT)); | 430 Manifest::COMPONENT)); |
411 EXPECT_TRUE( | 431 EXPECT_TRUE( |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
970 EXPECT_NE(Feature::IS_AVAILABLE, | 990 EXPECT_NE(Feature::IS_AVAILABLE, |
971 feature | 991 feature |
972 ->IsAvailableToManifest("1", Manifest::TYPE_EXTENSION, | 992 ->IsAvailableToManifest("1", Manifest::TYPE_EXTENSION, |
973 Manifest::INVALID_LOCATION, | 993 Manifest::INVALID_LOCATION, |
974 Feature::UNSPECIFIED_PLATFORM) | 994 Feature::UNSPECIFIED_PLATFORM) |
975 .result()); | 995 .result()); |
976 } | 996 } |
977 } | 997 } |
978 | 998 |
979 } // namespace extensions | 999 } // namespace extensions |
OLD | NEW |