Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: chrome/common/extensions/docs/server2/features_bundle_test.py

Issue 344453003: Docserver: separate models for apps and extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Quick fixes Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 'extension_types': ['extension', 'legacy_packaged_app', 'hosted_app']
172 }, 264 },
173 'inheritsPlatformAndChannelFromDependency': { 265 'inheritsPlatformAndChannelFromDependency': {
174 'channel': 'dev',
175 'name': 'inheritsPlatformAndChannelFromDependency', 266 'name': 'inheritsPlatformAndChannelFromDependency',
176 'platforms': ['extensions'] 267 'channel': 'dev',
268 'extension_types': ['extension']
177 }, 269 },
178 'manifest_version': { 270 'manifest_version': {
179 'name': 'manifest_version', 271 'name': 'manifest_version',
180 'channel': 'stable', 272 'channel': 'stable',
181 'platforms': ['apps', 'extensions'],
182 'documentation': 'manifest/manifest_version.html', 273 'documentation': 'manifest/manifest_version.html',
274 'extension_types': 'all',
183 'level': 'required', 275 'level': 'required',
184 'example': 2 276 'example': 2,
185 }, 277 },
186 'omnibox': { 278 'omnibox': {
187 'name': 'omnibox', 279 'name': 'omnibox',
188 'channel': 'stable', 280 'channel': 'stable',
189 'platforms': ['extensions'] 281 'extension_types': ['extension'],
282 'platforms': ['win'],
190 }, 283 },
191 'page_action': { 284 'page_action': {
192 'name': 'page_action', 285 'name': 'page_action',
193 'channel': 'stable', 286 'channel': 'stable',
194 'platforms': ['extensions'],
195 'documentation': 'pageAction.html', 287 'documentation': 'pageAction.html',
288 'extension_types': ['extension'],
196 'level': 'only_one', 289 'level': 'only_one',
197 'example': {} 290 'example': {},
291 },
292 'testDeep4': {
293 'name': 'testDeep4',
294 'channel': 'stable',
295 'extension_types': ['extension']
296 },
297 'multipleAmbiguous': {
298 'name': 'multipleAmbiguous',
299 'channel': 'stable',
300 'extension_types': ['extension']
301 }
302 }
303 self.assertEqual(
304 expected_features,
305 self._server.platform_bundle.GetFeaturesBundle(
306 'extensions').GetManifestFeatures().Get())
307 expected_features = {
308 'manifest_version': {
309 'name': 'manifest_version',
310 'channel': 'stable',
311 'documentation': 'manifest/manifest_version.html',
312 'extension_types': 'all',
313 'level': 'required',
314 'example': 2,
198 }, 315 },
199 'sockets': { 316 'sockets': {
200 'name': 'sockets', 317 'name': 'sockets',
201 'channel': 'dev', 318 'channel': 'dev',
202 'platforms': ['apps'] 319 'extension_types': ['platform_app']
203 } 320 }
204 } 321 }
205 self.assertEqual( 322 self.assertEqual(
206 expected_features, 323 expected_features,
207 self._server.features_bundle.GetManifestFeatures().Get()) 324 self._server.platform_bundle.GetFeaturesBundle(
325 'apps').GetManifestFeatures().Get())
208 326
209 def testPermissionFeatures(self): 327 def testPermissionFeatures(self):
210 expected_features = { 328 expected_features = {
329 'power': {
330 'name': 'power',
331 'channel': 'stable',
332 'extension_types': ['extension', 'legacy_packaged_app', 'platform_app']
333 },
334 'overridesPlatformAndChannelFromDependency': {
335 'name': 'overridesPlatformAndChannelFromDependency',
336 'channel': 'stable',
337 'extension_types': ['extension']
338 },
339 'tabs': {
340 'name': 'tabs',
341 'channel': 'stable',
342 'extension_types': ['extension'],
343 'partial': 'permissions/tabs.html'
344 },
345 'mergingDependencies1': {
346 'name': 'mergingDependencies1',
347 'channel': 'stable',
348 'extension_types': 'all'
349 },
350 'mergingDependencies3': {
351 'name': 'mergingDependencies3',
352 'channel': 'stable',
353 'extension_types': ['extension']
354 },
355 'defaults': {
356 'name': 'defaults',
357 'channel': 'stable'
358 }
359 }
360 self.assertEqual(
361 expected_features,
362 self._server.platform_bundle.GetFeaturesBundle(
363 'extensions').GetPermissionFeatures().Get())
364 expected_features = {
211 'bluetooth': { 365 'bluetooth': {
212 'name': 'bluetooth', 366 'name': 'bluetooth',
213 'channel': 'dev', 367 'channel': 'dev',
214 'platforms': ['apps'], 368 'extension_types': ['platform_app']
215 }, 369 },
216 'fakeUnsupportedFeature': { 370 'power': {
217 'name': 'fakeUnsupportedFeature', 371 'name': 'power',
218 'platforms': [] 372 'channel': 'stable',
373 'extension_types': ['extension', 'legacy_packaged_app', 'platform_app']
374 },
375 'syncFileSystem': {
376 'name': 'syncFileSystem',
377 'channel': 'stable',
378 'extension_types': ['platform_app'],
379 'partial': 'permissions/sync_file_system.html'
380 },
381 'mergingDependencies1': {
382 'name': 'mergingDependencies1',
383 'channel': 'stable',
384 'extension_types': 'all'
385 },
386 'mergingDependencies2': {
387 'name': 'mergingDependencies2',
388 'channel': 'beta',
389 'extension_types': ['platform_app']
390 },
391 'defaults': {
392 'name': 'defaults',
393 'channel': 'stable'
394 }
395 }
396 self.assertEqual(
397 expected_features,
398 self._server.platform_bundle.GetFeaturesBundle(
399 'apps').GetPermissionFeatures().Get())
400
401 def testAPIFeatures(self):
402 expected_features = {
403 'background': {
404 'name': 'background',
405 'channel': 'stable',
406 'extension_types': ['extension']
407 },
408 'omnibox': {
409 'name': 'omnibox',
410 'contexts': ['blessed_extension'],
411 'dependencies': ['manifest:omnibox'],
412 'channel': 'stable'
413 },
414 'tabs': {
415 'name': 'tabs',
416 'channel': 'stable',
417 'contexts': ['blessed_extension'],
418 'extension_types': ['extension', 'legacy_packaged_app'],
419 },
420 'test': {
421 'name': 'test',
422 'channel': 'stable',
423 'contexts': [
424 'blessed_extension', 'unblessed_extension', 'content_script'],
425 'extension_types': 'all',
426 },
427 'windows': {
428 'name': 'windows',
429 'contexts': ['blessed_extension'],
430 'dependencies': ['api:tabs'],
431 'channel': 'stable'
432 },
433 'testDeep1': {
434 'name': 'testDeep1',
435 'dependencies': ['api:testDeep2'],
436 'channel': 'stable'
437 },
438 'testDeep2': {
439 'name': 'testDeep2',
440 'dependencies': ['api:testDeep3'],
441 'channel': 'stable'
442 },
443 'testDeep3': {
444 'name': 'testDeep3',
445 'dependencies': ['manifest:testDeep4'],
446 'channel': 'stable'
447 },
448 'testDeep1.child': {
449 'name': 'testDeep1.child',
450 'channel': 'stable',
451 'dependencies': ['api:testDeep2']
452 },
453 'multipleAmbiguous': {
454 'name': 'multipleAmbiguous',
455 'value': 2,
456 'dependencies': ['manifest:multipleAmbiguous'],
457 'channel': 'stable'
458 },
459 'mergingDependencies2': {
460 'name': 'mergingDependencies2',
461 'dependencies': [
462 'permission:mergingDependencies1',
463 'permission:mergingDependencies3'
464 ],
465 'channel': 'stable'
466 },
467 'inheritsFromDifferentDependencyName': {
468 'channel': 'dev',
469 'name': 'inheritsFromDifferentDependencyName',
470 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'],
471 },
472 'inheritsPlatformAndChannelFromDependency': {
473 'channel': 'dev',
474 'name': 'inheritsPlatformAndChannelFromDependency',
475 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'],
476 },
477 'implicitNoParent.child': {
478 'name': 'implicitNoParent.child',
479 'channel': 'stable',
480 'extension_types': ['extension'],
481 },
482 'parent': {
483 'name': 'parent',
484 'channel': 'beta',
485 'extension_types': ['extension'],
486 },
487 'parent.explicitNoParent': {
488 'name': 'parent.explicitNoParent',
489 'channel': 'stable',
490 'extension_types': ['extension'],
491 'noparent': True
492 },
493 'parent.inheritAndOverride': {
494 'name': 'parent.inheritAndOverride',
495 'channel': 'dev',
496 'extension_types': ['extension']
497 },
498 'mergeMostStableChannel': {
499 'name': 'mergeMostStableChannel',
500 'channel': 'stable',
501 'extension_types': ['extension'],
502 'value2': 2,
503 'value4': 4,
504 'value5': 5
505 }
506 }
507 self.assertEqual(
508 expected_features,
509 self._server.platform_bundle.GetFeaturesBundle(
510 'extensions').GetAPIFeatures().Get())
511 expected_features = {
512 'audioCapture': {
513 'name': 'audioCapture',
514 'channel': 'stable',
515 'extension_types': ['platform_app']
516 },
517 'syncFileSystem': {
518 'name': 'syncFileSystem',
519 'contexts': ['blessed_extension'],
520 'dependencies': ['permission:syncFileSystem'],
521 'channel': 'stable'
522 },
523 'test': {
524 'name': 'test',
525 'channel': 'stable',
526 'contexts': [
527 'blessed_extension', 'unblessed_extension', 'content_script'],
528 'extension_types': 'all',
529 },
530 'multipleAmbiguous': {
531 'name': 'multipleAmbiguous',
532 'channel': 'stable',
533 'extension_types': ['platform_app'],
534 'value': 1,
535 },
536 'mergingDependencies1': {
537 'name': 'mergingDependencies1',
538 'channel': 'beta',
539 'dependencies': [
540 'permission:mergingDependencies1',
541 'permission:mergingDependencies2'
542 ],
219 }, 543 },
220 'overridesPlatformAndChannelFromDependency': { 544 'overridesPlatformAndChannelFromDependency': {
221 'name': 'overridesPlatformAndChannelFromDependency', 545 'name': 'overridesPlatformAndChannelFromDependency',
222 'channel': 'stable',
223 'platforms': ['extensions']
224 },
225 'power': {
226 'name': 'power',
227 'channel': 'stable',
228 'platforms': ['apps', 'extensions'],
229 },
230 'syncFileSystem': {
231 'name': 'syncFileSystem',
232 'channel': 'beta', 546 'channel': 'beta',
233 'platforms': ['apps'],
234 'partial': 'permissions/sync_file_system.html'
235 },
236 'tabs': {
237 'name': 'tabs',
238 'channel': 'stable',
239 'platforms': ['extensions'],
240 'partial': 'permissions/tabs.html'
241 }
242 }
243 self.assertEqual(
244 expected_features,
245 self._server.features_bundle.GetPermissionFeatures().Get())
246
247 def testAPIFeatures(self):
248 expected_features = {
249 'audioCapture': {
250 'name': 'audioCapture',
251 'channel': 'stable',
252 'platforms': ['apps']
253 },
254 'background': {
255 'name': 'background',
256 'channel': 'stable',
257 'platforms': ['extensions']
258 },
259 'inheritsFromDifferentDependencyName': {
260 'channel': 'dev',
261 'name': 'inheritsFromDifferentDependencyName',
262 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'],
263 'platforms': ['extensions']
264 },
265 'inheritsPlatformAndChannelFromDependency': {
266 'channel': 'dev',
267 'name': 'inheritsPlatformAndChannelFromDependency',
268 'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'],
269 'platforms': ['extensions']
270 },
271 'omnibox': {
272 'channel': 'stable',
273 'name': 'omnibox',
274 'platforms': ['extensions'],
275 'contexts': ['blessed_extension'],
276 'dependencies': ['manifest:omnibox']
277 },
278 'overridesPlatformAndChannelFromDependency': {
279 'channel': 'beta',
280 'name': 'overridesPlatformAndChannelFromDependency',
281 'dependencies': [ 547 'dependencies': [
282 'permission:overridesPlatformAndChannelFromDependency' 548 'permission:overridesPlatformAndChannelFromDependency'
283 ], 549 ],
284 'platforms': ['apps'] 550 'extension_types': ['platform_app']
285 }, 551 },
286 'syncFileSystem': { 552 'overridePlatform': {
287 'channel': 'beta', 553 'name': 'overridePlatform',
288 'name': 'syncFileSystem', 554 'channel': 'stable',
289 'platforms': ['apps'], 555 'dependencies': ['permission:tabs'],
290 'contexts': ['blessed_extension'], 556 'extension_types': 'platform_app'
291 'dependencies': ['permission:syncFileSystem'] 557 }
292 }, 558 }
293 'tabs': { 559 self.assertEqual(
294 'channel': 'stable', 560 expected_features,
295 'name': 'tabs', 561 self._server.platform_bundle.GetFeaturesBundle(
296 'channel': 'stable', 562 'apps').GetAPIFeatures().Get())
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 563
320 564
321 if __name__ == '__main__': 565 if __name__ == '__main__':
322 unittest.main() 566 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698