| 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 0047d5677b85813bb3c136ada5770dd5ceeaeb67..92ef9103eaf0aad7da5e03375ad4b219496f711d 100644
|
| --- a/chrome/common/extensions/api/extension_api_unittest.cc
|
| +++ b/chrome/common/extensions/api/extension_api_unittest.cc
|
| @@ -26,7 +26,6 @@
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace extensions {
|
| -namespace {
|
|
|
| SimpleFeature* CreateAPIFeature() {
|
| return new APIFeature();
|
| @@ -91,11 +90,6 @@ TEST(ExtensionAPITest, IsPrivileged) {
|
| EXPECT_FALSE(extension_api->IsPrivileged("runtime.onConnect"));
|
| EXPECT_FALSE(extension_api->IsPrivileged("runtime.lastError"));
|
|
|
| - // Default unknown names to privileged for paranoia's sake.
|
| - EXPECT_TRUE(extension_api->IsPrivileged(std::string()));
|
| - EXPECT_TRUE(extension_api->IsPrivileged("<unknown-namespace>"));
|
| - EXPECT_TRUE(extension_api->IsPrivileged("extension.<unknown-member>"));
|
| -
|
| // Exists, but privileged.
|
| EXPECT_TRUE(extension_api->IsPrivileged("extension.getViews"));
|
| EXPECT_TRUE(extension_api->IsPrivileged("history.search"));
|
| @@ -148,7 +142,7 @@ TEST(ExtensionAPITest, IsPrivilegedFeatures) {
|
| }
|
| }
|
|
|
| -TEST(ExtensionAPI, APIFeatures) {
|
| +TEST(ExtensionAPITest, APIFeatures) {
|
| struct {
|
| std::string api_full_name;
|
| bool expect_is_available;
|
| @@ -186,7 +180,24 @@ TEST(ExtensionAPI, APIFeatures) {
|
| { "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") }
|
| + { "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") },
|
| + { "child1", false, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| + { "child1", true, Feature::WEB_PAGE_CONTEXT, GURL("http://foo.com") },
|
| + { "child2", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| + { "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() },
|
| + { "child3", false, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| + { "child3", true, Feature::BLESSED_EXTENSION_CONTEXT, GURL() },
|
| + { "child3", false, Feature::UNBLESSED_EXTENSION_CONTEXT, GURL() },
|
| + { "child.child", true, Feature::CONTENT_SCRIPT_CONTEXT, GURL() },
|
| + { "child.child", false, Feature::BLESSED_EXTENSION_CONTEXT, GURL() },
|
| + { "child.child", true, Feature::UNBLESSED_EXTENSION_CONTEXT, GURL() }
|
| };
|
|
|
| base::FilePath api_features_path;
|
| @@ -209,7 +220,7 @@ TEST(ExtensionAPI, APIFeatures) {
|
| for (base::DictionaryValue::Iterator iter(*value); !iter.IsAtEnd();
|
| iter.Advance()) {
|
| if (iter.key().find(".") == std::string::npos)
|
| - api.RegisterSchema(iter.key(), "");
|
| + api.RegisterSchemaResource(iter.key(), 0);
|
| }
|
|
|
| EXPECT_EQ(test_data[i].expect_is_available,
|
| @@ -220,7 +231,7 @@ TEST(ExtensionAPI, APIFeatures) {
|
| }
|
| }
|
|
|
| -TEST(ExtensionAPI, IsAnyFeatureAvailableToContext) {
|
| +TEST(ExtensionAPITest, IsAnyFeatureAvailableToContext) {
|
| struct {
|
| std::string api_full_name;
|
| bool expect_is_available;
|
| @@ -261,7 +272,7 @@ TEST(ExtensionAPI, IsAnyFeatureAvailableToContext) {
|
| for (base::DictionaryValue::Iterator iter(*value); !iter.IsAtEnd();
|
| iter.Advance()) {
|
| if (iter.key().find(".") == std::string::npos)
|
| - api.RegisterSchema(iter.key(), "");
|
| + api.RegisterSchemaResource(iter.key(), 0);
|
| }
|
|
|
| EXPECT_EQ(test_data[i].expect_is_available,
|
| @@ -339,65 +350,65 @@ TEST(ExtensionAPITest, ExtensionWithUnprivilegedAPIs) {
|
|
|
| // "runtime" has privileged parts that should not be accessed by content
|
| // scripts.
|
| - EXPECT_FALSE(extension_api->IsAvailable("runtime",
|
| - extension.get(),
|
| - Feature::CONTENT_SCRIPT_CONTEXT,
|
| - GURL()).is_available());
|
| - EXPECT_FALSE(extension_api->IsAvailable("runtime.sendNativeMessage",
|
| - extension.get(),
|
| - Feature::CONTENT_SCRIPT_CONTEXT,
|
| - GURL()).is_available());
|
| + EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "runtime.getBackgroundPage",
|
| + Feature::CONTENT_SCRIPT_CONTEXT,
|
| + GURL()));
|
| + EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "runtime.sendNativeMessage",
|
| + Feature::CONTENT_SCRIPT_CONTEXT,
|
| + GURL()));
|
| // "runtime" also has unprivileged parts.
|
| - EXPECT_TRUE(extension_api->IsAvailable("runtime.sendMessage",
|
| - extension.get(),
|
| - Feature::CONTENT_SCRIPT_CONTEXT,
|
| - GURL()).is_available());
|
| - EXPECT_TRUE(extension_api->IsAvailable("runtime.id",
|
| - extension.get(),
|
| - Feature::CONTENT_SCRIPT_CONTEXT,
|
| - GURL()).is_available());
|
| + EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "runtime.sendMessage",
|
| + Feature::CONTENT_SCRIPT_CONTEXT,
|
| + GURL()));
|
| + EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "runtime.id",
|
| + Feature::CONTENT_SCRIPT_CONTEXT,
|
| + GURL()));
|
|
|
| // "storage" is completely unprivileged.
|
| - 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());
|
| + EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "storage",
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + GURL()));
|
| + EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "storage",
|
| + Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + GURL()));
|
| + EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "storage",
|
| + Feature::CONTENT_SCRIPT_CONTEXT,
|
| + GURL()));
|
|
|
| // "extension" is partially unprivileged.
|
| - 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());
|
| + EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "extension",
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + GURL()));
|
| + EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "extension",
|
| + Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + GURL()));
|
| + EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "extension",
|
| + Feature::CONTENT_SCRIPT_CONTEXT,
|
| + GURL()));
|
|
|
| // "history" is entirely privileged.
|
| - 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());
|
| + EXPECT_TRUE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "history",
|
| + Feature::BLESSED_EXTENSION_CONTEXT,
|
| + GURL()));
|
| + EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "history",
|
| + Feature::UNBLESSED_EXTENSION_CONTEXT,
|
| + GURL()));
|
| + EXPECT_FALSE(extension_api->IsAnyFeatureAvailableToContext(
|
| + "history",
|
| + Feature::CONTENT_SCRIPT_CONTEXT,
|
| + GURL()));
|
| }
|
|
|
| scoped_refptr<Extension> CreateHostedApp() {
|
| @@ -622,7 +633,8 @@ TEST(ExtensionAPITest, TypesHaveNamespace) {
|
| << "Failed to load: " << manifest_path.value();
|
|
|
| ExtensionAPI api;
|
| - api.RegisterSchema("test.foo", manifest_str);
|
| + api.RegisterSchemaResource("test.foo", 0);
|
| + api.LoadSchema("test.foo", manifest_str);
|
|
|
| const base::DictionaryValue* schema = api.GetSchema("test.foo");
|
|
|
| @@ -669,5 +681,4 @@ TEST(ExtensionAPITest, TypesHaveNamespace) {
|
| EXPECT_EQ("fully.qualified.Type", type);
|
| }
|
|
|
| -} // namespace
|
| } // namespace extensions
|
|
|