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 |