diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-04 19:07:37 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-04 19:07:37 +0000 |
commit | 1508feeb7753a5c23cfe52b9b1c04e1c91fa9986 (patch) | |
tree | a97f0e072a93c974eafcf3b6dcbfd15d3a49ad1a /chrome/common/extensions/feature_unittest.cc | |
parent | 041ccd2024c43ff9317cabbecbc81429a4a3ac9a (diff) | |
download | chromium_src-1508feeb7753a5c23cfe52b9b1c04e1c91fa9986.zip chromium_src-1508feeb7753a5c23cfe52b9b1c04e1c91fa9986.tar.gz chromium_src-1508feeb7753a5c23cfe52b9b1c04e1c91fa9986.tar.bz2 |
Revert 130697 - Reland r130462: Implement FeatureProvider for ExtensionAPI."
BUG=120069
TBR=mpcomplete@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9969136
TBR=aa@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9978012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@130701 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions/feature_unittest.cc')
-rw-r--r-- | chrome/common/extensions/feature_unittest.cc | 333 |
1 files changed, 95 insertions, 238 deletions
diff --git a/chrome/common/extensions/feature_unittest.cc b/chrome/common/extensions/feature_unittest.cc index c4cc1a3..4442744 100644 --- a/chrome/common/extensions/feature_unittest.cc +++ b/chrome/common/extensions/feature_unittest.cc @@ -13,6 +13,7 @@ namespace { struct IsAvailableTestData { std::string extension_id; Extension::Type extension_type; + Feature::Context context; Feature::Location location; Feature::Platform platform; int manifest_version; @@ -23,25 +24,25 @@ struct IsAvailableTestData { TEST(ExtensionFeatureTest, IsAvailableNullCase) { const IsAvailableTestData tests[] = { - { "", Extension::TYPE_UNKNOWN, + { "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE }, - { "random-extension", Extension::TYPE_UNKNOWN, + { "random-extension", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE }, - { "", Extension::TYPE_PACKAGED_APP, + { "", Extension::TYPE_PACKAGED_APP, Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE }, - { "", Extension::TYPE_UNKNOWN, + { "", Extension::TYPE_UNKNOWN, Feature::BLESSED_EXTENSION_CONTEXT, Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE }, - { "", Extension::TYPE_UNKNOWN, + { "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_CONTEXT, Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE }, - { "", Extension::TYPE_UNKNOWN, + { "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1, Feature::IS_AVAILABLE }, - { "", Extension::TYPE_UNKNOWN, + { "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, 25, Feature::IS_AVAILABLE } }; @@ -50,11 +51,9 @@ TEST(ExtensionFeatureTest, IsAvailableNullCase) { for (size_t i = 0; i < arraysize(tests); ++i) { const IsAvailableTestData& test = tests[i]; EXPECT_EQ(test.expected_result, - feature.IsAvailableToManifest(test.extension_id, - test.extension_type, - test.location, - test.manifest_version, - test.platform)); + feature.IsAvailable(test.extension_id, test.extension_type, + test.location, test.context, test.platform, + test.manifest_version)); } } @@ -63,24 +62,24 @@ TEST(ExtensionFeatureTest, Whitelist) { feature.whitelist()->insert("foo"); feature.whitelist()->insert("bar"); - 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)); + 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)); feature.extension_types()->insert(Extension::TYPE_PACKAGED_APP); - EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( - "baz", Extension::TYPE_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, -1, - Feature::UNSPECIFIED_PLATFORM)); + EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailable( + "baz", Extension::TYPE_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, + Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1)); } TEST(ExtensionFeatureTest, PackageType) { @@ -88,84 +87,39 @@ TEST(ExtensionFeatureTest, PackageType) { feature.extension_types()->insert(Extension::TYPE_EXTENSION); feature.extension_types()->insert(Extension::TYPE_PACKAGED_APP); - 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)); + 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)); } TEST(ExtensionFeatureTest, Context) { Feature feature; feature.contexts()->insert(Feature::BLESSED_EXTENSION_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); + feature.contexts()->insert(Feature::CONTENT_SCRIPT_CONTEXT); - 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); - - 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::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)); - EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext( - extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, - Feature::UNSPECIFIED_PLATFORM)); - - 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); + 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)); } TEST(ExtensionFeatureTest, Location) { @@ -174,70 +128,65 @@ 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.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)); + 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)); // But component extensions can access anything else, whatever their location. feature.set_location(Feature::UNSPECIFIED_LOCATION); - EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( - "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1, - Feature::UNSPECIFIED_PLATFORM)); + EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable( + "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, + Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, -1)); } TEST(ExtensionFeatureTest, Platform) { Feature feature; feature.set_platform(Feature::CHROMEOS_PLATFORM); - 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)); + 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)); } TEST(ExtensionFeatureTest, Version) { Feature feature; feature.set_min_manifest_version(5); - 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::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::IS_AVAILABLE, feature.IsAvailableToManifest( + EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable( "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, - 5, Feature::UNSPECIFIED_PLATFORM)); - EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( + Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, 5)); + EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailable( "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, - 10, Feature::UNSPECIFIED_PLATFORM)); + Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, 10)); feature.set_max_manifest_version(8); - 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( + EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, feature.IsAvailable( "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, - 7, Feature::UNSPECIFIED_PLATFORM)); + 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( + "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, + Feature::UNSPECIFIED_CONTEXT, Feature::UNSPECIFIED_PLATFORM, 7)); } TEST(ExtensionFeatureTest, ParseNull) { scoped_ptr<DictionaryValue> value(new DictionaryValue()); - scoped_ptr<Feature> feature(new Feature()); - feature->Parse(value.get()); + scoped_ptr<Feature> feature(Feature::Parse(value.get())); EXPECT_TRUE(feature->whitelist()->empty()); EXPECT_TRUE(feature->extension_types()->empty()); EXPECT_TRUE(feature->contexts()->empty()); @@ -253,8 +202,7 @@ TEST(ExtensionFeatureTest, ParseWhitelist) { whitelist->Append(Value::CreateStringValue("foo")); whitelist->Append(Value::CreateStringValue("bar")); value->Set("whitelist", whitelist); - scoped_ptr<Feature> feature(new Feature()); - feature->Parse(value.get()); + scoped_ptr<Feature> feature(Feature::Parse(value.get())); EXPECT_EQ(2u, feature->whitelist()->size()); EXPECT_TRUE(feature->whitelist()->count("foo")); EXPECT_TRUE(feature->whitelist()->count("bar")); @@ -269,8 +217,7 @@ 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(new Feature()); - feature->Parse(value.get()); + scoped_ptr<Feature> 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)); @@ -279,8 +226,7 @@ TEST(ExtensionFeatureTest, ParsePackageTypes) { EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_PLATFORM_APP)); value->SetString("extension_types", "all"); - scoped_ptr<Feature> feature2(new Feature()); - feature2->Parse(value.get()); + scoped_ptr<Feature> feature2(Feature::Parse(value.get())); EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types())); } @@ -292,8 +238,7 @@ TEST(ExtensionFeatureTest, ParseContexts) { contexts->Append(Value::CreateStringValue("content_script")); contexts->Append(Value::CreateStringValue("web_page")); value->Set("contexts", contexts); - scoped_ptr<Feature> feature(new Feature()); - feature->Parse(value.get()); + scoped_ptr<Feature> 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)); @@ -301,24 +246,21 @@ TEST(ExtensionFeatureTest, ParseContexts) { EXPECT_TRUE(feature->contexts()->count(Feature::WEB_PAGE_CONTEXT)); value->SetString("contexts", "all"); - scoped_ptr<Feature> feature2(new Feature()); - feature2->Parse(value.get()); + scoped_ptr<Feature> feature2(Feature::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(new Feature()); - feature->Parse(value.get()); + scoped_ptr<Feature> 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(new Feature()); - feature->Parse(value.get()); + scoped_ptr<Feature> feature(Feature::Parse(value.get())); EXPECT_EQ(Feature::CHROMEOS_PLATFORM, feature->platform()); } @@ -326,92 +268,7 @@ 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(new Feature()); - feature->Parse(value.get()); + scoped_ptr<Feature> feature(Feature::Parse(value.get())); EXPECT_EQ(1, feature->min_manifest_version()); EXPECT_EQ(5, feature->max_manifest_version()); } - -TEST(ExtensionFeatureTest, Inheritance) { - 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(1); - feature.set_max_manifest_version(2); - - Feature feature2 = feature; - EXPECT_TRUE(feature2.Equals(feature)); - - DictionaryValue definition; - feature2.Parse(&definition); - EXPECT_TRUE(feature2.Equals(feature)); - - ListValue* whitelist = new ListValue(); - ListValue* extension_types = new ListValue(); - ListValue* contexts = new ListValue(); - whitelist->Append(Value::CreateStringValue("bar")); - extension_types->Append(Value::CreateStringValue("extension")); - contexts->Append(Value::CreateStringValue("unblessed_extension")); - definition.Set("whitelist", whitelist); - definition.Set("extension_types", extension_types); - definition.Set("contexts", contexts); - // Can't test location or platform because we only have one value so far. - definition.Set("min_manifest_version", Value::CreateIntegerValue(2)); - definition.Set("max_manifest_version", Value::CreateIntegerValue(3)); - - feature2.Parse(&definition); - EXPECT_FALSE(feature2.Equals(feature)); - EXPECT_EQ(1u, feature2.whitelist()->size()); - EXPECT_EQ(1u, feature2.extension_types()->size()); - EXPECT_EQ(1u, feature2.contexts()->size()); - EXPECT_EQ(1u, feature2.whitelist()->count("bar")); - EXPECT_EQ(1u, feature2.extension_types()->count(Extension::TYPE_EXTENSION)); - EXPECT_EQ(1u, - feature2.contexts()->count(Feature::UNBLESSED_EXTENSION_CONTEXT)); - EXPECT_EQ(2, feature2.min_manifest_version()); - EXPECT_EQ(3, feature2.max_manifest_version()); -} - -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)); -} |