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 |