OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extension_api.h" | 5 #include "extensions/common/extension_api.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
309 | 309 |
310 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { | 310 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
311 ExtensionAPI api; | 311 ExtensionAPI api; |
312 api.RegisterDependencyProvider("api", &api_feature_provider); | 312 api.RegisterDependencyProvider("api", &api_feature_provider); |
313 for (base::DictionaryValue::Iterator iter(*value); !iter.IsAtEnd(); | 313 for (base::DictionaryValue::Iterator iter(*value); !iter.IsAtEnd(); |
314 iter.Advance()) { | 314 iter.Advance()) { |
315 if (iter.key().find(".") == std::string::npos) | 315 if (iter.key().find(".") == std::string::npos) |
316 api.RegisterSchemaResource(iter.key(), 0); | 316 api.RegisterSchemaResource(iter.key(), 0); |
317 } | 317 } |
318 | 318 |
319 Feature* test_feature = | |
320 api_feature_provider.GetFeature(test_data[i].api_full_name); | |
321 ASSERT_TRUE(test_feature); | |
319 EXPECT_EQ(test_data[i].expect_is_available, | 322 EXPECT_EQ(test_data[i].expect_is_available, |
320 api.IsAnyFeatureAvailableToContext(test_data[i].api_full_name, | 323 api.IsAnyFeatureAvailableToContext(*test_feature, |
321 test_data[i].extension, | 324 test_data[i].extension, |
322 test_data[i].context, | 325 test_data[i].context, |
323 test_data[i].url)) << i; | 326 test_data[i].url)) |
327 << i; | |
324 } | 328 } |
325 } | 329 } |
326 | 330 |
327 TEST(ExtensionAPITest, LazyGetSchema) { | 331 TEST(ExtensionAPITest, LazyGetSchema) { |
328 scoped_ptr<ExtensionAPI> apis(ExtensionAPI::CreateWithDefaultConfiguration()); | 332 scoped_ptr<ExtensionAPI> apis(ExtensionAPI::CreateWithDefaultConfiguration()); |
329 | 333 |
330 EXPECT_EQ(NULL, apis->GetSchema(std::string())); | 334 EXPECT_EQ(NULL, apis->GetSchema(std::string())); |
331 EXPECT_EQ(NULL, apis->GetSchema(std::string())); | 335 EXPECT_EQ(NULL, apis->GetSchema(std::string())); |
332 EXPECT_EQ(NULL, apis->GetSchema("experimental")); | 336 EXPECT_EQ(NULL, apis->GetSchema("experimental")); |
333 EXPECT_EQ(NULL, apis->GetSchema("experimental")); | 337 EXPECT_EQ(NULL, apis->GetSchema("experimental")); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
383 { | 387 { |
384 std::set<std::string> permissions; | 388 std::set<std::string> permissions; |
385 permissions.insert("storage"); | 389 permissions.insert("storage"); |
386 permissions.insert("history"); | 390 permissions.insert("history"); |
387 extension = CreateExtensionWithPermissions(permissions); | 391 extension = CreateExtensionWithPermissions(permissions); |
388 } | 392 } |
389 | 393 |
390 scoped_ptr<ExtensionAPI> extension_api( | 394 scoped_ptr<ExtensionAPI> extension_api( |
391 ExtensionAPI::CreateWithDefaultConfiguration()); | 395 ExtensionAPI::CreateWithDefaultConfiguration()); |
392 | 396 |
393 // "runtime" has privileged parts that should not be accessed by content | 397 const FeatureProvider& api_features = *FeatureProvider::GetAPIFeatures(); |
394 // scripts. | |
395 EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext( | |
396 "runtime.getBackgroundPage", | |
not at google - send to devlin
2013/12/18 01:55:14
what happened to these?
Jeffrey Yasskin
2013/12/18 02:14:59
runtime.getBackgroundPage isn't a feature, so it w
not at google - send to devlin
2013/12/18 02:18:10
sgtm.
| |
397 NULL, | |
398 Feature::CONTENT_SCRIPT_CONTEXT, | |
399 GURL())); | |
400 EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext( | |
401 "runtime.sendNativeMessage", | |
402 NULL, | |
403 Feature::CONTENT_SCRIPT_CONTEXT, | |
404 GURL())); | |
405 // "runtime" also has unprivileged parts. | |
406 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( | |
407 "runtime.sendMessage", | |
408 NULL, | |
409 Feature::CONTENT_SCRIPT_CONTEXT, | |
410 GURL())); | |
411 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( | |
412 "runtime.id", | |
413 NULL, | |
414 Feature::CONTENT_SCRIPT_CONTEXT, | |
415 GURL())); | |
416 | 398 |
417 // "storage" is completely unprivileged. | 399 // "storage" is completely unprivileged. |
418 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( | 400 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( |
419 "storage", | 401 *api_features.GetFeature("storage"), |
420 NULL, | 402 NULL, |
421 Feature::BLESSED_EXTENSION_CONTEXT, | 403 Feature::BLESSED_EXTENSION_CONTEXT, |
422 GURL())); | 404 GURL())); |
423 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( | 405 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( |
424 "storage", | 406 *api_features.GetFeature("storage"), |
425 NULL, | 407 NULL, |
426 Feature::UNBLESSED_EXTENSION_CONTEXT, | 408 Feature::UNBLESSED_EXTENSION_CONTEXT, |
427 GURL())); | 409 GURL())); |
428 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( | 410 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( |
429 "storage", | 411 *api_features.GetFeature("storage"), |
430 NULL, | 412 NULL, |
431 Feature::CONTENT_SCRIPT_CONTEXT, | 413 Feature::CONTENT_SCRIPT_CONTEXT, |
432 GURL())); | 414 GURL())); |
433 | 415 |
434 // "extension" is partially unprivileged. | 416 // "extension" is partially unprivileged. |
435 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( | 417 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( |
436 "extension", | 418 *api_features.GetFeature("extension"), |
437 NULL, | 419 NULL, |
438 Feature::BLESSED_EXTENSION_CONTEXT, | 420 Feature::BLESSED_EXTENSION_CONTEXT, |
439 GURL())); | 421 GURL())); |
440 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( | 422 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( |
441 "extension", | 423 *api_features.GetFeature("extension"), |
442 NULL, | 424 NULL, |
443 Feature::UNBLESSED_EXTENSION_CONTEXT, | 425 Feature::UNBLESSED_EXTENSION_CONTEXT, |
444 GURL())); | 426 GURL())); |
445 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( | 427 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( |
446 "extension", | 428 *api_features.GetFeature("extension"), |
429 NULL, | |
430 Feature::CONTENT_SCRIPT_CONTEXT, | |
431 GURL())); | |
432 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( | |
433 *api_features.GetFeature("extension.getURL"), | |
447 NULL, | 434 NULL, |
448 Feature::CONTENT_SCRIPT_CONTEXT, | 435 Feature::CONTENT_SCRIPT_CONTEXT, |
449 GURL())); | 436 GURL())); |
450 | 437 |
451 // "history" is entirely privileged. | 438 // "history" is entirely privileged. |
452 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( | 439 EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext( |
453 "history", | 440 *api_features.GetFeature("history"), |
454 NULL, | 441 NULL, |
455 Feature::BLESSED_EXTENSION_CONTEXT, | 442 Feature::BLESSED_EXTENSION_CONTEXT, |
456 GURL())); | 443 GURL())); |
457 EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext( | 444 EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext( |
458 "history", | 445 *api_features.GetFeature("history"), |
459 NULL, | 446 NULL, |
460 Feature::UNBLESSED_EXTENSION_CONTEXT, | 447 Feature::UNBLESSED_EXTENSION_CONTEXT, |
461 GURL())); | 448 GURL())); |
462 EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext( | 449 EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext( |
463 "history", | 450 *api_features.GetFeature("history"), |
464 NULL, | 451 NULL, |
465 Feature::CONTENT_SCRIPT_CONTEXT, | 452 Feature::CONTENT_SCRIPT_CONTEXT, |
466 GURL())); | 453 GURL())); |
467 } | 454 } |
468 | 455 |
469 scoped_refptr<Extension> CreateHostedApp() { | 456 scoped_refptr<Extension> CreateHostedApp() { |
470 base::DictionaryValue values; | 457 base::DictionaryValue values; |
471 values.SetString(manifest_keys::kName, "test"); | 458 values.SetString(manifest_keys::kName, "test"); |
472 values.SetString(manifest_keys::kVersion, "0.1"); | 459 values.SetString(manifest_keys::kVersion, "0.1"); |
473 values.Set(manifest_keys::kWebURLs, new base::ListValue()); | 460 values.Set(manifest_keys::kWebURLs, new base::ListValue()); |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
903 extension.get(), | 890 extension.get(), |
904 Feature::BLESSED_EXTENSION_CONTEXT, | 891 Feature::BLESSED_EXTENSION_CONTEXT, |
905 GURL()).is_available()); | 892 GURL()).is_available()); |
906 EXPECT_FALSE(extension_api->IsAvailable("pageAction", | 893 EXPECT_FALSE(extension_api->IsAvailable("pageAction", |
907 extension.get(), | 894 extension.get(), |
908 Feature::BLESSED_EXTENSION_CONTEXT, | 895 Feature::BLESSED_EXTENSION_CONTEXT, |
909 GURL()).is_available()); | 896 GURL()).is_available()); |
910 } | 897 } |
911 | 898 |
912 } // namespace extensions | 899 } // namespace extensions |
OLD | NEW |