| Index: chrome/common/extensions/features/simple_feature_unittest.cc
|
| diff --git a/chrome/common/extensions/features/feature_unittest.cc b/chrome/common/extensions/features/simple_feature_unittest.cc
|
| similarity index 85%
|
| rename from chrome/common/extensions/features/feature_unittest.cc
|
| rename to chrome/common/extensions/features/simple_feature_unittest.cc
|
| index 24134db95eab2818a1459c46918a9f6f679213e2..7f66c2a1aa09a9e7d9ceacc3fa6bbed0a7d964ed 100644
|
| --- a/chrome/common/extensions/features/feature_unittest.cc
|
| +++ b/chrome/common/extensions/features/simple_feature_unittest.cc
|
| @@ -2,13 +2,17 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/common/extensions/features/feature.h"
|
| +#include "chrome/common/extensions/features/simple_feature.h"
|
|
|
| +#include "chrome/common/extensions/value_builder.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| using chrome::VersionInfo;
|
| +using extensions::DictionaryBuilder;
|
| using extensions::Extension;
|
| using extensions::Feature;
|
| +using extensions::ListBuilder;
|
| +using extensions::SimpleFeature;
|
|
|
| namespace {
|
|
|
| @@ -21,17 +25,17 @@ struct IsAvailableTestData {
|
| Feature::AvailabilityResult expected_result;
|
| };
|
|
|
| -class ExtensionFeatureTest : public testing::Test {
|
| +class ExtensionSimpleFeatureTest : public testing::Test {
|
| protected:
|
| - ExtensionFeatureTest()
|
| + ExtensionSimpleFeatureTest()
|
| : current_channel_(VersionInfo::CHANNEL_UNKNOWN) {}
|
| - virtual ~ExtensionFeatureTest() {}
|
| + virtual ~ExtensionSimpleFeatureTest() {}
|
|
|
| private:
|
| Feature::ScopedCurrentChannel current_channel_;
|
| };
|
|
|
| -TEST_F(ExtensionFeatureTest, IsAvailableNullCase) {
|
| +TEST_F(ExtensionSimpleFeatureTest, IsAvailableNullCase) {
|
| const IsAvailableTestData tests[] = {
|
| { "", Extension::TYPE_UNKNOWN,
|
| Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
|
| @@ -56,7 +60,7 @@ TEST_F(ExtensionFeatureTest, IsAvailableNullCase) {
|
| Feature::IS_AVAILABLE }
|
| };
|
|
|
| - Feature feature;
|
| + SimpleFeature feature;
|
| for (size_t i = 0; i < arraysize(tests); ++i) {
|
| const IsAvailableTestData& test = tests[i];
|
| EXPECT_EQ(test.expected_result,
|
| @@ -68,8 +72,8 @@ TEST_F(ExtensionFeatureTest, IsAvailableNullCase) {
|
| }
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, Whitelist) {
|
| - Feature feature;
|
| +TEST_F(ExtensionSimpleFeatureTest, Whitelist) {
|
| + SimpleFeature feature;
|
| feature.whitelist()->insert("foo");
|
| feature.whitelist()->insert("bar");
|
|
|
| @@ -94,8 +98,8 @@ TEST_F(ExtensionFeatureTest, Whitelist) {
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, PackageType) {
|
| - Feature feature;
|
| +TEST_F(ExtensionSimpleFeatureTest, PackageType) {
|
| + SimpleFeature feature;
|
| feature.extension_types()->insert(Extension::TYPE_EXTENSION);
|
| feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP);
|
|
|
| @@ -114,9 +118,9 @@ TEST_F(ExtensionFeatureTest, PackageType) {
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, Context) {
|
| - Feature feature;
|
| - feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
|
| +TEST_F(ExtensionSimpleFeatureTest, Context) {
|
| + SimpleFeature feature;
|
| + feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
|
| feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP);
|
| feature.set_platform(Feature::CHROMEOS_PLATFORM);
|
| feature.set_min_manifest_version(21);
|
| @@ -148,13 +152,13 @@ TEST_F(ExtensionFeatureTest, Context) {
|
| feature.extension_types()->clear();
|
| feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP);
|
|
|
| - feature.contexts()->clear();
|
| - feature.contexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT);
|
| + feature.GetContexts()->clear();
|
| + feature.GetContexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT);
|
| EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailableToContext(
|
| extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
|
| Feature::CHROMEOS_PLATFORM).result());
|
| - feature.contexts()->clear();
|
| - feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
|
| + feature.GetContexts()->clear();
|
| + feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
|
|
|
| feature.set_location(Feature::COMPONENT_LOCATION);
|
| EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext(
|
| @@ -179,8 +183,8 @@ TEST_F(ExtensionFeatureTest, Context) {
|
| feature.set_max_manifest_version(25);
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, Location) {
|
| - Feature feature;
|
| +TEST_F(ExtensionSimpleFeatureTest, Location) {
|
| + SimpleFeature feature;
|
|
|
| // If the feature specifies "component" as its location, then only component
|
| // extensions can access it.
|
| @@ -199,8 +203,8 @@ TEST_F(ExtensionFeatureTest, Location) {
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, Platform) {
|
| - Feature feature;
|
| +TEST_F(ExtensionSimpleFeatureTest, Platform) {
|
| + SimpleFeature feature;
|
| feature.set_platform(Feature::CHROMEOS_PLATFORM);
|
| EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
|
| "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
|
| @@ -210,8 +214,8 @@ TEST_F(ExtensionFeatureTest, Platform) {
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, Version) {
|
| - Feature feature;
|
| +TEST_F(ExtensionSimpleFeatureTest, Version) {
|
| + SimpleFeature feature;
|
| feature.set_min_manifest_version(5);
|
|
|
| EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION,
|
| @@ -245,33 +249,33 @@ TEST_F(ExtensionFeatureTest, Version) {
|
| 7, Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, ParseNull) {
|
| +TEST_F(ExtensionSimpleFeatureTest, ParseNull) {
|
| scoped_ptr<DictionaryValue> value(new DictionaryValue());
|
| - scoped_ptr<Feature> feature(new Feature());
|
| + scoped_ptr<SimpleFeature> feature(new SimpleFeature());
|
| feature->Parse(value.get());
|
| EXPECT_TRUE(feature->whitelist()->empty());
|
| EXPECT_TRUE(feature->extension_types()->empty());
|
| - EXPECT_TRUE(feature->contexts()->empty());
|
| + EXPECT_TRUE(feature->GetContexts()->empty());
|
| EXPECT_EQ(Feature::UNSPECIFIED_LOCATION, feature->location());
|
| EXPECT_EQ(Feature::UNSPECIFIED_PLATFORM, feature->platform());
|
| EXPECT_EQ(0, feature->min_manifest_version());
|
| EXPECT_EQ(0, feature->max_manifest_version());
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, ParseWhitelist) {
|
| +TEST_F(ExtensionSimpleFeatureTest, ParseWhitelist) {
|
| scoped_ptr<DictionaryValue> value(new DictionaryValue());
|
| ListValue* whitelist = new ListValue();
|
| whitelist->Append(Value::CreateStringValue("foo"));
|
| whitelist->Append(Value::CreateStringValue("bar"));
|
| value->Set("whitelist", whitelist);
|
| - scoped_ptr<Feature> feature(new Feature());
|
| + scoped_ptr<SimpleFeature> feature(new SimpleFeature());
|
| feature->Parse(value.get());
|
| EXPECT_EQ(2u, feature->whitelist()->size());
|
| EXPECT_TRUE(feature->whitelist()->count("foo"));
|
| EXPECT_TRUE(feature->whitelist()->count("bar"));
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, ParsePackageTypes) {
|
| +TEST_F(ExtensionSimpleFeatureTest, ParsePackageTypes) {
|
| scoped_ptr<DictionaryValue> value(new DictionaryValue());
|
| ListValue* extension_types = new ListValue();
|
| extension_types->Append(Value::CreateStringValue("extension"));
|
| @@ -280,7 +284,7 @@ TEST_F(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());
|
| + scoped_ptr<SimpleFeature> feature(new SimpleFeature());
|
| feature->Parse(value.get());
|
| EXPECT_EQ(5u, feature->extension_types()->size());
|
| EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_EXTENSION));
|
| @@ -291,12 +295,12 @@ TEST_F(ExtensionFeatureTest, ParsePackageTypes) {
|
| EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_PLATFORM_APP));
|
|
|
| value->SetString("extension_types", "all");
|
| - scoped_ptr<Feature> feature2(new Feature());
|
| + scoped_ptr<SimpleFeature> feature2(new SimpleFeature());
|
| feature2->Parse(value.get());
|
| EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types()));
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, ParseContexts) {
|
| +TEST_F(ExtensionSimpleFeatureTest, ParseContexts) {
|
| scoped_ptr<DictionaryValue> value(new DictionaryValue());
|
| ListValue* contexts = new ListValue();
|
| contexts->Append(Value::CreateStringValue("blessed_extension"));
|
| @@ -304,57 +308,61 @@ TEST_F(ExtensionFeatureTest, ParseContexts) {
|
| contexts->Append(Value::CreateStringValue("content_script"));
|
| contexts->Append(Value::CreateStringValue("web_page"));
|
| value->Set("contexts", contexts);
|
| - scoped_ptr<Feature> feature(new Feature());
|
| + scoped_ptr<SimpleFeature> feature(new SimpleFeature());
|
| 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));
|
| - EXPECT_TRUE(feature->contexts()->count(Feature::CONTENT_SCRIPT_CONTEXT));
|
| - EXPECT_TRUE(feature->contexts()->count(Feature::WEB_PAGE_CONTEXT));
|
| + EXPECT_EQ(4u, feature->GetContexts()->size());
|
| + EXPECT_TRUE(
|
| + feature->GetContexts()->count(Feature::BLESSED_EXTENSION_CONTEXT));
|
| + EXPECT_TRUE(
|
| + feature->GetContexts()->count(Feature::UNBLESSED_EXTENSION_CONTEXT));
|
| + EXPECT_TRUE(
|
| + feature->GetContexts()->count(Feature::CONTENT_SCRIPT_CONTEXT));
|
| + EXPECT_TRUE(
|
| + feature->GetContexts()->count(Feature::WEB_PAGE_CONTEXT));
|
|
|
| value->SetString("contexts", "all");
|
| - scoped_ptr<Feature> feature2(new Feature());
|
| + scoped_ptr<SimpleFeature> feature2(new SimpleFeature());
|
| feature2->Parse(value.get());
|
| - EXPECT_EQ(*(feature->contexts()), *(feature2->contexts()));
|
| + EXPECT_EQ(*(feature->GetContexts()), *(feature2->GetContexts()));
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, ParseLocation) {
|
| +TEST_F(ExtensionSimpleFeatureTest, ParseLocation) {
|
| scoped_ptr<DictionaryValue> value(new DictionaryValue());
|
| value->SetString("location", "component");
|
| - scoped_ptr<Feature> feature(new Feature());
|
| + scoped_ptr<SimpleFeature> feature(new SimpleFeature());
|
| feature->Parse(value.get());
|
| EXPECT_EQ(Feature::COMPONENT_LOCATION, feature->location());
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, ParsePlatform) {
|
| +TEST_F(ExtensionSimpleFeatureTest, ParsePlatform) {
|
| scoped_ptr<DictionaryValue> value(new DictionaryValue());
|
| value->SetString("platform", "chromeos");
|
| - scoped_ptr<Feature> feature(new Feature());
|
| + scoped_ptr<SimpleFeature> feature(new SimpleFeature());
|
| feature->Parse(value.get());
|
| EXPECT_EQ(Feature::CHROMEOS_PLATFORM, feature->platform());
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, ManifestVersion) {
|
| +TEST_F(ExtensionSimpleFeatureTest, 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());
|
| + scoped_ptr<SimpleFeature> feature(new SimpleFeature());
|
| feature->Parse(value.get());
|
| EXPECT_EQ(1, feature->min_manifest_version());
|
| EXPECT_EQ(5, feature->max_manifest_version());
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, Inheritance) {
|
| - Feature feature;
|
| +TEST_F(ExtensionSimpleFeatureTest, Inheritance) {
|
| + SimpleFeature feature;
|
| feature.whitelist()->insert("foo");
|
| feature.extension_types()->insert(Extension::TYPE_THEME);
|
| - feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
|
| + feature.GetContexts()->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;
|
| + SimpleFeature feature2 = feature;
|
| EXPECT_TRUE(feature2.Equals(feature));
|
|
|
| DictionaryValue definition;
|
| @@ -378,26 +386,26 @@ TEST_F(ExtensionFeatureTest, Inheritance) {
|
| 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.GetContexts()->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(1u, feature2.GetContexts()->count(
|
| + Feature::UNBLESSED_EXTENSION_CONTEXT));
|
| EXPECT_EQ(2, feature2.min_manifest_version());
|
| EXPECT_EQ(3, feature2.max_manifest_version());
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, Equals) {
|
| - Feature feature;
|
| +TEST_F(ExtensionSimpleFeatureTest, Equals) {
|
| + SimpleFeature feature;
|
| feature.whitelist()->insert("foo");
|
| feature.extension_types()->insert(Extension::TYPE_THEME);
|
| - feature.contexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT);
|
| + feature.GetContexts()->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);
|
| + SimpleFeature feature2(feature);
|
| EXPECT_TRUE(feature2.Equals(feature));
|
|
|
| feature2.whitelist()->clear();
|
| @@ -408,7 +416,7 @@ TEST_F(ExtensionFeatureTest, Equals) {
|
| EXPECT_FALSE(feature2.Equals(feature));
|
|
|
| feature2 = feature;
|
| - feature2.contexts()->clear();
|
| + feature2.GetContexts()->clear();
|
| EXPECT_FALSE(feature2.Equals(feature));
|
|
|
| feature2 = feature;
|
| @@ -432,7 +440,7 @@ Feature::AvailabilityResult IsAvailableInChannel(
|
| const std::string& channel, VersionInfo::Channel channel_for_testing) {
|
| Feature::ScopedCurrentChannel current_channel(channel_for_testing);
|
|
|
| - Feature feature;
|
| + SimpleFeature feature;
|
| if (!channel.empty()) {
|
| DictionaryValue feature_value;
|
| feature_value.SetString("channel", channel);
|
| @@ -443,10 +451,11 @@ Feature::AvailabilityResult IsAvailableInChannel(
|
| "random-extension",
|
| Extension::TYPE_UNKNOWN,
|
| Feature::UNSPECIFIED_LOCATION,
|
| - -1).result();
|
| + -1,
|
| + Feature::GetCurrentPlatform()).result();
|
| }
|
|
|
| -TEST_F(ExtensionFeatureTest, SupportedChannel) {
|
| +TEST_F(ExtensionSimpleFeatureTest, SupportedChannel) {
|
| // stable supported.
|
| EXPECT_EQ(Feature::IS_AVAILABLE,
|
| IsAvailableInChannel("stable", VersionInfo::CHANNEL_UNKNOWN));
|
|
|