Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(559)

Unified Diff: chrome/common/extensions/api/extension_api_unittest.cc

Issue 15091002: Lazily load API schemas from resource files and convert all APIs to features (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..c54c815f00173cea6de69a3a563cfb37ef279f26 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();
@@ -94,7 +93,9 @@ TEST(ExtensionAPITest, IsPrivileged) {
// 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>"));
+
+ // Child features that are unknown default to parent feature privilege.
+ EXPECT_FALSE(extension_api->IsPrivileged("extension.<unknown-member>"));
// Exists, but privileged.
EXPECT_TRUE(extension_api->IsPrivileged("extension.getViews"));
@@ -148,7 +149,7 @@ TEST(ExtensionAPITest, IsPrivilegedFeatures) {
}
}
-TEST(ExtensionAPI, APIFeatures) {
+TEST(ExtensionAPITest, APIFeatures) {
struct {
std::string api_full_name;
bool expect_is_available;
@@ -186,7 +187,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 +227,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 +238,7 @@ TEST(ExtensionAPI, APIFeatures) {
}
}
-TEST(ExtensionAPI, IsAnyFeatureAvailableToContext) {
+TEST(ExtensionAPITest, IsAnyFeatureAvailableToContext) {
struct {
std::string api_full_name;
bool expect_is_available;
@@ -261,7 +279,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,
@@ -622,7 +640,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 +688,4 @@ TEST(ExtensionAPITest, TypesHaveNamespace) {
EXPECT_EQ("fully.qualified.Type", type);
}
-} // namespace
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698