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 '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() |
OLD | NEW |