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)); |
+} |