| Index: extensions/common/features/simple_feature_unittest.cc
|
| diff --git a/extensions/common/features/simple_feature_unittest.cc b/extensions/common/features/simple_feature_unittest.cc
|
| index aa84bf82becaebd335d9dd875bd463023455a795..330978b27ebb7e0eb65c9f4b7428116b49ac053f 100644
|
| --- a/extensions/common/features/simple_feature_unittest.cc
|
| +++ b/extensions/common/features/simple_feature_unittest.cc
|
| @@ -18,17 +18,21 @@ using extensions::Manifest;
|
| using extensions::ScopedCurrentChannel;
|
| using extensions::SimpleFeature;
|
|
|
| +namespace extensions {
|
| +
|
| namespace {
|
|
|
| struct IsAvailableTestData {
|
| std::string extension_id;
|
| Manifest::Type extension_type;
|
| - Feature::Location location;
|
| + Manifest::Location location;
|
| Feature::Platform platform;
|
| int manifest_version;
|
| Feature::AvailabilityResult expected_result;
|
| };
|
|
|
| +} // namespace
|
| +
|
| class ExtensionSimpleFeatureTest : public testing::Test {
|
| protected:
|
| ExtensionSimpleFeatureTest()
|
| @@ -41,28 +45,20 @@ class ExtensionSimpleFeatureTest : public testing::Test {
|
|
|
| TEST_F(ExtensionSimpleFeatureTest, IsAvailableNullCase) {
|
| const IsAvailableTestData tests[] = {
|
| - { "", Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
|
| - Feature::IS_AVAILABLE },
|
| - { "random-extension", Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
|
| - Feature::IS_AVAILABLE },
|
| - { "", Manifest::TYPE_LEGACY_PACKAGED_APP,
|
| - Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
|
| - Feature::IS_AVAILABLE },
|
| - { "", Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
|
| - Feature::IS_AVAILABLE },
|
| - { "", Manifest::TYPE_UNKNOWN,
|
| - Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
|
| - Feature::IS_AVAILABLE },
|
| - { "", Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1,
|
| - Feature::IS_AVAILABLE },
|
| - { "", Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, 25,
|
| - Feature::IS_AVAILABLE }
|
| - };
|
| + {"", Manifest::TYPE_UNKNOWN, Manifest::INVALID_LOCATION,
|
| + Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE},
|
| + {"random-extension", Manifest::TYPE_UNKNOWN, Manifest::INVALID_LOCATION,
|
| + Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE},
|
| + {"", Manifest::TYPE_LEGACY_PACKAGED_APP, Manifest::INVALID_LOCATION,
|
| + Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE},
|
| + {"", Manifest::TYPE_UNKNOWN, Manifest::INVALID_LOCATION,
|
| + Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE},
|
| + {"", Manifest::TYPE_UNKNOWN, Manifest::COMPONENT,
|
| + Feature::UNSPECIFIED_PLATFORM, -1, Feature::IS_AVAILABLE},
|
| + {"", Manifest::TYPE_UNKNOWN, Manifest::INVALID_LOCATION,
|
| + Feature::CHROMEOS_PLATFORM, -1, Feature::IS_AVAILABLE},
|
| + {"", Manifest::TYPE_UNKNOWN, Manifest::INVALID_LOCATION,
|
| + Feature::UNSPECIFIED_PLATFORM, 25, Feature::IS_AVAILABLE}};
|
|
|
| SimpleFeature feature;
|
| for (size_t i = 0; i < arraysize(tests); ++i) {
|
| @@ -84,29 +80,44 @@ TEST_F(ExtensionSimpleFeatureTest, Whitelist) {
|
| feature.whitelist()->insert(kIdFoo);
|
| feature.whitelist()->insert(kIdBar);
|
|
|
| - EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
|
| - kIdFoo, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
|
| - Feature::UNSPECIFIED_PLATFORM).result());
|
| - EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
|
| - kIdBar, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
|
| - Feature::UNSPECIFIED_PLATFORM).result());
|
| + EXPECT_EQ(
|
| + Feature::IS_AVAILABLE,
|
| + feature.IsAvailableToManifest(kIdFoo,
|
| + Manifest::TYPE_UNKNOWN,
|
| + Manifest::INVALID_LOCATION,
|
| + -1,
|
| + Feature::UNSPECIFIED_PLATFORM).result());
|
| + EXPECT_EQ(
|
| + Feature::IS_AVAILABLE,
|
| + feature.IsAvailableToManifest(kIdBar,
|
| + Manifest::TYPE_UNKNOWN,
|
| + Manifest::INVALID_LOCATION,
|
| + -1,
|
| + Feature::UNSPECIFIED_PLATFORM).result());
|
|
|
| - EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
|
| - kIdBaz, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
|
| - Feature::UNSPECIFIED_PLATFORM).result());
|
| + EXPECT_EQ(
|
| + Feature::NOT_FOUND_IN_WHITELIST,
|
| + feature.IsAvailableToManifest(kIdBaz,
|
| + Manifest::TYPE_UNKNOWN,
|
| + Manifest::INVALID_LOCATION,
|
| + -1,
|
| + Feature::UNSPECIFIED_PLATFORM).result());
|
| EXPECT_EQ(
|
| Feature::NOT_FOUND_IN_WHITELIST,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| -1,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
|
|
| feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP);
|
| - EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
|
| - kIdBaz, Manifest::TYPE_LEGACY_PACKAGED_APP,
|
| - Feature::UNSPECIFIED_LOCATION, -1,
|
| - Feature::UNSPECIFIED_PLATFORM).result());
|
| + EXPECT_EQ(
|
| + Feature::NOT_FOUND_IN_WHITELIST,
|
| + feature.IsAvailableToManifest(kIdBaz,
|
| + Manifest::TYPE_LEGACY_PACKAGED_APP,
|
| + Manifest::INVALID_LOCATION,
|
| + -1,
|
| + Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
|
|
| TEST_F(ExtensionSimpleFeatureTest, HashedIdWhitelist) {
|
| @@ -118,21 +129,34 @@ TEST_F(ExtensionSimpleFeatureTest, HashedIdWhitelist) {
|
|
|
| feature.whitelist()->insert(kIdFooHashed);
|
|
|
| - EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
|
| - kIdFoo, Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
|
| - Feature::UNSPECIFIED_PLATFORM).result());
|
| - EXPECT_NE(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
|
| - kIdFooHashed, Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION, -1,
|
| - Feature::UNSPECIFIED_PLATFORM).result());
|
| - EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
|
| - "slightlytoooolongforanextensionid", Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION, -1,
|
| - Feature::UNSPECIFIED_PLATFORM).result());
|
| - EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
|
| - "tooshortforanextensionid", Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION, -1,
|
| - Feature::UNSPECIFIED_PLATFORM).result());
|
| + EXPECT_EQ(
|
| + Feature::IS_AVAILABLE,
|
| + feature.IsAvailableToManifest(kIdFoo,
|
| + Manifest::TYPE_UNKNOWN,
|
| + Manifest::INVALID_LOCATION,
|
| + -1,
|
| + Feature::UNSPECIFIED_PLATFORM).result());
|
| + EXPECT_NE(
|
| + Feature::IS_AVAILABLE,
|
| + feature.IsAvailableToManifest(kIdFooHashed,
|
| + Manifest::TYPE_UNKNOWN,
|
| + Manifest::INVALID_LOCATION,
|
| + -1,
|
| + Feature::UNSPECIFIED_PLATFORM).result());
|
| + EXPECT_EQ(
|
| + Feature::NOT_FOUND_IN_WHITELIST,
|
| + feature.IsAvailableToManifest("slightlytoooolongforanextensionid",
|
| + Manifest::TYPE_UNKNOWN,
|
| + Manifest::INVALID_LOCATION,
|
| + -1,
|
| + Feature::UNSPECIFIED_PLATFORM).result());
|
| + EXPECT_EQ(
|
| + Feature::NOT_FOUND_IN_WHITELIST,
|
| + feature.IsAvailableToManifest("tooshortforanextensionid",
|
| + Manifest::TYPE_UNKNOWN,
|
| + Manifest::INVALID_LOCATION,
|
| + -1,
|
| + Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
|
|
| TEST_F(ExtensionSimpleFeatureTest, PackageType) {
|
| @@ -144,14 +168,14 @@ TEST_F(ExtensionSimpleFeatureTest, PackageType) {
|
| Feature::IS_AVAILABLE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_EXTENSION,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| -1,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| EXPECT_EQ(
|
| Feature::IS_AVAILABLE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_LEGACY_PACKAGED_APP,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| -1,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
|
|
| @@ -159,14 +183,14 @@ TEST_F(ExtensionSimpleFeatureTest, PackageType) {
|
| Feature::INVALID_TYPE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| -1,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| EXPECT_EQ(
|
| Feature::INVALID_TYPE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_THEME,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| -1,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
| @@ -239,11 +263,11 @@ TEST_F(ExtensionSimpleFeatureTest, Context) {
|
|
|
| feature.GetContexts()->clear();
|
| feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
|
| - feature.set_location(Feature::COMPONENT_LOCATION);
|
| + feature.set_location(SimpleFeature::COMPONENT_LOCATION);
|
| EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext(
|
| extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
|
| Feature::CHROMEOS_PLATFORM).result());
|
| - feature.set_location(Feature::UNSPECIFIED_LOCATION);
|
| + feature.set_location(SimpleFeature::UNSPECIFIED_LOCATION);
|
|
|
| EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext(
|
| extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
|
| @@ -267,29 +291,29 @@ TEST_F(ExtensionSimpleFeatureTest, Location) {
|
|
|
| // If the feature specifies "component" as its location, then only component
|
| // extensions can access it.
|
| - feature.set_location(Feature::COMPONENT_LOCATION);
|
| + feature.set_location(SimpleFeature::COMPONENT_LOCATION);
|
| EXPECT_EQ(
|
| Feature::IS_AVAILABLE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::COMPONENT_LOCATION,
|
| + Manifest::COMPONENT,
|
| -1,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| EXPECT_EQ(
|
| Feature::INVALID_LOCATION,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| -1,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
|
|
| // But component extensions can access anything else, whatever their location.
|
| - feature.set_location(Feature::UNSPECIFIED_LOCATION);
|
| + feature.set_location(SimpleFeature::UNSPECIFIED_LOCATION);
|
| EXPECT_EQ(
|
| Feature::IS_AVAILABLE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::COMPONENT_LOCATION,
|
| + Manifest::COMPONENT,
|
| -1,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
| @@ -300,14 +324,14 @@ TEST_F(ExtensionSimpleFeatureTest, Platform) {
|
| EXPECT_EQ(Feature::IS_AVAILABLE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| -1,
|
| Feature::CHROMEOS_PLATFORM).result());
|
| EXPECT_EQ(
|
| Feature::INVALID_PLATFORM,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| -1,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
| @@ -320,14 +344,14 @@ TEST_F(ExtensionSimpleFeatureTest, Version) {
|
| Feature::INVALID_MIN_MANIFEST_VERSION,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| 0,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| EXPECT_EQ(
|
| Feature::INVALID_MIN_MANIFEST_VERSION,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| 4,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
|
|
| @@ -335,14 +359,14 @@ TEST_F(ExtensionSimpleFeatureTest, Version) {
|
| Feature::IS_AVAILABLE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| 5,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| EXPECT_EQ(
|
| Feature::IS_AVAILABLE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| 10,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
|
|
| @@ -352,21 +376,21 @@ TEST_F(ExtensionSimpleFeatureTest, Version) {
|
| Feature::INVALID_MAX_MANIFEST_VERSION,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| 10,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| EXPECT_EQ(
|
| Feature::IS_AVAILABLE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| 8,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| EXPECT_EQ(
|
| Feature::IS_AVAILABLE,
|
| feature.IsAvailableToManifest(std::string(),
|
| Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| + Manifest::INVALID_LOCATION,
|
| 7,
|
| Feature::UNSPECIFIED_PLATFORM).result());
|
| }
|
| @@ -378,7 +402,7 @@ TEST_F(ExtensionSimpleFeatureTest, ParseNull) {
|
| EXPECT_TRUE(feature->whitelist()->empty());
|
| EXPECT_TRUE(feature->extension_types()->empty());
|
| EXPECT_TRUE(feature->GetContexts()->empty());
|
| - EXPECT_EQ(Feature::UNSPECIFIED_LOCATION, feature->location());
|
| + EXPECT_EQ(SimpleFeature::UNSPECIFIED_LOCATION, feature->location());
|
| EXPECT_TRUE(feature->platforms()->empty());
|
| EXPECT_EQ(0, feature->min_manifest_version());
|
| EXPECT_EQ(0, feature->max_manifest_version());
|
| @@ -458,7 +482,7 @@ TEST_F(ExtensionSimpleFeatureTest, ParseLocation) {
|
| value->SetString("location", "component");
|
| scoped_ptr<SimpleFeature> feature(new SimpleFeature());
|
| feature->Parse(value.get());
|
| - EXPECT_EQ(Feature::COMPONENT_LOCATION, feature->location());
|
| + EXPECT_EQ(SimpleFeature::COMPONENT_LOCATION, feature->location());
|
| }
|
|
|
| TEST_F(ExtensionSimpleFeatureTest, ParsePlatforms) {
|
| @@ -507,7 +531,7 @@ TEST_F(ExtensionSimpleFeatureTest, Inheritance) {
|
| feature.whitelist()->insert("foo");
|
| feature.extension_types()->insert(Manifest::TYPE_THEME);
|
| feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
|
| - feature.set_location(Feature::COMPONENT_LOCATION);
|
| + feature.set_location(SimpleFeature::COMPONENT_LOCATION);
|
| feature.platforms()->insert(Feature::CHROMEOS_PLATFORM);
|
| feature.set_min_manifest_version(1);
|
| feature.set_max_manifest_version(2);
|
| @@ -520,7 +544,7 @@ TEST_F(ExtensionSimpleFeatureTest, Inheritance) {
|
| EXPECT_EQ(1u, feature.extension_types()->size());
|
| EXPECT_EQ(1u, feature.GetContexts()->size());
|
| EXPECT_EQ(1u, feature.whitelist()->count("foo"));
|
| - EXPECT_EQ(Feature::COMPONENT_LOCATION, feature.location());
|
| + EXPECT_EQ(SimpleFeature::COMPONENT_LOCATION, feature.location());
|
| EXPECT_EQ(1u, feature.platforms()->size());
|
| EXPECT_EQ(1u, feature.platforms()->count(Feature::CHROMEOS_PLATFORM));
|
| EXPECT_EQ(1, feature.min_manifest_version());
|
| @@ -564,12 +588,11 @@ Feature::AvailabilityResult IsAvailableInChannel(
|
| feature.Parse(&feature_value);
|
| }
|
|
|
| - return feature.IsAvailableToManifest(
|
| - "random-extension",
|
| - Manifest::TYPE_UNKNOWN,
|
| - Feature::UNSPECIFIED_LOCATION,
|
| - -1,
|
| - Feature::GetCurrentPlatform()).result();
|
| + return feature.IsAvailableToManifest("random-extension",
|
| + Manifest::TYPE_UNKNOWN,
|
| + Manifest::INVALID_LOCATION,
|
| + -1,
|
| + Feature::GetCurrentPlatform()).result();
|
| }
|
|
|
| TEST_F(ExtensionSimpleFeatureTest, SupportedChannel) {
|
| @@ -634,4 +657,4 @@ TEST_F(ExtensionSimpleFeatureTest, SupportedChannel) {
|
| IsAvailableInChannel("trunk", VersionInfo::CHANNEL_STABLE));
|
| }
|
|
|
| -} // namespace
|
| +} // namespace extensions
|
|
|