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

Unified Diff: chrome/common/extensions/feature_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/feature_unittest.cc
diff --git a/chrome/common/extensions/feature_unittest.cc b/chrome/common/extensions/feature_unittest.cc
index 44427445ec766dd2a755674c566c61442e287d96..4a896289ce5a1f53ce4c819af3e16e660846fd18 100644
--- a/chrome/common/extensions/feature_unittest.cc
+++ b/chrome/common/extensions/feature_unittest.cc
@@ -13,7 +13,6 @@ namespace {
struct IsAvailableTestData {
std::string extension_id;
Extension::Type extension_type;
- Feature::Context context;
Feature::Location location;
Feature::Platform platform;
int manifest_version;
@@ -24,25 +23,25 @@ struct IsAvailableTestData {
TEST(ExtensionFeatureTest, IsAvailableNullCase) {
const IsAvailableTestData tests[] = {
- { "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_CONTEXT,
+ { "", Extension::TYPE_UNKNOWN,
Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
Feature::IS_AVAILABLE },
- { "random-extension", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_CONTEXT,
+ { "random-extension", Extension::TYPE_UNKNOWN,
Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
Feature::IS_AVAILABLE },
- { "", Extension::TYPE_PACKAGED_APP, Feature::UNSPECIFIED_CONTEXT,
+ { "", Extension::TYPE_PACKAGED_APP,
Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
Feature::IS_AVAILABLE },
- { "", Extension::TYPE_UNKNOWN, Feature::BLESSED_EXTENSION_CONTEXT,
+ { "", Extension::TYPE_UNKNOWN,
Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
Feature::IS_AVAILABLE },
- { "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_CONTEXT,
+ { "", Extension::TYPE_UNKNOWN,
Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
Feature::IS_AVAILABLE },
- { "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_CONTEXT,
+ { "", Extension::TYPE_UNKNOWN,
Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1,
Feature::IS_AVAILABLE },
- { "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_CONTEXT,
+ { "", Extension::TYPE_UNKNOWN,
Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, 25,
Feature::IS_AVAILABLE }
};
@@ -51,9 +50,11 @@ TEST(ExtensionFeatureTest, IsAvailableNullCase) {
for (size_t i = 0; i < arraysize(tests); ++i) {
const IsAvailableTestData& test = tests[i];
EXPECT_EQ(test.expected_result,
- feature.IsAvailable(test.extension_id, test.extension_type,
- test.location, test.context, test.platform,
- test.manifest_version));
+ feature.IsAvailableToManifest(test.extension_id,
+ test.extension_type,
+ test.location,
+ test.manifest_version,
+ test.platform));
}
}
@@ -62,24 +63,24 @@ TEST(ExtensionFeatureTest, Whitelist) {
feature.whitelist()->insert("foo");
feature.whitelist()->insert("bar");
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
- "foo", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
- "bar", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
-
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailable(
- "baz", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
+ "foo", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
+ "bar", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
+
+ EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
+ "baz", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
+ EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
feature.extension_types()->insert(Extension::TYPE_PACKAGED_APP);
- EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailable(
- "baz", Extension::TYPE_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
+ EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
+ "baz", Extension::TYPE_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
}
TEST(ExtensionFeatureTest, PackageType) {
@@ -87,39 +88,83 @@ TEST(ExtensionFeatureTest, PackageType) {
feature.extension_types()->insert(Extension::TYPE_EXTENSION);
feature.extension_types()->insert(Extension::TYPE_PACKAGED_APP);
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
- "", Extension::TYPE_EXTENSION, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
- "", Extension::TYPE_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
-
- EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
- EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailable(
- "", Extension::TYPE_THEME, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
+ "", Extension::TYPE_EXTENSION, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
+ "", Extension::TYPE_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
+
+ EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
+ EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest(
+ "", Extension::TYPE_THEME, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
}
TEST(ExtensionFeatureTest, Context) {
Feature feature;
feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
- feature.contexts()->insert(Feature::CONTENT_SCRIPT_CONTEXT);
+ feature.extension_types()->insert(Extension::TYPE_PACKAGED_APP);
+ feature.set_platform(Feature::CHROMEOS_PLATFORM);
+ feature.set_min_manifest_version(21);
+ feature.set_max_manifest_version(25);
+
+ DictionaryValue manifest;
+ manifest.SetString("name", "test");
+ manifest.SetString("version", "1");
+ manifest.SetInteger("manifest_version", 21);
+ manifest.SetString("app.launch.local_path", "foo.html");
+
+ std::string error;
+ scoped_refptr<const Extension> extension(Extension::Create(
+ FilePath(), Extension::INTERNAL, manifest, Extension::NO_FLAGS, &error));
+ EXPECT_EQ("", error);
+ ASSERT_TRUE(extension.get());
+
+ feature.whitelist()->insert("monkey");
+ EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToContext(
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
+ Feature::CHROMEOS_PLATFORM));
+ feature.whitelist()->clear();
+
+ feature.extension_types()->clear();
+ feature.extension_types()->insert(Extension::TYPE_THEME);
+ EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToContext(
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
+ Feature::CHROMEOS_PLATFORM));
+ feature.extension_types()->clear();
+ feature.extension_types()->insert(Extension::TYPE_PACKAGED_APP);
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::BLESSED_EXTENSION_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::CONTENT_SCRIPT_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
+ feature.contexts()->clear();
+ feature.contexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT);
+ EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailableToContext(
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
+ Feature::CHROMEOS_PLATFORM));
+ feature.contexts()->clear();
+ feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
- EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNBLESSED_EXTENSION_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
- EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
+ feature.set_location(Feature::COMPONENT_LOCATION);
+ EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext(
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
+ Feature::CHROMEOS_PLATFORM));
+ feature.set_location(Feature::UNSPECIFIED_LOCATION);
+
+ EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext(
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT));
+
+ feature.set_min_manifest_version(22);
+ EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, feature.IsAvailableToContext(
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
+ Feature::CHROMEOS_PLATFORM));
+ feature.set_min_manifest_version(21);
+
+ feature.set_max_manifest_version(18);
+ EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, feature.IsAvailableToContext(
+ extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
+ Feature::CHROMEOS_PLATFORM));
+ feature.set_max_manifest_version(25);
}
TEST(ExtensionFeatureTest, Location) {
@@ -128,65 +173,70 @@ TEST(ExtensionFeatureTest, Location) {
// If the feature specifies "component" as its location, then only component
// extensions can access it.
feature.set_location(Feature::COMPONENT_LOCATION);
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
- EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
+ EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
// But component extensions can access anything else, whatever their location.
feature.set_location(Feature::UNSPECIFIED_LOCATION);
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
}
TEST(ExtensionFeatureTest, Platform) {
Feature feature;
feature.set_platform(Feature::CHROMEOS_PLATFORM);
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::CHROMEOS_PLATFORM, -1));
- EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1));
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::CHROMEOS_PLATFORM));
+ EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
+ Feature::UNSPECIFIED_PLATFORM));
}
TEST(ExtensionFeatureTest, Version) {
Feature feature;
feature.set_min_manifest_version(5);
- EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, 0));
- EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, 4));
+ EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION,
+ feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
+ 0, Feature::UNSPECIFIED_PLATFORM));
+ EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION,
+ feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
+ 4, Feature::UNSPECIFIED_PLATFORM));
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
"", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, 5));
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
+ 5, Feature::UNSPECIFIED_PLATFORM));
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
"", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, 10));
+ 10, Feature::UNSPECIFIED_PLATFORM));
feature.set_max_manifest_version(8);
- EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, 10));
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
- "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, 8));
- EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable(
+ EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION,
+ feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
+ 10, Feature::UNSPECIFIED_PLATFORM));
+ EXPECT_EQ(Feature::IS_AVAILABLE,
+ feature.IsAvailableToManifest(
+ "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
+ 8, Feature::UNSPECIFIED_PLATFORM));
+ EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
"", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
- Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, 7));
+ 7, Feature::UNSPECIFIED_PLATFORM));
}
TEST(ExtensionFeatureTest, ParseNull) {
scoped_ptr<DictionaryValue> value(new DictionaryValue());
- scoped_ptr<Feature> feature(Feature::Parse(value.get()));
+ scoped_ptr<Feature> feature(new Feature());
+ feature->Parse(value.get());
EXPECT_TRUE(feature->whitelist()->empty());
EXPECT_TRUE(feature->extension_types()->empty());
EXPECT_TRUE(feature->contexts()->empty());
@@ -202,7 +252,8 @@ TEST(ExtensionFeatureTest, ParseWhitelist) {
whitelist->Append(Value::CreateStringValue("foo"));
whitelist->Append(Value::CreateStringValue("bar"));
value->Set("whitelist", whitelist);
- scoped_ptr<Feature> feature(Feature::Parse(value.get()));
+ scoped_ptr<Feature> feature(new Feature());
+ feature->Parse(value.get());
EXPECT_EQ(2u, feature->whitelist()->size());
EXPECT_TRUE(feature->whitelist()->count("foo"));
EXPECT_TRUE(feature->whitelist()->count("bar"));
@@ -217,7 +268,8 @@ TEST(ExtensionFeatureTest, ParsePackageTypes) {
extension_types->Append(Value::CreateStringValue("hosted_app"));
extension_types->Append(Value::CreateStringValue("platform_app"));
value->Set("extension_types", extension_types);
- scoped_ptr<Feature> feature(Feature::Parse(value.get()));
+ scoped_ptr<Feature> feature(new Feature());
+ feature->Parse(value.get());
EXPECT_EQ(5u, feature->extension_types()->size());
EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_EXTENSION));
EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_THEME));
@@ -226,7 +278,8 @@ TEST(ExtensionFeatureTest, ParsePackageTypes) {
EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_PLATFORM_APP));
value->SetString("extension_types", "all");
- scoped_ptr<Feature> feature2(Feature::Parse(value.get()));
+ scoped_ptr<Feature> feature2(new Feature());
+ feature2->Parse(value.get());
EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types()));
}
@@ -238,7 +291,8 @@ TEST(ExtensionFeatureTest, ParseContexts) {
contexts->Append(Value::CreateStringValue("content_script"));
contexts->Append(Value::CreateStringValue("web_page"));
value->Set("contexts", contexts);
- scoped_ptr<Feature> feature(Feature::Parse(value.get()));
+ scoped_ptr<Feature> feature(new Feature());
+ feature->Parse(value.get());
EXPECT_EQ(4u, feature->contexts()->size());
EXPECT_TRUE(feature->contexts()->count(Feature::BLESSED_EXTENSION_CONTEXT));
EXPECT_TRUE(feature->contexts()->count(Feature::UNBLESSED_EXTENSION_CONTEXT));
@@ -246,21 +300,24 @@ TEST(ExtensionFeatureTest, ParseContexts) {
EXPECT_TRUE(feature->contexts()->count(Feature::WEB_PAGE_CONTEXT));
value->SetString("contexts", "all");
- scoped_ptr<Feature> feature2(Feature::Parse(value.get()));
+ scoped_ptr<Feature> feature2(new Feature());
+ feature2->Parse(value.get());
EXPECT_EQ(*(feature->contexts()), *(feature2->contexts()));
}
TEST(ExtensionFeatureTest, ParseLocation) {
scoped_ptr<DictionaryValue> value(new DictionaryValue());
value->SetString("location", "component");
- scoped_ptr<Feature> feature(Feature::Parse(value.get()));
+ scoped_ptr<Feature> feature(new Feature());
+ feature->Parse(value.get());
EXPECT_EQ(Feature::COMPONENT_LOCATION, feature->location());
}
TEST(ExtensionFeatureTest, ParsePlatform) {
scoped_ptr<DictionaryValue> value(new DictionaryValue());
value->SetString("platform", "chromeos");
- scoped_ptr<Feature> feature(Feature::Parse(value.get()));
+ scoped_ptr<Feature> feature(new Feature());
+ feature->Parse(value.get());
EXPECT_EQ(Feature::CHROMEOS_PLATFORM, feature->platform());
}
@@ -268,7 +325,67 @@ TEST(ExtensionFeatureTest, ManifestVersion) {
scoped_ptr<DictionaryValue> value(new DictionaryValue());
value->SetInteger("min_manifest_version", 1);
value->SetInteger("max_manifest_version", 5);
- scoped_ptr<Feature> feature(Feature::Parse(value.get()));
+ scoped_ptr<Feature> feature(new Feature());
+ feature->Parse(value.get());
EXPECT_EQ(1, feature->min_manifest_version());
EXPECT_EQ(5, feature->max_manifest_version());
}
+
+TEST(ExtensionFeatureTest, ParseLeavesExistingValues) {
+ Feature feature;
+ feature.whitelist()->insert("foo");
+ feature.extension_types()->insert(Extension::TYPE_THEME);
+ feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
+ feature.set_location(Feature::COMPONENT_LOCATION);
+ feature.set_platform(Feature::CHROMEOS_PLATFORM);
+ feature.set_min_manifest_version(4);
+ feature.set_min_manifest_version(2);
+
+ Feature feature2 = feature;
+ EXPECT_TRUE(feature2.Equals(feature));
+
+ DictionaryValue definition;
+ feature2.Parse(&definition);
+ EXPECT_TRUE(feature2.Equals(feature));
koz (OOO until 15th September) 2012/04/02 06:39:48 Could you add a test for what happens when a dicti
Aaron Boodman 2012/04/02 08:21:54 Done.
+}
+
+TEST(ExtensionFeatureTest, Equals) {
+ Feature feature;
+ feature.whitelist()->insert("foo");
+ feature.extension_types()->insert(Extension::TYPE_THEME);
+ feature.contexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT);
+ feature.set_location(Feature::COMPONENT_LOCATION);
+ feature.set_platform(Feature::CHROMEOS_PLATFORM);
+ feature.set_min_manifest_version(18);
+ feature.set_max_manifest_version(25);
+
+ Feature feature2(feature);
+ EXPECT_TRUE(feature2.Equals(feature));
+
+ feature2.whitelist()->clear();
+ EXPECT_FALSE(feature2.Equals(feature));
+
+ feature2 = feature;
+ feature2.extension_types()->clear();
+ EXPECT_FALSE(feature2.Equals(feature));
+
+ feature2 = feature;
+ feature2.contexts()->clear();
+ EXPECT_FALSE(feature2.Equals(feature));
+
+ feature2 = feature;
+ feature2.set_location(Feature::UNSPECIFIED_LOCATION);
+ EXPECT_FALSE(feature2.Equals(feature));
+
+ feature2 = feature;
+ feature2.set_platform(Feature::UNSPECIFIED_PLATFORM);
+ EXPECT_FALSE(feature2.Equals(feature));
+
+ feature2 = feature;
+ feature2.set_min_manifest_version(0);
+ EXPECT_FALSE(feature2.Equals(feature));
+
+ feature2 = feature;
+ feature2.set_max_manifest_version(0);
+ EXPECT_FALSE(feature2.Equals(feature));
+}

Powered by Google App Engine
This is Rietveld 408576698