Chromium Code Reviews| 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 |