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