OLD | NEW |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2013 The Chromium Authors. All rights reserved. | 2 # Copyright 2013 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import json | 6 import json |
7 import unittest | 7 import unittest |
8 | 8 |
9 from extensions_paths import CHROME_EXTENSIONS | 9 from extensions_paths import CHROME_EXTENSIONS |
10 from server_instance import ServerInstance | 10 from server_instance import ServerInstance |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
57 'overridesPlatformAndChannelFromDependency': { | 57 'overridesPlatformAndChannelFromDependency': { |
58 'channel': 'beta', | 58 'channel': 'beta', |
59 'dependencies': [ | 59 'dependencies': [ |
60 'permission:overridesPlatformAndChannelFromDependency' | 60 'permission:overridesPlatformAndChannelFromDependency' |
61 ], | 61 ], |
62 'extension_types': ['platform_app'] | 62 'extension_types': ['platform_app'] |
63 }, | 63 }, |
64 'windows': { | 64 'windows': { |
65 'dependencies': ['api:tabs'], | 65 'dependencies': ['api:tabs'], |
66 'contexts': ['blessed_extension'] | 66 'contexts': ['blessed_extension'] |
67 } | 67 }, |
68 'testDeep1': { | |
69 'dependencies': ['api:testDeep2'] | |
70 }, | |
71 'testDeep2': { | |
72 'dependencies': ['api:testDeep3'] | |
73 }, | |
74 'testDeep3': { | |
75 'dependencies': ['manifest:testDeep4'] | |
76 }, | |
77 'testDeep1.child': {}, | |
78 'multipleAmbiguous': [{ | |
79 'value': 1, | |
80 'extension_types': ['platform_app'] | |
81 }, { | |
82 'value': 2, | |
83 'dependencies': ['manifest:multipleAmbiguous'] | |
84 }], | |
85 'mergingDependencies1': { | |
86 'dependencies': [ | |
87 'permission:mergingDependencies1', | |
88 'permission:mergingDependencies2' | |
89 ] | |
90 }, | |
91 'mergingDependencies2': { | |
92 'dependencies': [ | |
93 'permission:mergingDependencies1', | |
94 'permission:mergingDependencies3' | |
95 ] | |
96 }, | |
97 'mergingDependencies3': { | |
98 'dependencies': [ | |
99 'permission:mergingDependencies2', | |
100 'permission:mergingDependencies3' | |
101 ] | |
102 }, | |
103 'implicitNoParent.child': { | |
104 'extension_types': ['extension'], | |
105 'channel': 'stable' | |
106 }, | |
107 'parent': { | |
108 'extension_types': ['extension'], | |
109 'channel': 'beta' | |
110 }, | |
111 'parent.explicitNoParent': { | |
112 'extension_types': ['extension'], | |
113 'noparent': True | |
114 }, | |
115 'parent.inheritAndOverride': { | |
116 'channel': 'dev' | |
117 }, | |
118 'overridePlatform': { | |
119 'dependencies': ['permission:tabs'], | |
120 'extension_types': 'platform_app' | |
121 }, | |
122 'mergeMostStableChannel': [{ | |
123 'channel': 'dev', | |
124 'extension_types': ['extension'], | |
125 'value1': 1 | |
126 }, { | |
127 'channel': 'stable', | |
128 'extension_types': ['extension'], | |
129 'value2': 2 | |
130 }, { | |
131 'channel': 'beta', | |
132 'extension_types': ['extension'], | |
133 'value3': 3 | |
134 }, { | |
135 'channel': 'stable', | |
136 'extension_types': ['extension'], | |
137 'value4': 4 | |
138 }, { | |
139 'extension_types': ['extension'], | |
140 'value5': 5 | |
141 }] | |
68 }), | 142 }), |
69 '_manifest_features.json': json.dumps({ | 143 '_manifest_features.json': json.dumps({ |
70 'app.content_security_policy': { | 144 'app.content_security_policy': { |
71 'channel': 'stable', | 145 'channel': 'stable', |
72 'extension_types': ['platform_app'], | 146 'extension_types': ['platform_app'], |
73 'min_manifest_version': 2, | 147 'min_manifest_version': 2, |
74 'whitelist': ['this isnt happening'] | 148 'whitelist': ['this isnt happening'] |
75 }, | 149 }, |
76 'background': { | 150 'background': { |
77 'channel': 'stable', | 151 'channel': 'stable', |
(...skipping 12 matching lines...) Expand all Loading... | |
90 'extension_types': ['extension'], | 164 'extension_types': ['extension'], |
91 'platforms': ['win'] | 165 'platforms': ['win'] |
92 }, | 166 }, |
93 'page_action': { | 167 'page_action': { |
94 'channel': 'stable', | 168 'channel': 'stable', |
95 'extension_types': ['extension'] | 169 'extension_types': ['extension'] |
96 }, | 170 }, |
97 'sockets': { | 171 'sockets': { |
98 'channel': 'dev', | 172 'channel': 'dev', |
99 'extension_types': ['platform_app'] | 173 'extension_types': ['platform_app'] |
174 }, | |
175 'testDeep4': { | |
176 'extension_types': ['extension'] | |
177 }, | |
178 'multipleAmbiguous': { | |
179 'extension_types': ['extension'] | |
100 } | 180 } |
101 }), | 181 }), |
102 '_permission_features.json': json.dumps({ | 182 '_permission_features.json': json.dumps({ |
103 'bluetooth': { | 183 'bluetooth': { |
104 'channel': 'dev', | 184 'channel': 'dev', |
105 'extension_types': ['platform_app'] | 185 'extension_types': ['platform_app'] |
106 }, | 186 }, |
107 'overridesPlatformAndChannelFromDependency': { | 187 'overridesPlatformAndChannelFromDependency': { |
108 'channel': 'stable', | 188 'channel': 'stable', |
109 'extension_types': ['extension'] | 189 'extension_types': ['extension'] |
110 }, | 190 }, |
111 'power': { | 191 'power': { |
112 'channel': 'stable', | 192 'channel': 'stable', |
113 'extension_types': [ | 193 'extension_types': [ |
114 'extension', 'legacy_packaged_app', 'platform_app' | 194 'extension', 'legacy_packaged_app', 'platform_app' |
115 ] | 195 ] |
116 }, | 196 }, |
117 'syncFileSystem': { | 197 'syncFileSystem': { |
118 'channel': 'beta', | 198 'channel': 'stable', |
119 'extension_types': ['platform_app'] | 199 'extension_types': ['platform_app'] |
120 }, | 200 }, |
121 'tabs': { | 201 'tabs': { |
122 'channel': 'stable', | 202 'channel': 'stable', |
123 'extension_types': ['extension'] | 203 'extension_types': ['extension'] |
124 } | 204 }, |
205 'mergingDependencies1': { | |
206 'channel': 'stable', | |
207 'extension_types': 'all' | |
208 }, | |
209 'mergingDependencies2': { | |
210 'channel': 'beta', | |
211 'extension_types': ['platform_app'] | |
212 }, | |
213 'mergingDependencies3': { | |
214 'extension_types': ['extension'] | |
215 }, | |
216 'defaults': {} | |
125 }) | 217 }) |
126 }, | 218 }, |
127 'docs': { | 219 'docs': { |
128 'templates': { | 220 'templates': { |
129 'json': { | 221 'json': { |
130 'manifest.json': json.dumps({ | 222 'manifest.json': json.dumps({ |
131 'background': { | 223 'background': { |
132 'documentation': 'background_pages.html' | 224 'documentation': 'background_pages.html' |
133 }, | 225 }, |
134 'manifest_version': { | 226 'manifest_version': { |
135 'documentation': 'manifest/manifest_version.html', | 227 'documentation': 'manifest/manifest_version.html', |
136 'example': 2, | 228 'example': 2, |
137 'level': 'required' | 229 'level': 'required' |
138 }, | 230 }, |
139 'page_action': { | 231 'page_action': { |
140 'documentation': 'pageAction.html', | 232 'documentation': 'pageAction.html', |
141 'example': {}, | 233 'example': {}, |
142 'level': 'only_one' | 234 'level': 'only_one' |
143 } | 235 } |
144 }), | 236 }), |
145 'permissions.json': json.dumps({ | 237 'permissions.json': json.dumps({ |
146 'fakeUnsupportedFeature': {}, | 238 'fakeUnsupportedFeature': {}, |
147 'syncFileSystem': { | 239 'syncFileSystem': { |
148 'partial': 'permissions/sync_file_system.html' | 240 'partial': 'permissions/sync_file_system.html' |
149 }, | 241 }, |
150 'tabs': { | 242 'tabs': { |
151 'partial': 'permissions/tabs.html' | 243 'partial': 'permissions/tabs.html' |
152 }, | 244 } |
153 }) | 245 }) |
154 } | 246 } |
155 } | 247 } |
156 } | 248 } |
157 } | 249 } |
158 | 250 |
159 | 251 |
160 class FeaturesBundleTest(unittest.TestCase): | 252 class FeaturesBundleTest(unittest.TestCase): |
161 def setUp(self): | 253 def setUp(self): |
162 self._server = ServerInstance.ForTest( | 254 self._server = ServerInstance.ForTest( |
163 TestFileSystem(_TEST_FILESYSTEM, relative_to=CHROME_EXTENSIONS)) | 255 TestFileSystem(_TEST_FILESYSTEM, relative_to=CHROME_EXTENSIONS)) |
164 | 256 |
165 def testManifestFeatures(self): | 257 def testManifestFeatures(self): |
166 expected_features = { | 258 expected_features = { |
167 'background': { | 259 'background': { |
168 'name': 'background', | 260 'name': 'background', |
169 'channel': 'stable', | 261 'channel': 'stable', |
170 'platforms': ['extensions'], | 262 'documentation': 'background_pages.html', |
171 'documentation': 'background_pages.html' | 263 }, |
172 }, | 264 'inheritsPlatformAndChannelFromDependency': { |
173 'inheritsPlatformAndChannelFromDependency': { | |
174 'channel': 'dev', | 265 'channel': 'dev', |
175 'name': 'inheritsPlatformAndChannelFromDependency', | 266 'name': 'inheritsPlatformAndChannelFromDependency', |
176 'platforms': ['extensions'] | |
177 }, | 267 }, |
178 'manifest_version': { | 268 'manifest_version': { |
179 'name': 'manifest_version', | 269 'name': 'manifest_version', |
180 'channel': 'stable', | 270 'channel': 'stable', |
181 'platforms': ['apps', 'extensions'], | |
182 'documentation': 'manifest/manifest_version.html', | 271 'documentation': 'manifest/manifest_version.html', |
183 'level': 'required', | 272 'level': 'required', |
184 'example': 2 | 273 'example': 2, |
185 }, | 274 }, |
186 'omnibox': { | 275 'omnibox': { |
187 'name': 'omnibox', | 276 'name': 'omnibox', |
188 'channel': 'stable', | 277 'channel': 'stable', |
189 'platforms': ['extensions'] | 278 'platforms': ['win'], |
190 }, | 279 }, |
191 'page_action': { | 280 'page_action': { |
192 'name': 'page_action', | 281 'name': 'page_action', |
193 'channel': 'stable', | 282 'channel': 'stable', |
194 'platforms': ['extensions'], | |
195 'documentation': 'pageAction.html', | 283 'documentation': 'pageAction.html', |
196 'level': 'only_one', | 284 'level': 'only_one', |
197 'example': {} | 285 'example': {}, |
286 }, | |
287 'testDeep4': { | |
288 'name': 'testDeep4', | |
289 'channel': 'stable' | |
290 }, | |
291 'multipleAmbiguous': { | |
292 'name': 'multipleAmbiguous', | |
293 'channel': 'stable' | |
294 } | |
295 } | |
296 self.assertEqual( | |
297 expected_features, | |
298 self._server.platform_bundle.GetFeaturesBundle( | |
299 'extensions').GetManifestFeatures().Get()) | |
300 expected_features = { | |
301 'manifest_version': { | |
302 'name': 'manifest_version', | |
303 'channel': 'stable', | |
304 'documentation': 'manifest/manifest_version.html', | |
305 'level': 'required', | |
306 'example': 2, | |
198 }, | 307 }, |
199 'sockets': { | 308 'sockets': { |
200 'name': 'sockets', | 309 'name': 'sockets', |
201 'channel': 'dev', | 310 'channel': 'dev', |
202 'platforms': ['apps'] | 311 } |
203 } | 312 } |
204 } | 313 self.assertEqual( |
205 self.assertEqual( | 314 expected_features, |
206 expected_features, | 315 self._server.platform_bundle.GetFeaturesBundle( |
207 self._server.features_bundle.GetManifestFeatures().Get()) | 316 'apps').GetManifestFeatures().Get()) |
208 | 317 |
209 def testPermissionFeatures(self): | 318 def testPermissionFeatures(self): |
210 expected_features = { | 319 expected_features = { |
320 'power': { | |
321 'name': 'power', | |
322 'channel': 'stable', | |
323 }, | |
324 'overridesPlatformAndChannelFromDependency': { | |
325 'name': 'overridesPlatformAndChannelFromDependency', | |
326 'channel': 'stable', | |
327 }, | |
328 'tabs': { | |
329 'name': 'tabs', | |
330 'channel': 'stable', | |
331 'partial': 'permissions/tabs.html' | |
332 }, | |
333 'mergingDependencies1': { | |
334 'name': 'mergingDependencies1', | |
335 'channel': 'stable', | |
336 }, | |
337 'mergingDependencies3': { | |
338 'name': 'mergingDependencies3', | |
339 'channel': 'stable' | |
340 }, | |
341 'defaults': { | |
342 'name': 'defaults', | |
343 'channel': 'stable' | |
344 } | |
345 } | |
346 self.assertEqual( | |
347 expected_features, | |
348 self._server.platform_bundle.GetFeaturesBundle( | |
349 'extensions').GetPermissionFeatures().Get()) | |
350 expected_features = { | |
211 'bluetooth': { | 351 'bluetooth': { |
212 'name': 'bluetooth', | 352 'name': 'bluetooth', |
213 'channel': 'dev', | 353 'channel': 'dev', |
214 'platforms': ['apps'], | |
215 }, | |
216 'fakeUnsupportedFeature': { | |
217 'name': 'fakeUnsupportedFeature', | |
218 'platforms': [] | |
219 }, | |
220 'overridesPlatformAndChannelFromDependency': { | |
221 'name': 'overridesPlatformAndChannelFromDependency', | |
222 'channel': 'stable', | |
223 'platforms': ['extensions'] | |
224 }, | 354 }, |
225 'power': { | 355 'power': { |
226 'name': 'power', | 356 'name': 'power', |
227 'channel': 'stable', | 357 'channel': 'stable', |
228 'platforms': ['apps', 'extensions'], | |
229 }, | 358 }, |
230 'syncFileSystem': { | 359 'syncFileSystem': { |
231 'name': 'syncFileSystem', | 360 'name': 'syncFileSystem', |
232 'channel': 'beta', | 361 'channel': 'stable', |
233 'platforms': ['apps'], | |
234 'partial': 'permissions/sync_file_system.html' | 362 'partial': 'permissions/sync_file_system.html' |
235 }, | 363 }, |
364 'mergingDependencies1': { | |
365 'name': 'mergingDependencies1', | |
366 'channel': 'stable', | |
367 }, | |
368 'mergingDependencies2': { | |
369 'name': 'mergingDependencies2', | |
370 'channel': 'beta' | |
371 }, | |
372 'defaults': { | |
373 'name': 'defaults', | |
374 'channel': 'stable' | |
375 } | |
376 } | |
377 self.assertEqual( | |
378 expected_features, | |
379 self._server.platform_bundle.GetFeaturesBundle( | |
380 'apps').GetPermissionFeatures().Get()) | |
381 | |
382 def testAPIFeatures(self): | |
383 expected_features = { | |
384 'background': { | |
385 'name': 'background', | |
386 'channel': 'stable', | |
387 }, | |
388 'omnibox': { | |
389 'name': 'omnibox', | |
390 'contexts': ['blessed_extension'], | |
391 'dependencies': ['manifest:omnibox'], | |
392 'channel': 'stable' | |
393 }, | |
236 'tabs': { | 394 'tabs': { |
237 'name': 'tabs', | 395 'name': 'tabs', |
238 'channel': 'stable', | 396 'channel': 'stable', |
239 'platforms': ['extensions'], | 397 'contexts': ['blessed_extension'], |
240 'partial': 'permissions/tabs.html' | 398 }, |
241 } | 399 'test': { |
242 } | 400 'name': 'test', |
243 self.assertEqual( | 401 'channel': 'stable', |
244 expected_features, | 402 'contexts': [ |
245 self._server.features_bundle.GetPermissionFeatures().Get()) | 403 'blessed_extension', 'unblessed_extension', 'content_script'], |
246 | 404 }, |
247 def testAPIFeatures(self): | 405 'windows': { |
406 'name': 'windows', | |
407 'contexts': ['blessed_extension'], | |
408 'dependencies': ['api:tabs'], | |
409 'channel': 'stable' | |
410 }, | |
411 'testDeep1': { | |
412 'name': 'testDeep1', | |
413 'dependencies': ['api:testDeep2'], | |
414 'channel': 'stable' | |
415 }, | |
416 'testDeep2': { | |
417 'name': 'testDeep2', | |
418 'dependencies': ['api:testDeep3'], | |
419 'channel': 'stable' | |
420 }, | |
421 'testDeep3': { | |
422 'name': 'testDeep3', | |
423 'dependencies': ['manifest:testDeep4'], | |
424 'channel': 'stable' | |
425 }, | |
426 'testDeep1.child': { | |
427 'name': 'testDeep1.child', | |
428 'channel': 'stable' | |
429 }, | |
430 'multipleAmbiguous': { | |
431 'name': 'multipleAmbiguous', | |
432 'value': 2, | |
433 'dependencies': ['manifest:multipleAmbiguous'], | |
434 'channel': 'stable' | |
435 }, | |
436 'mergingDependencies2': { | |
437 'name': 'mergingDependencies2', | |
438 'dependencies': [ | |
439 'permission:mergingDependencies1', | |
440 'permission:mergingDependencies3' | |
441 ], | |
442 'channel': 'stable' | |
443 }, | |
444 'inheritsFromDifferentDependencyName': { | |
445 'channel': 'dev', | |
446 'name': 'inheritsFromDifferentDependencyName', | |
447 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'], | |
448 }, | |
449 'inheritsPlatformAndChannelFromDependency': { | |
450 'channel': 'dev', | |
451 'name': 'inheritsPlatformAndChannelFromDependency', | |
452 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'], | |
453 }, | |
454 'implicitNoParent.child': { | |
455 'name': 'implicitNoParent.child', | |
456 'channel': 'stable' | |
457 }, | |
458 'parent': { | |
459 'name': 'parent', | |
460 'channel': 'beta' | |
461 }, | |
462 'parent.explicitNoParent': { | |
463 'name': 'parent.explicitNoParent', | |
464 'channel': 'stable', | |
465 'noparent': True | |
466 }, | |
467 'parent.inheritAndOverride': { | |
468 'name': 'parent.inheritAndOverride', | |
469 'channel': 'dev' | |
not at google - send to devlin
2014/06/19 21:06:55
i.e. this should include extension_types
| |
470 }, | |
471 'mergeMostStableChannel': { | |
472 'name': 'mergeMostStableChannel', | |
473 'channel': 'stable', | |
474 'value2': 2, | |
475 'value4': 4, | |
476 'value5': 5 | |
477 } | |
478 } | |
479 self.assertEqual( | |
480 expected_features, | |
481 self._server.platform_bundle.GetFeaturesBundle( | |
482 'extensions').GetAPIFeatures().Get()) | |
248 expected_features = { | 483 expected_features = { |
249 'audioCapture': { | 484 'audioCapture': { |
250 'name': 'audioCapture', | 485 'name': 'audioCapture', |
251 'channel': 'stable', | 486 'channel': 'stable', |
252 'platforms': ['apps'] | 487 }, |
253 }, | 488 'syncFileSystem': { |
254 'background': { | 489 'name': 'syncFileSystem', |
255 'name': 'background', | 490 'contexts': ['blessed_extension'], |
256 'channel': 'stable', | 491 'dependencies': ['permission:syncFileSystem'], |
257 'platforms': ['extensions'] | 492 'channel': 'stable' |
258 }, | 493 }, |
259 'inheritsFromDifferentDependencyName': { | 494 'test': { |
260 'channel': 'dev', | 495 'name': 'test', |
261 'name': 'inheritsFromDifferentDependencyName', | 496 'channel': 'stable', |
262 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'], | 497 'contexts': [ |
263 'platforms': ['extensions'] | 498 'blessed_extension', 'unblessed_extension', 'content_script'], |
264 }, | 499 }, |
265 'inheritsPlatformAndChannelFromDependency': { | 500 'multipleAmbiguous': { |
266 'channel': 'dev', | 501 'name': 'multipleAmbiguous', |
267 'name': 'inheritsPlatformAndChannelFromDependency', | 502 'value': 1, |
268 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'], | 503 'channel': 'stable' |
269 'platforms': ['extensions'] | 504 }, |
270 }, | 505 'mergingDependencies1': { |
271 'omnibox': { | 506 'name': 'mergingDependencies1', |
272 'channel': 'stable', | 507 'dependencies': [ |
273 'name': 'omnibox', | 508 'permission:mergingDependencies1', |
274 'platforms': ['extensions'], | 509 'permission:mergingDependencies2' |
275 'contexts': ['blessed_extension'], | 510 ], |
276 'dependencies': ['manifest:omnibox'] | 511 'channel': 'beta' |
277 }, | 512 }, |
278 'overridesPlatformAndChannelFromDependency': { | 513 'overridesPlatformAndChannelFromDependency': { |
279 'channel': 'beta', | 514 'channel': 'beta', |
280 'name': 'overridesPlatformAndChannelFromDependency', | 515 'name': 'overridesPlatformAndChannelFromDependency', |
281 'dependencies': [ | 516 'dependencies': [ |
282 'permission:overridesPlatformAndChannelFromDependency' | 517 'permission:overridesPlatformAndChannelFromDependency' |
283 ], | 518 ], |
284 'platforms': ['apps'] | 519 }, |
285 }, | 520 'overridePlatform': { |
286 'syncFileSystem': { | 521 'name': 'overridePlatform', |
287 'channel': 'beta', | 522 'channel': 'stable', |
288 'name': 'syncFileSystem', | 523 'dependencies': ['permission:tabs'], |
289 'platforms': ['apps'], | 524 } |
290 'contexts': ['blessed_extension'], | 525 } |
291 'dependencies': ['permission:syncFileSystem'] | 526 self.assertEqual( |
292 }, | 527 expected_features, |
293 'tabs': { | 528 self._server.platform_bundle.GetFeaturesBundle( |
294 'channel': 'stable', | 529 'apps').GetAPIFeatures().Get()) |
295 'name': 'tabs', | |
296 'channel': 'stable', | |
297 'platforms': ['extensions'], | |
298 'contexts': ['blessed_extension'], | |
299 }, | |
300 'test': { | |
301 'channel': 'stable', | |
302 'name': 'test', | |
303 'channel': 'stable', | |
304 'platforms': ['apps', 'extensions'], | |
305 'contexts': [ | |
306 'blessed_extension', 'unblessed_extension', 'content_script'], | |
307 }, | |
308 'windows': { | |
309 'channel': 'stable', | |
310 'name': 'windows', | |
311 'platforms': ['extensions'], | |
312 'contexts': ['blessed_extension'], | |
313 'dependencies': ['api:tabs'] | |
314 } | |
315 } | |
316 self.assertEqual( | |
317 expected_features, | |
318 self._server.features_bundle.GetAPIFeatures().Get()) | |
319 | 530 |
320 | 531 |
321 if __name__ == '__main__': | 532 if __name__ == '__main__': |
322 unittest.main() | 533 unittest.main() |
OLD | NEW |