| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/common/extensions/features/feature.h" | 5 #include "chrome/common/extensions/features/feature.h" |
| 6 | 6 |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 | 8 |
| 9 using chrome::VersionInfo; | 9 using chrome::VersionInfo; |
| 10 using extensions::Extension; | 10 using extensions::Extension; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 }; | 32 }; |
| 33 | 33 |
| 34 TEST_F(ExtensionFeatureTest, IsAvailableNullCase) { | 34 TEST_F(ExtensionFeatureTest, IsAvailableNullCase) { |
| 35 const IsAvailableTestData tests[] = { | 35 const IsAvailableTestData tests[] = { |
| 36 { "", Extension::TYPE_UNKNOWN, | 36 { "", Extension::TYPE_UNKNOWN, |
| 37 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 37 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
| 38 Feature::IS_AVAILABLE }, | 38 Feature::IS_AVAILABLE }, |
| 39 { "random-extension", Extension::TYPE_UNKNOWN, | 39 { "random-extension", Extension::TYPE_UNKNOWN, |
| 40 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 40 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
| 41 Feature::IS_AVAILABLE }, | 41 Feature::IS_AVAILABLE }, |
| 42 { "", Extension::TYPE_PACKAGED_APP, | 42 { "", Extension::TYPE_LEGACY_PACKAGED_APP, |
| 43 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 43 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
| 44 Feature::IS_AVAILABLE }, | 44 Feature::IS_AVAILABLE }, |
| 45 { "", Extension::TYPE_UNKNOWN, | 45 { "", Extension::TYPE_UNKNOWN, |
| 46 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 46 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
| 47 Feature::IS_AVAILABLE }, | 47 Feature::IS_AVAILABLE }, |
| 48 { "", Extension::TYPE_UNKNOWN, | 48 { "", Extension::TYPE_UNKNOWN, |
| 49 Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 49 Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
| 50 Feature::IS_AVAILABLE }, | 50 Feature::IS_AVAILABLE }, |
| 51 { "", Extension::TYPE_UNKNOWN, | 51 { "", Extension::TYPE_UNKNOWN, |
| 52 Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1, | 52 Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 80 "bar", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 80 "bar", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
| 81 Feature::UNSPECIFIED_PLATFORM).result()); | 81 Feature::UNSPECIFIED_PLATFORM).result()); |
| 82 | 82 |
| 83 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 83 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( |
| 84 "baz", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 84 "baz", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
| 85 Feature::UNSPECIFIED_PLATFORM).result()); | 85 Feature::UNSPECIFIED_PLATFORM).result()); |
| 86 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 86 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( |
| 87 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 87 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
| 88 Feature::UNSPECIFIED_PLATFORM).result()); | 88 Feature::UNSPECIFIED_PLATFORM).result()); |
| 89 | 89 |
| 90 feature.extension_types()->insert(Extension::TYPE_PACKAGED_APP); | 90 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); |
| 91 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 91 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( |
| 92 "baz", Extension::TYPE_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, -1, | 92 "baz", Extension::TYPE_LEGACY_PACKAGED_APP, |
| 93 Feature::UNSPECIFIED_LOCATION, -1, |
| 93 Feature::UNSPECIFIED_PLATFORM).result()); | 94 Feature::UNSPECIFIED_PLATFORM).result()); |
| 94 } | 95 } |
| 95 | 96 |
| 96 TEST_F(ExtensionFeatureTest, PackageType) { | 97 TEST_F(ExtensionFeatureTest, PackageType) { |
| 97 Feature feature; | 98 Feature feature; |
| 98 feature.extension_types()->insert(Extension::TYPE_EXTENSION); | 99 feature.extension_types()->insert(Extension::TYPE_EXTENSION); |
| 99 feature.extension_types()->insert(Extension::TYPE_PACKAGED_APP); | 100 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); |
| 100 | 101 |
| 101 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 102 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
| 102 "", Extension::TYPE_EXTENSION, Feature::UNSPECIFIED_LOCATION, -1, | 103 "", Extension::TYPE_EXTENSION, Feature::UNSPECIFIED_LOCATION, -1, |
| 103 Feature::UNSPECIFIED_PLATFORM).result()); | 104 Feature::UNSPECIFIED_PLATFORM).result()); |
| 104 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 105 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
| 105 "", Extension::TYPE_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, -1, | 106 "", Extension::TYPE_LEGACY_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, |
| 106 Feature::UNSPECIFIED_PLATFORM).result()); | 107 -1, Feature::UNSPECIFIED_PLATFORM).result()); |
| 107 | 108 |
| 108 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( | 109 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( |
| 109 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 110 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
| 110 Feature::UNSPECIFIED_PLATFORM).result()); | 111 Feature::UNSPECIFIED_PLATFORM).result()); |
| 111 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( | 112 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( |
| 112 "", Extension::TYPE_THEME, Feature::UNSPECIFIED_LOCATION, -1, | 113 "", Extension::TYPE_THEME, Feature::UNSPECIFIED_LOCATION, -1, |
| 113 Feature::UNSPECIFIED_PLATFORM).result()); | 114 Feature::UNSPECIFIED_PLATFORM).result()); |
| 114 } | 115 } |
| 115 | 116 |
| 116 TEST_F(ExtensionFeatureTest, Context) { | 117 TEST_F(ExtensionFeatureTest, Context) { |
| 117 Feature feature; | 118 Feature feature; |
| 118 feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); | 119 feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); |
| 119 feature.extension_types()->insert(Extension::TYPE_PACKAGED_APP); | 120 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); |
| 120 feature.set_platform(Feature::CHROMEOS_PLATFORM); | 121 feature.set_platform(Feature::CHROMEOS_PLATFORM); |
| 121 feature.set_min_manifest_version(21); | 122 feature.set_min_manifest_version(21); |
| 122 feature.set_max_manifest_version(25); | 123 feature.set_max_manifest_version(25); |
| 123 | 124 |
| 124 DictionaryValue manifest; | 125 DictionaryValue manifest; |
| 125 manifest.SetString("name", "test"); | 126 manifest.SetString("name", "test"); |
| 126 manifest.SetString("version", "1"); | 127 manifest.SetString("version", "1"); |
| 127 manifest.SetInteger("manifest_version", 21); | 128 manifest.SetInteger("manifest_version", 21); |
| 128 manifest.SetString("app.launch.local_path", "foo.html"); | 129 manifest.SetString("app.launch.local_path", "foo.html"); |
| 129 | 130 |
| 130 std::string error; | 131 std::string error; |
| 131 scoped_refptr<const Extension> extension(Extension::Create( | 132 scoped_refptr<const Extension> extension(Extension::Create( |
| 132 FilePath(), Extension::INTERNAL, manifest, Extension::NO_FLAGS, &error)); | 133 FilePath(), Extension::INTERNAL, manifest, Extension::NO_FLAGS, &error)); |
| 133 EXPECT_EQ("", error); | 134 EXPECT_EQ("", error); |
| 134 ASSERT_TRUE(extension.get()); | 135 ASSERT_TRUE(extension.get()); |
| 135 | 136 |
| 136 feature.whitelist()->insert("monkey"); | 137 feature.whitelist()->insert("monkey"); |
| 137 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToContext( | 138 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToContext( |
| 138 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 139 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
| 139 Feature::CHROMEOS_PLATFORM).result()); | 140 Feature::CHROMEOS_PLATFORM).result()); |
| 140 feature.whitelist()->clear(); | 141 feature.whitelist()->clear(); |
| 141 | 142 |
| 142 feature.extension_types()->clear(); | 143 feature.extension_types()->clear(); |
| 143 feature.extension_types()->insert(Extension::TYPE_THEME); | 144 feature.extension_types()->insert(Extension::TYPE_THEME); |
| 144 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToContext( | 145 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToContext( |
| 145 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 146 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
| 146 Feature::CHROMEOS_PLATFORM).result()); | 147 Feature::CHROMEOS_PLATFORM).result()); |
| 147 feature.extension_types()->clear(); | 148 feature.extension_types()->clear(); |
| 148 feature.extension_types()->insert(Extension::TYPE_PACKAGED_APP); | 149 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); |
| 149 | 150 |
| 150 feature.contexts()->clear(); | 151 feature.contexts()->clear(); |
| 151 feature.contexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT); | 152 feature.contexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT); |
| 152 EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailableToContext( | 153 EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailableToContext( |
| 153 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 154 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
| 154 Feature::CHROMEOS_PLATFORM).result()); | 155 Feature::CHROMEOS_PLATFORM).result()); |
| 155 feature.contexts()->clear(); | 156 feature.contexts()->clear(); |
| 156 feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); | 157 feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); |
| 157 | 158 |
| 158 feature.set_location(Feature::COMPONENT_LOCATION); | 159 feature.set_location(Feature::COMPONENT_LOCATION); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 extension_types->Append(Value::CreateStringValue("theme")); | 278 extension_types->Append(Value::CreateStringValue("theme")); |
| 278 extension_types->Append(Value::CreateStringValue("packaged_app")); | 279 extension_types->Append(Value::CreateStringValue("packaged_app")); |
| 279 extension_types->Append(Value::CreateStringValue("hosted_app")); | 280 extension_types->Append(Value::CreateStringValue("hosted_app")); |
| 280 extension_types->Append(Value::CreateStringValue("platform_app")); | 281 extension_types->Append(Value::CreateStringValue("platform_app")); |
| 281 value->Set("extension_types", extension_types); | 282 value->Set("extension_types", extension_types); |
| 282 scoped_ptr<Feature> feature(new Feature()); | 283 scoped_ptr<Feature> feature(new Feature()); |
| 283 feature->Parse(value.get()); | 284 feature->Parse(value.get()); |
| 284 EXPECT_EQ(5u, feature->extension_types()->size()); | 285 EXPECT_EQ(5u, feature->extension_types()->size()); |
| 285 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_EXTENSION)); | 286 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_EXTENSION)); |
| 286 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_THEME)); | 287 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_THEME)); |
| 287 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_PACKAGED_APP)); | 288 EXPECT_TRUE(feature->extension_types()->count( |
| 289 Extension::TYPE_LEGACY_PACKAGED_APP)); |
| 288 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_HOSTED_APP)); | 290 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_HOSTED_APP)); |
| 289 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_PLATFORM_APP)); | 291 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_PLATFORM_APP)); |
| 290 | 292 |
| 291 value->SetString("extension_types", "all"); | 293 value->SetString("extension_types", "all"); |
| 292 scoped_ptr<Feature> feature2(new Feature()); | 294 scoped_ptr<Feature> feature2(new Feature()); |
| 293 feature2->Parse(value.get()); | 295 feature2->Parse(value.get()); |
| 294 EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types())); | 296 EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types())); |
| 295 } | 297 } |
| 296 | 298 |
| 297 TEST_F(ExtensionFeatureTest, ParseContexts) { | 299 TEST_F(ExtensionFeatureTest, ParseContexts) { |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 IsAvailableInChannel("", VersionInfo::CHANNEL_CANARY)); | 514 IsAvailableInChannel("", VersionInfo::CHANNEL_CANARY)); |
| 513 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 515 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, |
| 514 IsAvailableInChannel("", VersionInfo::CHANNEL_DEV)); | 516 IsAvailableInChannel("", VersionInfo::CHANNEL_DEV)); |
| 515 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 517 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, |
| 516 IsAvailableInChannel("", VersionInfo::CHANNEL_BETA)); | 518 IsAvailableInChannel("", VersionInfo::CHANNEL_BETA)); |
| 517 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 519 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, |
| 518 IsAvailableInChannel("", VersionInfo::CHANNEL_STABLE)); | 520 IsAvailableInChannel("", VersionInfo::CHANNEL_STABLE)); |
| 519 } | 521 } |
| 520 | 522 |
| 521 } // namespace | 523 } // namespace |
| OLD | NEW |