| Index: chrome/common/extensions/api/extension_api_unittest.cc
|
| diff --git a/chrome/common/extensions/api/extension_api_unittest.cc b/chrome/common/extensions/api/extension_api_unittest.cc
|
| index 8584a1e376c08ef1f439c7d40600fbda6d9a5e7f..d18bd14771d08cc0114403f48a04e01b182d549d 100644
|
| --- a/chrome/common/extensions/api/extension_api_unittest.cc
|
| +++ b/chrome/common/extensions/api/extension_api_unittest.cc
|
| @@ -163,7 +163,6 @@ TEST(ExtensionAPI, IsPrivilegedFeatures) {
|
| api.RegisterDependencyProvider("test2", &test2_provider);
|
| }
|
|
|
| - api.LoadAllSchemas();
|
| EXPECT_EQ(test_data[i].expect_is_privilged,
|
| api.IsPrivileged(test_data[i].api_full_name)) << i;
|
| }
|
| @@ -235,43 +234,65 @@ TEST(ExtensionAPI, ExtensionWithUnprivilegedAPIs) {
|
| scoped_ptr<ExtensionAPI> extension_api(
|
| ExtensionAPI::CreateWithDefaultConfiguration());
|
|
|
| - std::set<std::string> privileged_apis = extension_api->GetAPIsForContext(
|
| - Feature::BLESSED_EXTENSION_CONTEXT, extension.get(), GURL());
|
| -
|
| - std::set<std::string> unprivileged_apis = extension_api->GetAPIsForContext(
|
| - Feature::UNBLESSED_EXTENSION_CONTEXT, extension.get(), GURL());
|
| -
|
| - std::set<std::string> content_script_apis = extension_api->GetAPIsForContext(
|
| - Feature::CONTENT_SCRIPT_CONTEXT, extension.get(), GURL());
|
| -
|
| // "storage" is completely unprivileged.
|
| - EXPECT_EQ(1u, privileged_apis.count("storage"));
|
| - EXPECT_EQ(1u, unprivileged_apis.count("storage"));
|
| - EXPECT_EQ(1u, content_script_apis.count("storage"));
|
| + EXPECT_TRUE(extension_api->IsAvailable("storage",
|
| + extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + GURL()).is_available());
|
| + EXPECT_TRUE(extension_api->IsAvailable("storage",
|
| + extension.get(),
|
| + Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + GURL()).is_available());
|
| + EXPECT_TRUE(extension_api->IsAvailable("storage",
|
| + extension.get(),
|
| + Feature::CONTENT_SCRIPT_CONTEXT,
|
| + GURL()).is_available());
|
|
|
| // "extension" is partially unprivileged.
|
| - EXPECT_EQ(1u, privileged_apis.count("extension"));
|
| - EXPECT_EQ(1u, unprivileged_apis.count("extension"));
|
| - EXPECT_EQ(1u, content_script_apis.count("extension"));
|
| + EXPECT_TRUE(extension_api->IsAvailable("extension",
|
| + extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + GURL()).is_available());
|
| + EXPECT_TRUE(extension_api->IsAvailable("extension",
|
| + extension.get(),
|
| + Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + GURL()).is_available());
|
| + EXPECT_TRUE(extension_api->IsAvailable("extension",
|
| + extension.get(),
|
| + Feature::CONTENT_SCRIPT_CONTEXT,
|
| + GURL()).is_available());
|
|
|
| // "history" is entirely privileged.
|
| - EXPECT_EQ(1u, privileged_apis.count("history"));
|
| - EXPECT_EQ(0u, unprivileged_apis.count("history"));
|
| - EXPECT_EQ(0u, content_script_apis.count("history"));
|
| + EXPECT_TRUE(extension_api->IsAvailable("history",
|
| + extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + GURL()).is_available());
|
| + EXPECT_FALSE(extension_api->IsAvailable("history",
|
| + extension.get(),
|
| + Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + GURL()).is_available());
|
| + EXPECT_FALSE(extension_api->IsAvailable("history",
|
| + extension.get(),
|
| + Feature::CONTENT_SCRIPT_CONTEXT,
|
| + GURL()).is_available());
|
| }
|
|
|
| TEST(ExtensionAPI, ExtensionWithDependencies) {
|
| // Extension with the "ttsEngine" permission but not the "tts" permission; it
|
| - // must load TTS.
|
| + // should not automatically get "tts" permission.
|
| {
|
| scoped_refptr<Extension> extension =
|
| CreateExtensionWithPermission("ttsEngine");
|
| scoped_ptr<ExtensionAPI> api(
|
| ExtensionAPI::CreateWithDefaultConfiguration());
|
| - std::set<std::string> apis = api->GetAPIsForContext(
|
| - Feature::BLESSED_EXTENSION_CONTEXT, extension.get(), GURL());
|
| - EXPECT_EQ(1u, apis.count("ttsEngine"));
|
| - EXPECT_EQ(1u, apis.count("tts"));
|
| + EXPECT_TRUE(api->IsAvailable("ttsEngine",
|
| + extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + GURL()).is_available());
|
| + EXPECT_FALSE(api->IsAvailable("tts",
|
| + extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + GURL()).is_available());
|
| }
|
|
|
| // Conversely, extension with the "tts" permission but not the "ttsEngine"
|
| @@ -281,18 +302,21 @@ TEST(ExtensionAPI, ExtensionWithDependencies) {
|
| CreateExtensionWithPermission("tts");
|
| scoped_ptr<ExtensionAPI> api(
|
| ExtensionAPI::CreateWithDefaultConfiguration());
|
| - std::set<std::string> apis = api->GetAPIsForContext(
|
| - Feature::BLESSED_EXTENSION_CONTEXT, extension.get(), GURL());
|
| - EXPECT_EQ(0u, apis.count("ttsEngine"));
|
| - EXPECT_EQ(1u, apis.count("tts"));
|
| + EXPECT_FALSE(api->IsAvailable("ttsEngine",
|
| + extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + GURL()).is_available());
|
| + EXPECT_TRUE(api->IsAvailable("tts",
|
| + extension.get(),
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + GURL()).is_available());
|
| }
|
| }
|
|
|
| bool MatchesURL(
|
| ExtensionAPI* api, const std::string& api_name, const std::string& url) {
|
| - std::set<std::string> apis =
|
| - api->GetAPIsForContext(Feature::WEB_PAGE_CONTEXT, NULL, GURL(url));
|
| - return apis.count(api_name);
|
| + return api->IsAvailable(
|
| + api_name, NULL, Feature::WEB_PAGE_CONTEXT, GURL(url)).is_available();
|
| }
|
|
|
| TEST(ExtensionAPI, URLMatching) {
|
| @@ -410,7 +434,6 @@ TEST(ExtensionAPI, FeaturesRequireContexts) {
|
|
|
| ExtensionAPI api;
|
| api.RegisterSchema("test", base::StringPiece(schema_source));
|
| - api.LoadAllSchemas();
|
|
|
| Feature* feature = api.GetFeature("test");
|
| EXPECT_EQ(test_data[i].expect_success, feature != NULL) << i;
|
| @@ -439,7 +462,6 @@ TEST(ExtensionAPI, TypesHaveNamespace) {
|
|
|
| ExtensionAPI api;
|
| api.RegisterSchema("test.foo", manifest_str);
|
| - api.LoadAllSchemas();
|
|
|
| const base::DictionaryValue* schema = api.GetSchema("test.foo");
|
|
|
|
|