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/simple_feature.h" |
6 | 6 |
| 7 #include "chrome/common/extensions/value_builder.h" |
7 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
8 | 9 |
9 using chrome::VersionInfo; | 10 using chrome::VersionInfo; |
| 11 using extensions::DictionaryBuilder; |
10 using extensions::Extension; | 12 using extensions::Extension; |
11 using extensions::Feature; | 13 using extensions::Feature; |
| 14 using extensions::ListBuilder; |
| 15 using extensions::SimpleFeature; |
12 | 16 |
13 namespace { | 17 namespace { |
14 | 18 |
15 struct IsAvailableTestData { | 19 struct IsAvailableTestData { |
16 std::string extension_id; | 20 std::string extension_id; |
17 Extension::Type extension_type; | 21 Extension::Type extension_type; |
18 Feature::Location location; | 22 Feature::Location location; |
19 Feature::Platform platform; | 23 Feature::Platform platform; |
20 int manifest_version; | 24 int manifest_version; |
21 Feature::AvailabilityResult expected_result; | 25 Feature::AvailabilityResult expected_result; |
22 }; | 26 }; |
23 | 27 |
24 class ExtensionFeatureTest : public testing::Test { | 28 class ExtensionSimpleFeatureTest : public testing::Test { |
25 protected: | 29 protected: |
26 ExtensionFeatureTest() | 30 ExtensionSimpleFeatureTest() |
27 : current_channel_(VersionInfo::CHANNEL_UNKNOWN) {} | 31 : current_channel_(VersionInfo::CHANNEL_UNKNOWN) {} |
28 virtual ~ExtensionFeatureTest() {} | 32 virtual ~ExtensionSimpleFeatureTest() {} |
29 | 33 |
30 private: | 34 private: |
31 Feature::ScopedCurrentChannel current_channel_; | 35 Feature::ScopedCurrentChannel current_channel_; |
32 }; | 36 }; |
33 | 37 |
34 TEST_F(ExtensionFeatureTest, IsAvailableNullCase) { | 38 TEST_F(ExtensionSimpleFeatureTest, IsAvailableNullCase) { |
35 const IsAvailableTestData tests[] = { | 39 const IsAvailableTestData tests[] = { |
36 { "", Extension::TYPE_UNKNOWN, | 40 { "", Extension::TYPE_UNKNOWN, |
37 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 41 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
38 Feature::IS_AVAILABLE }, | 42 Feature::IS_AVAILABLE }, |
39 { "random-extension", Extension::TYPE_UNKNOWN, | 43 { "random-extension", Extension::TYPE_UNKNOWN, |
40 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 44 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
41 Feature::IS_AVAILABLE }, | 45 Feature::IS_AVAILABLE }, |
42 { "", Extension::TYPE_LEGACY_PACKAGED_APP, | 46 { "", Extension::TYPE_LEGACY_PACKAGED_APP, |
43 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 47 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
44 Feature::IS_AVAILABLE }, | 48 Feature::IS_AVAILABLE }, |
45 { "", Extension::TYPE_UNKNOWN, | 49 { "", Extension::TYPE_UNKNOWN, |
46 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 50 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
47 Feature::IS_AVAILABLE }, | 51 Feature::IS_AVAILABLE }, |
48 { "", Extension::TYPE_UNKNOWN, | 52 { "", Extension::TYPE_UNKNOWN, |
49 Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, | 53 Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, |
50 Feature::IS_AVAILABLE }, | 54 Feature::IS_AVAILABLE }, |
51 { "", Extension::TYPE_UNKNOWN, | 55 { "", Extension::TYPE_UNKNOWN, |
52 Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1, | 56 Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1, |
53 Feature::IS_AVAILABLE }, | 57 Feature::IS_AVAILABLE }, |
54 { "", Extension::TYPE_UNKNOWN, | 58 { "", Extension::TYPE_UNKNOWN, |
55 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, 25, | 59 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, 25, |
56 Feature::IS_AVAILABLE } | 60 Feature::IS_AVAILABLE } |
57 }; | 61 }; |
58 | 62 |
59 Feature feature; | 63 SimpleFeature feature; |
60 for (size_t i = 0; i < arraysize(tests); ++i) { | 64 for (size_t i = 0; i < arraysize(tests); ++i) { |
61 const IsAvailableTestData& test = tests[i]; | 65 const IsAvailableTestData& test = tests[i]; |
62 EXPECT_EQ(test.expected_result, | 66 EXPECT_EQ(test.expected_result, |
63 feature.IsAvailableToManifest(test.extension_id, | 67 feature.IsAvailableToManifest(test.extension_id, |
64 test.extension_type, | 68 test.extension_type, |
65 test.location, | 69 test.location, |
66 test.manifest_version, | 70 test.manifest_version, |
67 test.platform).result()); | 71 test.platform).result()); |
68 } | 72 } |
69 } | 73 } |
70 | 74 |
71 TEST_F(ExtensionFeatureTest, Whitelist) { | 75 TEST_F(ExtensionSimpleFeatureTest, Whitelist) { |
72 Feature feature; | 76 SimpleFeature feature; |
73 feature.whitelist()->insert("foo"); | 77 feature.whitelist()->insert("foo"); |
74 feature.whitelist()->insert("bar"); | 78 feature.whitelist()->insert("bar"); |
75 | 79 |
76 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 80 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
77 "foo", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 81 "foo", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
78 Feature::UNSPECIFIED_PLATFORM).result()); | 82 Feature::UNSPECIFIED_PLATFORM).result()); |
79 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 83 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
80 "bar", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 84 "bar", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
81 Feature::UNSPECIFIED_PLATFORM).result()); | 85 Feature::UNSPECIFIED_PLATFORM).result()); |
82 | 86 |
83 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 87 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( |
84 "baz", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 88 "baz", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
85 Feature::UNSPECIFIED_PLATFORM).result()); | 89 Feature::UNSPECIFIED_PLATFORM).result()); |
86 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 90 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( |
87 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 91 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
88 Feature::UNSPECIFIED_PLATFORM).result()); | 92 Feature::UNSPECIFIED_PLATFORM).result()); |
89 | 93 |
90 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); | 94 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); |
91 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( | 95 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( |
92 "baz", Extension::TYPE_LEGACY_PACKAGED_APP, | 96 "baz", Extension::TYPE_LEGACY_PACKAGED_APP, |
93 Feature::UNSPECIFIED_LOCATION, -1, | 97 Feature::UNSPECIFIED_LOCATION, -1, |
94 Feature::UNSPECIFIED_PLATFORM).result()); | 98 Feature::UNSPECIFIED_PLATFORM).result()); |
95 } | 99 } |
96 | 100 |
97 TEST_F(ExtensionFeatureTest, PackageType) { | 101 TEST_F(ExtensionSimpleFeatureTest, PackageType) { |
98 Feature feature; | 102 SimpleFeature feature; |
99 feature.extension_types()->insert(Extension::TYPE_EXTENSION); | 103 feature.extension_types()->insert(Extension::TYPE_EXTENSION); |
100 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); | 104 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); |
101 | 105 |
102 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 106 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
103 "", Extension::TYPE_EXTENSION, Feature::UNSPECIFIED_LOCATION, -1, | 107 "", Extension::TYPE_EXTENSION, Feature::UNSPECIFIED_LOCATION, -1, |
104 Feature::UNSPECIFIED_PLATFORM).result()); | 108 Feature::UNSPECIFIED_PLATFORM).result()); |
105 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 109 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
106 "", Extension::TYPE_LEGACY_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, | 110 "", Extension::TYPE_LEGACY_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, |
107 -1, Feature::UNSPECIFIED_PLATFORM).result()); | 111 -1, Feature::UNSPECIFIED_PLATFORM).result()); |
108 | 112 |
109 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( | 113 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( |
110 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 114 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
111 Feature::UNSPECIFIED_PLATFORM).result()); | 115 Feature::UNSPECIFIED_PLATFORM).result()); |
112 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( | 116 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( |
113 "", Extension::TYPE_THEME, Feature::UNSPECIFIED_LOCATION, -1, | 117 "", Extension::TYPE_THEME, Feature::UNSPECIFIED_LOCATION, -1, |
114 Feature::UNSPECIFIED_PLATFORM).result()); | 118 Feature::UNSPECIFIED_PLATFORM).result()); |
115 } | 119 } |
116 | 120 |
117 TEST_F(ExtensionFeatureTest, Context) { | 121 TEST_F(ExtensionSimpleFeatureTest, Context) { |
118 Feature feature; | 122 SimpleFeature feature; |
119 feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); | 123 feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); |
120 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); | 124 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); |
121 feature.set_platform(Feature::CHROMEOS_PLATFORM); | 125 feature.set_platform(Feature::CHROMEOS_PLATFORM); |
122 feature.set_min_manifest_version(21); | 126 feature.set_min_manifest_version(21); |
123 feature.set_max_manifest_version(25); | 127 feature.set_max_manifest_version(25); |
124 | 128 |
125 DictionaryValue manifest; | 129 DictionaryValue manifest; |
126 manifest.SetString("name", "test"); | 130 manifest.SetString("name", "test"); |
127 manifest.SetString("version", "1"); | 131 manifest.SetString("version", "1"); |
128 manifest.SetInteger("manifest_version", 21); | 132 manifest.SetInteger("manifest_version", 21); |
129 manifest.SetString("app.launch.local_path", "foo.html"); | 133 manifest.SetString("app.launch.local_path", "foo.html"); |
(...skipping 11 matching lines...) Expand all Loading... |
141 feature.whitelist()->clear(); | 145 feature.whitelist()->clear(); |
142 | 146 |
143 feature.extension_types()->clear(); | 147 feature.extension_types()->clear(); |
144 feature.extension_types()->insert(Extension::TYPE_THEME); | 148 feature.extension_types()->insert(Extension::TYPE_THEME); |
145 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToContext( | 149 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToContext( |
146 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 150 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
147 Feature::CHROMEOS_PLATFORM).result()); | 151 Feature::CHROMEOS_PLATFORM).result()); |
148 feature.extension_types()->clear(); | 152 feature.extension_types()->clear(); |
149 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); | 153 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); |
150 | 154 |
151 feature.contexts()->clear(); | 155 feature.GetContexts()->clear(); |
152 feature.contexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT); | 156 feature.GetContexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT); |
153 EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailableToContext( | 157 EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailableToContext( |
154 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 158 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
155 Feature::CHROMEOS_PLATFORM).result()); | 159 Feature::CHROMEOS_PLATFORM).result()); |
156 feature.contexts()->clear(); | 160 feature.GetContexts()->clear(); |
157 feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); | 161 feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); |
158 | 162 |
159 feature.set_location(Feature::COMPONENT_LOCATION); | 163 feature.set_location(Feature::COMPONENT_LOCATION); |
160 EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext( | 164 EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToContext( |
161 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 165 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
162 Feature::CHROMEOS_PLATFORM).result()); | 166 Feature::CHROMEOS_PLATFORM).result()); |
163 feature.set_location(Feature::UNSPECIFIED_LOCATION); | 167 feature.set_location(Feature::UNSPECIFIED_LOCATION); |
164 | 168 |
165 EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext( | 169 EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToContext( |
166 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 170 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
167 Feature::UNSPECIFIED_PLATFORM).result()); | 171 Feature::UNSPECIFIED_PLATFORM).result()); |
168 | 172 |
169 feature.set_min_manifest_version(22); | 173 feature.set_min_manifest_version(22); |
170 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, feature.IsAvailableToContext( | 174 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, feature.IsAvailableToContext( |
171 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 175 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
172 Feature::CHROMEOS_PLATFORM).result()); | 176 Feature::CHROMEOS_PLATFORM).result()); |
173 feature.set_min_manifest_version(21); | 177 feature.set_min_manifest_version(21); |
174 | 178 |
175 feature.set_max_manifest_version(18); | 179 feature.set_max_manifest_version(18); |
176 EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, feature.IsAvailableToContext( | 180 EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, feature.IsAvailableToContext( |
177 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, | 181 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, |
178 Feature::CHROMEOS_PLATFORM).result()); | 182 Feature::CHROMEOS_PLATFORM).result()); |
179 feature.set_max_manifest_version(25); | 183 feature.set_max_manifest_version(25); |
180 } | 184 } |
181 | 185 |
182 TEST_F(ExtensionFeatureTest, Location) { | 186 TEST_F(ExtensionSimpleFeatureTest, Location) { |
183 Feature feature; | 187 SimpleFeature feature; |
184 | 188 |
185 // If the feature specifies "component" as its location, then only component | 189 // If the feature specifies "component" as its location, then only component |
186 // extensions can access it. | 190 // extensions can access it. |
187 feature.set_location(Feature::COMPONENT_LOCATION); | 191 feature.set_location(Feature::COMPONENT_LOCATION); |
188 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 192 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
189 "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1, | 193 "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1, |
190 Feature::UNSPECIFIED_PLATFORM).result()); | 194 Feature::UNSPECIFIED_PLATFORM).result()); |
191 EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToManifest( | 195 EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToManifest( |
192 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 196 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
193 Feature::UNSPECIFIED_PLATFORM).result()); | 197 Feature::UNSPECIFIED_PLATFORM).result()); |
194 | 198 |
195 // But component extensions can access anything else, whatever their location. | 199 // But component extensions can access anything else, whatever their location. |
196 feature.set_location(Feature::UNSPECIFIED_LOCATION); | 200 feature.set_location(Feature::UNSPECIFIED_LOCATION); |
197 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 201 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
198 "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1, | 202 "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1, |
199 Feature::UNSPECIFIED_PLATFORM).result()); | 203 Feature::UNSPECIFIED_PLATFORM).result()); |
200 } | 204 } |
201 | 205 |
202 TEST_F(ExtensionFeatureTest, Platform) { | 206 TEST_F(ExtensionSimpleFeatureTest, Platform) { |
203 Feature feature; | 207 SimpleFeature feature; |
204 feature.set_platform(Feature::CHROMEOS_PLATFORM); | 208 feature.set_platform(Feature::CHROMEOS_PLATFORM); |
205 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 209 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
206 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 210 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
207 Feature::CHROMEOS_PLATFORM).result()); | 211 Feature::CHROMEOS_PLATFORM).result()); |
208 EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToManifest( | 212 EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToManifest( |
209 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, | 213 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, |
210 Feature::UNSPECIFIED_PLATFORM).result()); | 214 Feature::UNSPECIFIED_PLATFORM).result()); |
211 } | 215 } |
212 | 216 |
213 TEST_F(ExtensionFeatureTest, Version) { | 217 TEST_F(ExtensionSimpleFeatureTest, Version) { |
214 Feature feature; | 218 SimpleFeature feature; |
215 feature.set_min_manifest_version(5); | 219 feature.set_min_manifest_version(5); |
216 | 220 |
217 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, | 221 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, |
218 feature.IsAvailableToManifest( | 222 feature.IsAvailableToManifest( |
219 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 223 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, |
220 0, Feature::UNSPECIFIED_PLATFORM).result()); | 224 0, Feature::UNSPECIFIED_PLATFORM).result()); |
221 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, | 225 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, |
222 feature.IsAvailableToManifest( | 226 feature.IsAvailableToManifest( |
223 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 227 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, |
224 4, Feature::UNSPECIFIED_PLATFORM).result()); | 228 4, Feature::UNSPECIFIED_PLATFORM).result()); |
(...skipping 13 matching lines...) Expand all Loading... |
238 10, Feature::UNSPECIFIED_PLATFORM).result()); | 242 10, Feature::UNSPECIFIED_PLATFORM).result()); |
239 EXPECT_EQ(Feature::IS_AVAILABLE, | 243 EXPECT_EQ(Feature::IS_AVAILABLE, |
240 feature.IsAvailableToManifest( | 244 feature.IsAvailableToManifest( |
241 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 245 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, |
242 8, Feature::UNSPECIFIED_PLATFORM).result()); | 246 8, Feature::UNSPECIFIED_PLATFORM).result()); |
243 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( | 247 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( |
244 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, | 248 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, |
245 7, Feature::UNSPECIFIED_PLATFORM).result()); | 249 7, Feature::UNSPECIFIED_PLATFORM).result()); |
246 } | 250 } |
247 | 251 |
248 TEST_F(ExtensionFeatureTest, ParseNull) { | 252 TEST_F(ExtensionSimpleFeatureTest, ParseNull) { |
249 scoped_ptr<DictionaryValue> value(new DictionaryValue()); | 253 scoped_ptr<DictionaryValue> value(new DictionaryValue()); |
250 scoped_ptr<Feature> feature(new Feature()); | 254 scoped_ptr<SimpleFeature> feature(new SimpleFeature()); |
251 feature->Parse(value.get()); | 255 feature->Parse(value.get()); |
252 EXPECT_TRUE(feature->whitelist()->empty()); | 256 EXPECT_TRUE(feature->whitelist()->empty()); |
253 EXPECT_TRUE(feature->extension_types()->empty()); | 257 EXPECT_TRUE(feature->extension_types()->empty()); |
254 EXPECT_TRUE(feature->contexts()->empty()); | 258 EXPECT_TRUE(feature->GetContexts()->empty()); |
255 EXPECT_EQ(Feature::UNSPECIFIED_LOCATION, feature->location()); | 259 EXPECT_EQ(Feature::UNSPECIFIED_LOCATION, feature->location()); |
256 EXPECT_EQ(Feature::UNSPECIFIED_PLATFORM, feature->platform()); | 260 EXPECT_EQ(Feature::UNSPECIFIED_PLATFORM, feature->platform()); |
257 EXPECT_EQ(0, feature->min_manifest_version()); | 261 EXPECT_EQ(0, feature->min_manifest_version()); |
258 EXPECT_EQ(0, feature->max_manifest_version()); | 262 EXPECT_EQ(0, feature->max_manifest_version()); |
259 } | 263 } |
260 | 264 |
261 TEST_F(ExtensionFeatureTest, ParseWhitelist) { | 265 TEST_F(ExtensionSimpleFeatureTest, ParseWhitelist) { |
262 scoped_ptr<DictionaryValue> value(new DictionaryValue()); | 266 scoped_ptr<DictionaryValue> value(new DictionaryValue()); |
263 ListValue* whitelist = new ListValue(); | 267 ListValue* whitelist = new ListValue(); |
264 whitelist->Append(Value::CreateStringValue("foo")); | 268 whitelist->Append(Value::CreateStringValue("foo")); |
265 whitelist->Append(Value::CreateStringValue("bar")); | 269 whitelist->Append(Value::CreateStringValue("bar")); |
266 value->Set("whitelist", whitelist); | 270 value->Set("whitelist", whitelist); |
267 scoped_ptr<Feature> feature(new Feature()); | 271 scoped_ptr<SimpleFeature> feature(new SimpleFeature()); |
268 feature->Parse(value.get()); | 272 feature->Parse(value.get()); |
269 EXPECT_EQ(2u, feature->whitelist()->size()); | 273 EXPECT_EQ(2u, feature->whitelist()->size()); |
270 EXPECT_TRUE(feature->whitelist()->count("foo")); | 274 EXPECT_TRUE(feature->whitelist()->count("foo")); |
271 EXPECT_TRUE(feature->whitelist()->count("bar")); | 275 EXPECT_TRUE(feature->whitelist()->count("bar")); |
272 } | 276 } |
273 | 277 |
274 TEST_F(ExtensionFeatureTest, ParsePackageTypes) { | 278 TEST_F(ExtensionSimpleFeatureTest, ParsePackageTypes) { |
275 scoped_ptr<DictionaryValue> value(new DictionaryValue()); | 279 scoped_ptr<DictionaryValue> value(new DictionaryValue()); |
276 ListValue* extension_types = new ListValue(); | 280 ListValue* extension_types = new ListValue(); |
277 extension_types->Append(Value::CreateStringValue("extension")); | 281 extension_types->Append(Value::CreateStringValue("extension")); |
278 extension_types->Append(Value::CreateStringValue("theme")); | 282 extension_types->Append(Value::CreateStringValue("theme")); |
279 extension_types->Append(Value::CreateStringValue("packaged_app")); | 283 extension_types->Append(Value::CreateStringValue("packaged_app")); |
280 extension_types->Append(Value::CreateStringValue("hosted_app")); | 284 extension_types->Append(Value::CreateStringValue("hosted_app")); |
281 extension_types->Append(Value::CreateStringValue("platform_app")); | 285 extension_types->Append(Value::CreateStringValue("platform_app")); |
282 value->Set("extension_types", extension_types); | 286 value->Set("extension_types", extension_types); |
283 scoped_ptr<Feature> feature(new Feature()); | 287 scoped_ptr<SimpleFeature> feature(new SimpleFeature()); |
284 feature->Parse(value.get()); | 288 feature->Parse(value.get()); |
285 EXPECT_EQ(5u, feature->extension_types()->size()); | 289 EXPECT_EQ(5u, feature->extension_types()->size()); |
286 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_EXTENSION)); | 290 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_EXTENSION)); |
287 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_THEME)); | 291 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_THEME)); |
288 EXPECT_TRUE(feature->extension_types()->count( | 292 EXPECT_TRUE(feature->extension_types()->count( |
289 Extension::TYPE_LEGACY_PACKAGED_APP)); | 293 Extension::TYPE_LEGACY_PACKAGED_APP)); |
290 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_HOSTED_APP)); | 294 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_HOSTED_APP)); |
291 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_PLATFORM_APP)); | 295 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_PLATFORM_APP)); |
292 | 296 |
293 value->SetString("extension_types", "all"); | 297 value->SetString("extension_types", "all"); |
294 scoped_ptr<Feature> feature2(new Feature()); | 298 scoped_ptr<SimpleFeature> feature2(new SimpleFeature()); |
295 feature2->Parse(value.get()); | 299 feature2->Parse(value.get()); |
296 EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types())); | 300 EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types())); |
297 } | 301 } |
298 | 302 |
299 TEST_F(ExtensionFeatureTest, ParseContexts) { | 303 TEST_F(ExtensionSimpleFeatureTest, ParseContexts) { |
300 scoped_ptr<DictionaryValue> value(new DictionaryValue()); | 304 scoped_ptr<DictionaryValue> value(new DictionaryValue()); |
301 ListValue* contexts = new ListValue(); | 305 ListValue* contexts = new ListValue(); |
302 contexts->Append(Value::CreateStringValue("blessed_extension")); | 306 contexts->Append(Value::CreateStringValue("blessed_extension")); |
303 contexts->Append(Value::CreateStringValue("unblessed_extension")); | 307 contexts->Append(Value::CreateStringValue("unblessed_extension")); |
304 contexts->Append(Value::CreateStringValue("content_script")); | 308 contexts->Append(Value::CreateStringValue("content_script")); |
305 contexts->Append(Value::CreateStringValue("web_page")); | 309 contexts->Append(Value::CreateStringValue("web_page")); |
306 value->Set("contexts", contexts); | 310 value->Set("contexts", contexts); |
307 scoped_ptr<Feature> feature(new Feature()); | 311 scoped_ptr<SimpleFeature> feature(new SimpleFeature()); |
308 feature->Parse(value.get()); | 312 feature->Parse(value.get()); |
309 EXPECT_EQ(4u, feature->contexts()->size()); | 313 EXPECT_EQ(4u, feature->GetContexts()->size()); |
310 EXPECT_TRUE(feature->contexts()->count(Feature::BLESSED_EXTENSION_CONTEXT)); | 314 EXPECT_TRUE( |
311 EXPECT_TRUE(feature->contexts()->count(Feature::UNBLESSED_EXTENSION_CONTEXT)); | 315 feature->GetContexts()->count(Feature::BLESSED_EXTENSION_CONTEXT)); |
312 EXPECT_TRUE(feature->contexts()->count(Feature::CONTENT_SCRIPT_CONTEXT)); | 316 EXPECT_TRUE( |
313 EXPECT_TRUE(feature->contexts()->count(Feature::WEB_PAGE_CONTEXT)); | 317 feature->GetContexts()->count(Feature::UNBLESSED_EXTENSION_CONTEXT)); |
| 318 EXPECT_TRUE( |
| 319 feature->GetContexts()->count(Feature::CONTENT_SCRIPT_CONTEXT)); |
| 320 EXPECT_TRUE( |
| 321 feature->GetContexts()->count(Feature::WEB_PAGE_CONTEXT)); |
314 | 322 |
315 value->SetString("contexts", "all"); | 323 value->SetString("contexts", "all"); |
316 scoped_ptr<Feature> feature2(new Feature()); | 324 scoped_ptr<SimpleFeature> feature2(new SimpleFeature()); |
317 feature2->Parse(value.get()); | 325 feature2->Parse(value.get()); |
318 EXPECT_EQ(*(feature->contexts()), *(feature2->contexts())); | 326 EXPECT_EQ(*(feature->GetContexts()), *(feature2->GetContexts())); |
319 } | 327 } |
320 | 328 |
321 TEST_F(ExtensionFeatureTest, ParseLocation) { | 329 TEST_F(ExtensionSimpleFeatureTest, ParseLocation) { |
322 scoped_ptr<DictionaryValue> value(new DictionaryValue()); | 330 scoped_ptr<DictionaryValue> value(new DictionaryValue()); |
323 value->SetString("location", "component"); | 331 value->SetString("location", "component"); |
324 scoped_ptr<Feature> feature(new Feature()); | 332 scoped_ptr<SimpleFeature> feature(new SimpleFeature()); |
325 feature->Parse(value.get()); | 333 feature->Parse(value.get()); |
326 EXPECT_EQ(Feature::COMPONENT_LOCATION, feature->location()); | 334 EXPECT_EQ(Feature::COMPONENT_LOCATION, feature->location()); |
327 } | 335 } |
328 | 336 |
329 TEST_F(ExtensionFeatureTest, ParsePlatform) { | 337 TEST_F(ExtensionSimpleFeatureTest, ParsePlatform) { |
330 scoped_ptr<DictionaryValue> value(new DictionaryValue()); | 338 scoped_ptr<DictionaryValue> value(new DictionaryValue()); |
331 value->SetString("platform", "chromeos"); | 339 value->SetString("platform", "chromeos"); |
332 scoped_ptr<Feature> feature(new Feature()); | 340 scoped_ptr<SimpleFeature> feature(new SimpleFeature()); |
333 feature->Parse(value.get()); | 341 feature->Parse(value.get()); |
334 EXPECT_EQ(Feature::CHROMEOS_PLATFORM, feature->platform()); | 342 EXPECT_EQ(Feature::CHROMEOS_PLATFORM, feature->platform()); |
335 } | 343 } |
336 | 344 |
337 TEST_F(ExtensionFeatureTest, ManifestVersion) { | 345 TEST_F(ExtensionSimpleFeatureTest, ManifestVersion) { |
338 scoped_ptr<DictionaryValue> value(new DictionaryValue()); | 346 scoped_ptr<DictionaryValue> value(new DictionaryValue()); |
339 value->SetInteger("min_manifest_version", 1); | 347 value->SetInteger("min_manifest_version", 1); |
340 value->SetInteger("max_manifest_version", 5); | 348 value->SetInteger("max_manifest_version", 5); |
341 scoped_ptr<Feature> feature(new Feature()); | 349 scoped_ptr<SimpleFeature> feature(new SimpleFeature()); |
342 feature->Parse(value.get()); | 350 feature->Parse(value.get()); |
343 EXPECT_EQ(1, feature->min_manifest_version()); | 351 EXPECT_EQ(1, feature->min_manifest_version()); |
344 EXPECT_EQ(5, feature->max_manifest_version()); | 352 EXPECT_EQ(5, feature->max_manifest_version()); |
345 } | 353 } |
346 | 354 |
347 TEST_F(ExtensionFeatureTest, Inheritance) { | 355 TEST_F(ExtensionSimpleFeatureTest, Inheritance) { |
348 Feature feature; | 356 SimpleFeature feature; |
349 feature.whitelist()->insert("foo"); | 357 feature.whitelist()->insert("foo"); |
350 feature.extension_types()->insert(Extension::TYPE_THEME); | 358 feature.extension_types()->insert(Extension::TYPE_THEME); |
351 feature.contexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); | 359 feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); |
352 feature.set_location(Feature::COMPONENT_LOCATION); | 360 feature.set_location(Feature::COMPONENT_LOCATION); |
353 feature.set_platform(Feature::CHROMEOS_PLATFORM); | 361 feature.set_platform(Feature::CHROMEOS_PLATFORM); |
354 feature.set_min_manifest_version(1); | 362 feature.set_min_manifest_version(1); |
355 feature.set_max_manifest_version(2); | 363 feature.set_max_manifest_version(2); |
356 | 364 |
357 Feature feature2 = feature; | 365 SimpleFeature feature2 = feature; |
358 EXPECT_TRUE(feature2.Equals(feature)); | 366 EXPECT_TRUE(feature2.Equals(feature)); |
359 | 367 |
360 DictionaryValue definition; | 368 DictionaryValue definition; |
361 feature2.Parse(&definition); | 369 feature2.Parse(&definition); |
362 EXPECT_TRUE(feature2.Equals(feature)); | 370 EXPECT_TRUE(feature2.Equals(feature)); |
363 | 371 |
364 ListValue* whitelist = new ListValue(); | 372 ListValue* whitelist = new ListValue(); |
365 ListValue* extension_types = new ListValue(); | 373 ListValue* extension_types = new ListValue(); |
366 ListValue* contexts = new ListValue(); | 374 ListValue* contexts = new ListValue(); |
367 whitelist->Append(Value::CreateStringValue("bar")); | 375 whitelist->Append(Value::CreateStringValue("bar")); |
368 extension_types->Append(Value::CreateStringValue("extension")); | 376 extension_types->Append(Value::CreateStringValue("extension")); |
369 contexts->Append(Value::CreateStringValue("unblessed_extension")); | 377 contexts->Append(Value::CreateStringValue("unblessed_extension")); |
370 definition.Set("whitelist", whitelist); | 378 definition.Set("whitelist", whitelist); |
371 definition.Set("extension_types", extension_types); | 379 definition.Set("extension_types", extension_types); |
372 definition.Set("contexts", contexts); | 380 definition.Set("contexts", contexts); |
373 // Can't test location or platform because we only have one value so far. | 381 // Can't test location or platform because we only have one value so far. |
374 definition.Set("min_manifest_version", Value::CreateIntegerValue(2)); | 382 definition.Set("min_manifest_version", Value::CreateIntegerValue(2)); |
375 definition.Set("max_manifest_version", Value::CreateIntegerValue(3)); | 383 definition.Set("max_manifest_version", Value::CreateIntegerValue(3)); |
376 | 384 |
377 feature2.Parse(&definition); | 385 feature2.Parse(&definition); |
378 EXPECT_FALSE(feature2.Equals(feature)); | 386 EXPECT_FALSE(feature2.Equals(feature)); |
379 EXPECT_EQ(1u, feature2.whitelist()->size()); | 387 EXPECT_EQ(1u, feature2.whitelist()->size()); |
380 EXPECT_EQ(1u, feature2.extension_types()->size()); | 388 EXPECT_EQ(1u, feature2.extension_types()->size()); |
381 EXPECT_EQ(1u, feature2.contexts()->size()); | 389 EXPECT_EQ(1u, feature2.GetContexts()->size()); |
382 EXPECT_EQ(1u, feature2.whitelist()->count("bar")); | 390 EXPECT_EQ(1u, feature2.whitelist()->count("bar")); |
383 EXPECT_EQ(1u, feature2.extension_types()->count(Extension::TYPE_EXTENSION)); | 391 EXPECT_EQ(1u, feature2.extension_types()->count(Extension::TYPE_EXTENSION)); |
384 EXPECT_EQ(1u, | 392 EXPECT_EQ(1u, feature2.GetContexts()->count( |
385 feature2.contexts()->count(Feature::UNBLESSED_EXTENSION_CONTEXT)); | 393 Feature::UNBLESSED_EXTENSION_CONTEXT)); |
386 EXPECT_EQ(2, feature2.min_manifest_version()); | 394 EXPECT_EQ(2, feature2.min_manifest_version()); |
387 EXPECT_EQ(3, feature2.max_manifest_version()); | 395 EXPECT_EQ(3, feature2.max_manifest_version()); |
388 } | 396 } |
389 | 397 |
390 TEST_F(ExtensionFeatureTest, Equals) { | 398 TEST_F(ExtensionSimpleFeatureTest, Equals) { |
391 Feature feature; | 399 SimpleFeature feature; |
392 feature.whitelist()->insert("foo"); | 400 feature.whitelist()->insert("foo"); |
393 feature.extension_types()->insert(Extension::TYPE_THEME); | 401 feature.extension_types()->insert(Extension::TYPE_THEME); |
394 feature.contexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT); | 402 feature.GetContexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT); |
395 feature.set_location(Feature::COMPONENT_LOCATION); | 403 feature.set_location(Feature::COMPONENT_LOCATION); |
396 feature.set_platform(Feature::CHROMEOS_PLATFORM); | 404 feature.set_platform(Feature::CHROMEOS_PLATFORM); |
397 feature.set_min_manifest_version(18); | 405 feature.set_min_manifest_version(18); |
398 feature.set_max_manifest_version(25); | 406 feature.set_max_manifest_version(25); |
399 | 407 |
400 Feature feature2(feature); | 408 SimpleFeature feature2(feature); |
401 EXPECT_TRUE(feature2.Equals(feature)); | 409 EXPECT_TRUE(feature2.Equals(feature)); |
402 | 410 |
403 feature2.whitelist()->clear(); | 411 feature2.whitelist()->clear(); |
404 EXPECT_FALSE(feature2.Equals(feature)); | 412 EXPECT_FALSE(feature2.Equals(feature)); |
405 | 413 |
406 feature2 = feature; | 414 feature2 = feature; |
407 feature2.extension_types()->clear(); | 415 feature2.extension_types()->clear(); |
408 EXPECT_FALSE(feature2.Equals(feature)); | 416 EXPECT_FALSE(feature2.Equals(feature)); |
409 | 417 |
410 feature2 = feature; | 418 feature2 = feature; |
411 feature2.contexts()->clear(); | 419 feature2.GetContexts()->clear(); |
412 EXPECT_FALSE(feature2.Equals(feature)); | 420 EXPECT_FALSE(feature2.Equals(feature)); |
413 | 421 |
414 feature2 = feature; | 422 feature2 = feature; |
415 feature2.set_location(Feature::UNSPECIFIED_LOCATION); | 423 feature2.set_location(Feature::UNSPECIFIED_LOCATION); |
416 EXPECT_FALSE(feature2.Equals(feature)); | 424 EXPECT_FALSE(feature2.Equals(feature)); |
417 | 425 |
418 feature2 = feature; | 426 feature2 = feature; |
419 feature2.set_platform(Feature::UNSPECIFIED_PLATFORM); | 427 feature2.set_platform(Feature::UNSPECIFIED_PLATFORM); |
420 EXPECT_FALSE(feature2.Equals(feature)); | 428 EXPECT_FALSE(feature2.Equals(feature)); |
421 | 429 |
422 feature2 = feature; | 430 feature2 = feature; |
423 feature2.set_min_manifest_version(0); | 431 feature2.set_min_manifest_version(0); |
424 EXPECT_FALSE(feature2.Equals(feature)); | 432 EXPECT_FALSE(feature2.Equals(feature)); |
425 | 433 |
426 feature2 = feature; | 434 feature2 = feature; |
427 feature2.set_max_manifest_version(0); | 435 feature2.set_max_manifest_version(0); |
428 EXPECT_FALSE(feature2.Equals(feature)); | 436 EXPECT_FALSE(feature2.Equals(feature)); |
429 } | 437 } |
430 | 438 |
431 Feature::AvailabilityResult IsAvailableInChannel( | 439 Feature::AvailabilityResult IsAvailableInChannel( |
432 const std::string& channel, VersionInfo::Channel channel_for_testing) { | 440 const std::string& channel, VersionInfo::Channel channel_for_testing) { |
433 Feature::ScopedCurrentChannel current_channel(channel_for_testing); | 441 Feature::ScopedCurrentChannel current_channel(channel_for_testing); |
434 | 442 |
435 Feature feature; | 443 SimpleFeature feature; |
436 if (!channel.empty()) { | 444 if (!channel.empty()) { |
437 DictionaryValue feature_value; | 445 DictionaryValue feature_value; |
438 feature_value.SetString("channel", channel); | 446 feature_value.SetString("channel", channel); |
439 feature.Parse(&feature_value); | 447 feature.Parse(&feature_value); |
440 } | 448 } |
441 | 449 |
442 return feature.IsAvailableToManifest( | 450 return feature.IsAvailableToManifest( |
443 "random-extension", | 451 "random-extension", |
444 Extension::TYPE_UNKNOWN, | 452 Extension::TYPE_UNKNOWN, |
445 Feature::UNSPECIFIED_LOCATION, | 453 Feature::UNSPECIFIED_LOCATION, |
446 -1).result(); | 454 -1, |
| 455 Feature::GetCurrentPlatform()).result(); |
447 } | 456 } |
448 | 457 |
449 TEST_F(ExtensionFeatureTest, SupportedChannel) { | 458 TEST_F(ExtensionSimpleFeatureTest, SupportedChannel) { |
450 // stable supported. | 459 // stable supported. |
451 EXPECT_EQ(Feature::IS_AVAILABLE, | 460 EXPECT_EQ(Feature::IS_AVAILABLE, |
452 IsAvailableInChannel("stable", VersionInfo::CHANNEL_UNKNOWN)); | 461 IsAvailableInChannel("stable", VersionInfo::CHANNEL_UNKNOWN)); |
453 EXPECT_EQ(Feature::IS_AVAILABLE, | 462 EXPECT_EQ(Feature::IS_AVAILABLE, |
454 IsAvailableInChannel("stable", VersionInfo::CHANNEL_CANARY)); | 463 IsAvailableInChannel("stable", VersionInfo::CHANNEL_CANARY)); |
455 EXPECT_EQ(Feature::IS_AVAILABLE, | 464 EXPECT_EQ(Feature::IS_AVAILABLE, |
456 IsAvailableInChannel("stable", VersionInfo::CHANNEL_DEV)); | 465 IsAvailableInChannel("stable", VersionInfo::CHANNEL_DEV)); |
457 EXPECT_EQ(Feature::IS_AVAILABLE, | 466 EXPECT_EQ(Feature::IS_AVAILABLE, |
458 IsAvailableInChannel("stable", VersionInfo::CHANNEL_BETA)); | 467 IsAvailableInChannel("stable", VersionInfo::CHANNEL_BETA)); |
459 EXPECT_EQ(Feature::IS_AVAILABLE, | 468 EXPECT_EQ(Feature::IS_AVAILABLE, |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 IsAvailableInChannel("", VersionInfo::CHANNEL_CANARY)); | 523 IsAvailableInChannel("", VersionInfo::CHANNEL_CANARY)); |
515 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 524 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, |
516 IsAvailableInChannel("", VersionInfo::CHANNEL_DEV)); | 525 IsAvailableInChannel("", VersionInfo::CHANNEL_DEV)); |
517 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 526 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, |
518 IsAvailableInChannel("", VersionInfo::CHANNEL_BETA)); | 527 IsAvailableInChannel("", VersionInfo::CHANNEL_BETA)); |
519 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, | 528 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, |
520 IsAvailableInChannel("", VersionInfo::CHANNEL_STABLE)); | 529 IsAvailableInChannel("", VersionInfo::CHANNEL_STABLE)); |
521 } | 530 } |
522 | 531 |
523 } // namespace | 532 } // namespace |
OLD | NEW |