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

Unified Diff: chrome/common/extensions/simple_feature_provider_unittest.cc

Issue 9950046: Implement FeatureProvider for ExtensionAPI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 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/simple_feature_provider_unittest.cc
diff --git a/chrome/common/extensions/simple_feature_provider_unittest.cc b/chrome/common/extensions/simple_feature_provider_unittest.cc
index f6bffef710822d94a2b61b5c019c2e67e3010ee4..401828e3922a1a524a4270afe5d5ecc70cc99f0b 100644
--- a/chrome/common/extensions/simple_feature_provider_unittest.cc
+++ b/chrome/common/extensions/simple_feature_provider_unittest.cc
@@ -12,9 +12,79 @@ using extensions::SimpleFeatureProvider;
TEST(SimpleFeatureProvider, ManifestFeatures) {
SimpleFeatureProvider* provider =
SimpleFeatureProvider::GetManifestFeatures();
- scoped_ptr<Feature> feature = provider->GetFeature("name");
+ scoped_ptr<Feature> feature = provider->GetFeature("description");
ASSERT_TRUE(feature.get());
EXPECT_EQ(5u, feature->extension_types()->size());
+ EXPECT_EQ(1u, feature->extension_types()->count(Extension::TYPE_EXTENSION));
+ EXPECT_EQ(1u,
+ feature->extension_types()->count(Extension::TYPE_PACKAGED_APP));
+ EXPECT_EQ(1u,
+ feature->extension_types()->count(Extension::TYPE_PLATFORM_APP));
+ EXPECT_EQ(1u, feature->extension_types()->count(Extension::TYPE_HOSTED_APP));
+ EXPECT_EQ(1u, feature->extension_types()->count(Extension::TYPE_THEME));
+
+ DictionaryValue manifest;
+ manifest.SetString("name", "test extension");
+ manifest.SetString("version", "1");
+ manifest.SetString("description", "hello there");
+
+ std::string error;
+ scoped_refptr<const Extension> extension(Extension::Create(
+ FilePath(), Extension::INTERNAL, manifest, Extension::NO_FLAGS,
+ &error));
+
+ ASSERT_TRUE(extension.get());
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature->IsAvailableToContext(
+ extension.get(), Feature::UNSPECIFIED_CONTEXT));
+
+ feature = provider->GetFeature("theme");
+ ASSERT_TRUE(feature.get());
+ EXPECT_EQ(Feature::INVALID_TYPE, feature->IsAvailableToContext(
+ extension.get(), Feature::UNSPECIFIED_CONTEXT));
+
+ feature = provider->GetFeature("devtools_page");
+ ASSERT_TRUE(feature.get());
+ EXPECT_EQ(Feature::NOT_PRESENT, feature->IsAvailableToContext(
+ extension.get(), Feature::UNSPECIFIED_CONTEXT));
+}
+
+TEST(SimpleFeatureProvider, PermissionFeatures) {
+ SimpleFeatureProvider* provider =
+ SimpleFeatureProvider::GetPermissionFeatures();
+ scoped_ptr<Feature> feature = provider->GetFeature("browsingData");
+ ASSERT_TRUE(feature.get());
+ EXPECT_EQ(3u, feature->extension_types()->size());
+ EXPECT_EQ(1u, feature->extension_types()->count(Extension::TYPE_EXTENSION));
+ EXPECT_EQ(1u,
+ feature->extension_types()->count(Extension::TYPE_PACKAGED_APP));
+ EXPECT_EQ(1u,
+ feature->extension_types()->count(Extension::TYPE_PLATFORM_APP));
+
+ DictionaryValue manifest;
+ manifest.SetString("name", "test extension");
+ manifest.SetString("version", "1");
+ ListValue* permissions = new ListValue();
+ manifest.Set("permissions", permissions);
+ permissions->Append(Value::CreateStringValue("browsingData"));
+
+ std::string error;
+ scoped_refptr<const Extension> extension(Extension::Create(
+ FilePath(), Extension::INTERNAL, manifest, Extension::NO_FLAGS,
+ &error));
+
+ ASSERT_TRUE(extension.get());
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature->IsAvailableToContext(
+ extension.get(), Feature::UNSPECIFIED_CONTEXT));
+
+ feature = provider->GetFeature("chromePrivate");
+ ASSERT_TRUE(feature.get());
+ EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature->IsAvailableToContext(
+ extension.get(), Feature::UNSPECIFIED_CONTEXT));
+
+ feature = provider->GetFeature("clipboardWrite");
+ ASSERT_TRUE(feature.get());
+ EXPECT_EQ(Feature::NOT_PRESENT, feature->IsAvailableToContext(
+ extension.get(), Feature::UNSPECIFIED_CONTEXT));
}
TEST(SimpleFeatureProvider, Validation) {
@@ -32,7 +102,7 @@ TEST(SimpleFeatureProvider, Validation) {
feature2->Set("contexts", contexts);
value->Set("feature2", feature2);
- SimpleFeatureProvider provider(value.Pass());
+ SimpleFeatureProvider provider(value.Pass(), NULL);
// feature1 won't validate because it lacks an extension type.
EXPECT_FALSE(provider.GetFeature("feature1").get());

Powered by Google App Engine
This is Rietveld 408576698