| Index: chrome/common/extensions/api/common_extension_api_unittest.cc
|
| diff --git a/chrome/common/extensions/api/common_extension_api_unittest.cc b/chrome/common/extensions/api/common_extension_api_unittest.cc
|
| index c451ea414898e5c766f2fce9873471a7d8d9fe70..0c29cfcf5cdb9c0743b640c1a3e1397db4c4abef 100644
|
| --- a/chrome/common/extensions/api/common_extension_api_unittest.cc
|
| +++ b/chrome/common/extensions/api/common_extension_api_unittest.cc
|
| @@ -95,73 +95,111 @@ TEST(ExtensionAPITest, APIFeatures) {
|
| std::string api_full_name;
|
| bool expect_is_available;
|
| Feature::Context context;
|
| + Feature::SessionType session_type;
|
| GURL url;
|
| } test_data[] = {
|
| - { "test1", false, Feature::WEB_PAGE_CONTEXT, GURL() },
|
| - { "test1", true, Feature::BLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "test1", true, Feature::UNBLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "test1", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "test2", true, Feature::WEB_PAGE_CONTEXT, GURL("http://google.com") },
|
| - { "test2", false, Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://google.com") },
|
| - { "test2.foo", false, Feature::WEB_PAGE_CONTEXT,
|
| - GURL("http://google.com") },
|
| - { "test2.foo", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "test3", false, Feature::WEB_PAGE_CONTEXT, GURL("http://google.com") },
|
| - { "test3.foo", true, Feature::WEB_PAGE_CONTEXT, GURL("http://google.com") },
|
| - { "test3.foo", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://bad.com") },
|
| - { "test4", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://bad.com") },
|
| - { "test4.foo", false, Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://bad.com") },
|
| - { "test4.foo", false, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://bad.com") },
|
| - { "test4.foo.foo", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "test5", true, Feature::WEB_PAGE_CONTEXT, GURL("http://foo.com") },
|
| - { "test5", false, Feature::WEB_PAGE_CONTEXT, GURL("http://bar.com") },
|
| - { "test5.blah", true, Feature::WEB_PAGE_CONTEXT, GURL("http://foo.com") },
|
| - { "test5.blah", false, Feature::WEB_PAGE_CONTEXT, GURL("http://bar.com") },
|
| - { "test6", false, Feature::BLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "test6.foo", true, Feature::BLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "test7", true, Feature::WEB_PAGE_CONTEXT, GURL("http://foo.com") },
|
| - { "test7.foo", false, Feature::WEB_PAGE_CONTEXT, GURL("http://bar.com") },
|
| - { "test7.foo", true, Feature::WEB_PAGE_CONTEXT, GURL("http://foo.com") },
|
| - { "test7.bar", false, Feature::WEB_PAGE_CONTEXT, GURL("http://bar.com") },
|
| - { "test7.bar", false, Feature::WEB_PAGE_CONTEXT, GURL("http://foo.com") },
|
| -
|
| - // Test parent/child.
|
| - { "parent1", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "parent1", false, Feature::WEB_PAGE_CONTEXT, GURL("http://foo.com") },
|
| - { "parent1.child1", false, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "parent1.child1", true, Feature::WEB_PAGE_CONTEXT,
|
| - GURL("http://foo.com") },
|
| - { "parent1.child2", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "parent1.child2", false, Feature::WEB_PAGE_CONTEXT,
|
| - GURL("http://foo.com") },
|
| - { "parent2", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "parent2", true, Feature::BLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "parent2", true, Feature::UNBLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "parent2.child3", false, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "parent2.child3", true, Feature::BLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "parent2.child3", false, Feature::UNBLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "parent2.child3.child.child", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| - GURL() },
|
| - { "parent2.child3.child.child", false, Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL() },
|
| - { "parent2.child3.child.child", true, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| - GURL() },
|
| - { "parent3", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "parent3", false, Feature::BLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "parent3", false, Feature::UNBLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "parent3.noparent", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "parent3.noparent", true, Feature::BLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "parent3.noparent", true, Feature::UNBLESSED_EXTENSION_CONTEXT, GURL() },
|
| - { "parent3.noparent.child", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| - { "parent3.noparent.child", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL() },
|
| - { "parent3.noparent.child", true, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| - GURL() }
|
| + {"test1", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"test1", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"test1", true, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"test1", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"test2", true, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://google.com")},
|
| + {"test2", false, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://google.com")},
|
| + {"test2.foo", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://google.com")},
|
| + {"test2.foo", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"test3", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://google.com")},
|
| + {"test3.foo", true, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://google.com")},
|
| + {"test3.foo", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://bad.com")},
|
| + {"test4", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://bad.com")},
|
| + {"test4.foo", false, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://bad.com")},
|
| + {"test4.foo", false, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://bad.com")},
|
| + {"test4.foo.foo", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"test5", true, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://foo.com")},
|
| + {"test5", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://bar.com")},
|
| + {"test5.blah", true, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://foo.com")},
|
| + {"test5.blah", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://bar.com")},
|
| + {"test6", false, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"test6.foo", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"test7", true, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://foo.com")},
|
| + {"test7.foo", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://bar.com")},
|
| + {"test7.foo", true, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://foo.com")},
|
| + {"test7.bar", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://bar.com")},
|
| + {"test7.bar", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://foo.com")},
|
| +
|
| + // Test parent/child.
|
| + {"parent1", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent1", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://foo.com")},
|
| + {"parent1.child1", false, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent1.child1", true, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://foo.com")},
|
| + {"parent1.child2", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent1.child2", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL("http://foo.com")},
|
| + {"parent2", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent2", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent2", true, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent2.child3", false, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent2.child3", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent2.child3", false, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent2.child3.child.child", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent2.child3.child.child", false, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent2.child3.child.child", true, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent3", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent3", false, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent3", false, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent3.noparent", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent3.noparent", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent3.noparent", true, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent3.noparent.child", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent3.noparent.child", true, Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| + {"parent3.noparent.child", true, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL()},
|
| };
|
|
|
| base::FilePath api_features_path;
|
| @@ -191,10 +229,8 @@ TEST(ExtensionAPITest, APIFeatures) {
|
| ExtensionAPI::OverrideSharedInstanceForTest scope(&api);
|
| bool expected = test_data[i].expect_is_available;
|
| Feature::Availability availability =
|
| - api.IsAvailable(test_data[i].api_full_name,
|
| - NULL,
|
| - test_data[i].context,
|
| - test_data[i].url);
|
| + api.IsAvailable(test_data[i].api_full_name, NULL, test_data[i].context,
|
| + test_data[i].session_type, test_data[i].url);
|
| EXPECT_EQ(expected, availability.is_available())
|
| << base::StringPrintf("Test %d: Feature '%s' was %s: %s",
|
| static_cast<int>(i),
|
| @@ -236,27 +272,36 @@ TEST(ExtensionAPITest, IsAnyFeatureAvailableToContext) {
|
| std::string api_full_name;
|
| bool expect_is_available;
|
| Feature::Context context;
|
| + Feature::SessionType session_type;
|
| const Extension* extension;
|
| GURL url;
|
| } test_data[] = {
|
| - { "test1", false, Feature::WEB_PAGE_CONTEXT, NULL, GURL() },
|
| - { "test1", true, Feature::UNBLESSED_EXTENSION_CONTEXT, NULL, GURL() },
|
| - { "test1", false, Feature::UNBLESSED_EXTENSION_CONTEXT, app.get(), GURL() },
|
| - { "test1", true, Feature::UNBLESSED_EXTENSION_CONTEXT, extension.get(),
|
| - GURL() },
|
| - { "test2", true, Feature::CONTENT_SCRIPT_CONTEXT, NULL, GURL() },
|
| - { "test2", true, Feature::WEB_PAGE_CONTEXT, NULL,
|
| - GURL("http://google.com") },
|
| - { "test2.foo", false, Feature::WEB_PAGE_CONTEXT, NULL,
|
| - GURL("http://google.com") },
|
| - { "test3", true, Feature::CONTENT_SCRIPT_CONTEXT, NULL, GURL() },
|
| - { "test3", true, Feature::WEB_PAGE_CONTEXT, NULL, GURL("http://foo.com") },
|
| - { "test4.foo", true, Feature::CONTENT_SCRIPT_CONTEXT, NULL, GURL() },
|
| - { "test7", false, Feature::WEB_PAGE_CONTEXT, NULL,
|
| - GURL("http://google.com") },
|
| - { "test7", true, Feature::WEB_PAGE_CONTEXT, NULL, GURL("http://foo.com") },
|
| - { "test7", false, Feature::WEB_PAGE_CONTEXT, NULL, GURL("http://bar.com") }
|
| - };
|
| + {"test1", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL()},
|
| + {"test1", true, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL()},
|
| + {"test1", false, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, app.get(), GURL()},
|
| + {"test1", true, Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, extension.get(), GURL()},
|
| + {"test2", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL()},
|
| + {"test2", true, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL("http://google.com")},
|
| + {"test2.foo", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL("http://google.com")},
|
| + {"test3", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL()},
|
| + {"test3", true, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL("http://foo.com")},
|
| + {"test4.foo", true, Feature::CONTENT_SCRIPT_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL()},
|
| + {"test7", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL("http://google.com")},
|
| + {"test7", true, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL("http://foo.com")},
|
| + {"test7", false, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, NULL, GURL("http://bar.com")}};
|
|
|
| base::FilePath api_features_path;
|
| PathService::Get(chrome::DIR_TEST_DATA, &api_features_path);
|
| @@ -286,10 +331,9 @@ TEST(ExtensionAPITest, IsAnyFeatureAvailableToContext) {
|
| api_feature_provider.GetFeature(test_data[i].api_full_name);
|
| ASSERT_TRUE(test_feature);
|
| EXPECT_EQ(test_data[i].expect_is_available,
|
| - api.IsAnyFeatureAvailableToContext(*test_feature,
|
| - test_data[i].extension,
|
| - test_data[i].context,
|
| - test_data[i].url))
|
| + api.IsAnyFeatureAvailableToContext(
|
| + *test_feature, test_data[i].extension, test_data[i].context,
|
| + test_data[i].session_type, test_data[i].url))
|
| << i;
|
| }
|
| }
|
| @@ -363,58 +407,48 @@ TEST(ExtensionAPITest, ExtensionWithUnprivilegedAPIs) {
|
|
|
| // "storage" is completely unprivileged.
|
| EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| - *api_features.GetFeature("storage"),
|
| - NULL,
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| + *api_features.GetFeature("storage"), NULL,
|
| + Feature::BLESSED_EXTENSION_CONTEXT, Feature::SESSION_TYPE_UNSPECIFIED,
|
| GURL()));
|
| EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| - *api_features.GetFeature("storage"),
|
| - NULL,
|
| - Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + *api_features.GetFeature("storage"), NULL,
|
| + Feature::UNBLESSED_EXTENSION_CONTEXT, Feature::SESSION_TYPE_UNSPECIFIED,
|
| GURL()));
|
| EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| - *api_features.GetFeature("storage"),
|
| - NULL,
|
| - Feature::CONTENT_SCRIPT_CONTEXT,
|
| + *api_features.GetFeature("storage"), NULL,
|
| + Feature::CONTENT_SCRIPT_CONTEXT, Feature::SESSION_TYPE_UNSPECIFIED,
|
| GURL()));
|
|
|
| // "extension" is partially unprivileged.
|
| EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| - *api_features.GetFeature("extension"),
|
| - NULL,
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| + *api_features.GetFeature("extension"), NULL,
|
| + Feature::BLESSED_EXTENSION_CONTEXT, Feature::SESSION_TYPE_UNSPECIFIED,
|
| GURL()));
|
| EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| - *api_features.GetFeature("extension"),
|
| - NULL,
|
| - Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + *api_features.GetFeature("extension"), NULL,
|
| + Feature::UNBLESSED_EXTENSION_CONTEXT, Feature::SESSION_TYPE_UNSPECIFIED,
|
| GURL()));
|
| EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| - *api_features.GetFeature("extension"),
|
| - NULL,
|
| - Feature::CONTENT_SCRIPT_CONTEXT,
|
| + *api_features.GetFeature("extension"), NULL,
|
| + Feature::CONTENT_SCRIPT_CONTEXT, Feature::SESSION_TYPE_UNSPECIFIED,
|
| GURL()));
|
| EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| - *api_features.GetFeature("extension.getURL"),
|
| - NULL,
|
| - Feature::CONTENT_SCRIPT_CONTEXT,
|
| + *api_features.GetFeature("extension.getURL"), NULL,
|
| + Feature::CONTENT_SCRIPT_CONTEXT, Feature::SESSION_TYPE_UNSPECIFIED,
|
| GURL()));
|
|
|
| // "history" is entirely privileged.
|
| EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| - *api_features.GetFeature("history"),
|
| - NULL,
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| + *api_features.GetFeature("history"), NULL,
|
| + Feature::BLESSED_EXTENSION_CONTEXT, Feature::SESSION_TYPE_UNSPECIFIED,
|
| GURL()));
|
| EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext(
|
| - *api_features.GetFeature("history"),
|
| - NULL,
|
| - Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + *api_features.GetFeature("history"), NULL,
|
| + Feature::UNBLESSED_EXTENSION_CONTEXT, Feature::SESSION_TYPE_UNSPECIFIED,
|
| GURL()));
|
| EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext(
|
| - *api_features.GetFeature("history"),
|
| - NULL,
|
| - Feature::CONTENT_SCRIPT_CONTEXT,
|
| + *api_features.GetFeature("history"), NULL,
|
| + Feature::CONTENT_SCRIPT_CONTEXT, Feature::SESSION_TYPE_UNSPECIFIED,
|
| GURL()));
|
| }
|
|
|
| @@ -472,26 +506,31 @@ TEST(ExtensionAPITest, HostedAppPermissions) {
|
| ExtensionAPI::CreateWithDefaultConfiguration());
|
|
|
| // "runtime" and "tabs" should not be available in hosted apps.
|
| - EXPECT_FALSE(extension_api->IsAvailable("runtime",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| - EXPECT_FALSE(extension_api->IsAvailable("runtime.id",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| - EXPECT_FALSE(extension_api->IsAvailable("runtime.sendMessage",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| - EXPECT_FALSE(extension_api->IsAvailable("runtime.sendNativeMessage",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| - EXPECT_FALSE(extension_api->IsAvailable("tabs.create",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| + EXPECT_FALSE(extension_api
|
| + ->IsAvailable("runtime", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| + EXPECT_FALSE(extension_api
|
| + ->IsAvailable("runtime.id", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| + EXPECT_FALSE(extension_api
|
| + ->IsAvailable("runtime.sendMessage", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| + EXPECT_FALSE(extension_api
|
| + ->IsAvailable("runtime.sendNativeMessage", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| + EXPECT_FALSE(extension_api
|
| + ->IsAvailable("tabs.create", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| }
|
|
|
| TEST(ExtensionAPITest, AppAndFriendsAvailability) {
|
| @@ -506,21 +545,24 @@ TEST(ExtensionAPITest, AppAndFriendsAvailability) {
|
| permissions.insert("app.window");
|
| scoped_refptr<Extension> extension =
|
| CreatePackagedAppWithPermissions(permissions);
|
| - EXPECT_FALSE(extension_api->IsAvailable(
|
| - "app",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://foo.com")).is_available());
|
| - EXPECT_TRUE(extension_api->IsAvailable(
|
| - "app.runtime",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://foo.com")).is_available());
|
| - EXPECT_TRUE(extension_api->IsAvailable(
|
| - "app.window",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://foo.com")).is_available());
|
| + EXPECT_FALSE(extension_api
|
| + ->IsAvailable("app", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED,
|
| + GURL("http://foo.com"))
|
| + .is_available());
|
| + EXPECT_TRUE(extension_api
|
| + ->IsAvailable("app.runtime", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED,
|
| + GURL("http://foo.com"))
|
| + .is_available());
|
| + EXPECT_TRUE(extension_api
|
| + ->IsAvailable("app.window", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED,
|
| + GURL("http://foo.com"))
|
| + .is_available());
|
| }
|
| // Make sure chrome.app.runtime and chrome.app.window are not available to
|
| // extensions, and chrome.app is.
|
| @@ -528,21 +570,24 @@ TEST(ExtensionAPITest, AppAndFriendsAvailability) {
|
| std::set<std::string> permissions;
|
| scoped_refptr<Extension> extension =
|
| CreateExtensionWithPermissions(permissions);
|
| - EXPECT_TRUE(extension_api->IsAvailable(
|
| - "app",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://foo.com")).is_available());
|
| - EXPECT_FALSE(extension_api->IsAvailable(
|
| - "app.runtime",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://foo.com")).is_available());
|
| - EXPECT_FALSE(extension_api->IsAvailable(
|
| - "app.window",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL("http://foo.com")).is_available());
|
| + EXPECT_TRUE(extension_api
|
| + ->IsAvailable("app", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED,
|
| + GURL("http://foo.com"))
|
| + .is_available());
|
| + EXPECT_FALSE(extension_api
|
| + ->IsAvailable("app.runtime", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED,
|
| + GURL("http://foo.com"))
|
| + .is_available());
|
| + EXPECT_FALSE(extension_api
|
| + ->IsAvailable("app.window", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED,
|
| + GURL("http://foo.com"))
|
| + .is_available());
|
| }
|
| }
|
|
|
| @@ -554,14 +599,14 @@ TEST(ExtensionAPITest, ExtensionWithDependencies) {
|
| CreateExtensionWithPermission("ttsEngine");
|
| std::unique_ptr<ExtensionAPI> api(
|
| ExtensionAPI::CreateWithDefaultConfiguration());
|
| - EXPECT_TRUE(api->IsAvailable("ttsEngine",
|
| - extension.get(),
|
| + EXPECT_TRUE(api->IsAvailable("ttsEngine", extension.get(),
|
| Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| - EXPECT_FALSE(api->IsAvailable("tts",
|
| - extension.get(),
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| + EXPECT_FALSE(api->IsAvailable("tts", extension.get(),
|
| Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| }
|
|
|
| // Conversely, extension with the "tts" permission but not the "ttsEngine"
|
| @@ -571,21 +616,23 @@ TEST(ExtensionAPITest, ExtensionWithDependencies) {
|
| CreateExtensionWithPermission("tts");
|
| std::unique_ptr<ExtensionAPI> api(
|
| ExtensionAPI::CreateWithDefaultConfiguration());
|
| - EXPECT_FALSE(api->IsAvailable("ttsEngine",
|
| - extension.get(),
|
| + EXPECT_FALSE(api->IsAvailable("ttsEngine", extension.get(),
|
| Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| - EXPECT_TRUE(api->IsAvailable("tts",
|
| - extension.get(),
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| + EXPECT_TRUE(api->IsAvailable("tts", extension.get(),
|
| Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| }
|
| }
|
|
|
| bool MatchesURL(
|
| ExtensionAPI* api, const std::string& api_name, const std::string& url) {
|
| - return api->IsAvailable(
|
| - api_name, NULL, Feature::WEB_PAGE_CONTEXT, GURL(url)).is_available();
|
| + return api
|
| + ->IsAvailable(api_name, NULL, Feature::WEB_PAGE_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL(url))
|
| + .is_available();
|
| }
|
|
|
| TEST(ExtensionAPITest, URLMatching) {
|
| @@ -810,10 +857,11 @@ TEST(ExtensionAPITest, NoPermissions) {
|
|
|
| for (size_t i = 0; i < arraysize(kTests); ++i) {
|
| EXPECT_EQ(kTests[i].expect_success,
|
| - extension_api->IsAvailable(kTests[i].permission_name,
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available())
|
| + extension_api
|
| + ->IsAvailable(kTests[i].permission_name, extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available())
|
| << "Permission being tested: " << kTests[i].permission_name;
|
| }
|
| }
|
| @@ -831,14 +879,16 @@ TEST(ExtensionAPITest, ManifestKeys) {
|
| .Build())
|
| .Build();
|
|
|
| - EXPECT_TRUE(extension_api->IsAvailable("browserAction",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| - EXPECT_FALSE(extension_api->IsAvailable("pageAction",
|
| - extension.get(),
|
| - Feature::BLESSED_EXTENSION_CONTEXT,
|
| - GURL()).is_available());
|
| + EXPECT_TRUE(extension_api
|
| + ->IsAvailable("browserAction", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| + EXPECT_FALSE(extension_api
|
| + ->IsAvailable("pageAction", extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + Feature::SESSION_TYPE_UNSPECIFIED, GURL())
|
| + .is_available());
|
| }
|
|
|
| } // namespace extensions
|
|
|