Index: chrome/common/extensions/docs/server2/features_bundle_test.py |
diff --git a/chrome/common/extensions/docs/server2/features_bundle_test.py b/chrome/common/extensions/docs/server2/features_bundle_test.py |
index 2806e0855e656d7b63d77b2b9f642d8122c54336..4cb0eb022b031bf9c7537ba8b4e414aa264264ac 100755 |
--- a/chrome/common/extensions/docs/server2/features_bundle_test.py |
+++ b/chrome/common/extensions/docs/server2/features_bundle_test.py |
@@ -64,7 +64,81 @@ _TEST_FILESYSTEM = { |
'windows': { |
'dependencies': ['api:tabs'], |
'contexts': ['blessed_extension'] |
- } |
+ }, |
+ 'testDeep1': { |
+ 'dependencies': ['api:testDeep2'] |
+ }, |
+ 'testDeep2': { |
+ 'dependencies': ['api:testDeep3'] |
+ }, |
+ 'testDeep3': { |
+ 'dependencies': ['manifest:testDeep4'] |
+ }, |
+ 'testDeep1.child': {}, |
+ 'multipleAmbiguous': [{ |
+ 'value': 1, |
+ 'extension_types': ['platform_app'] |
+ }, { |
+ 'value': 2, |
+ 'dependencies': ['manifest:multipleAmbiguous'] |
+ }], |
+ 'mergingDependencies1': { |
+ 'dependencies': [ |
+ 'permission:mergingDependencies1', |
+ 'permission:mergingDependencies2' |
+ ] |
+ }, |
+ 'mergingDependencies2': { |
+ 'dependencies': [ |
+ 'permission:mergingDependencies1', |
+ 'permission:mergingDependencies3' |
+ ] |
+ }, |
+ 'mergingDependencies3': { |
+ 'dependencies': [ |
+ 'permission:mergingDependencies2', |
+ 'permission:mergingDependencies3' |
+ ] |
+ }, |
+ 'implicitNoParent.child': { |
+ 'extension_types': ['extension'], |
+ 'channel': 'stable' |
+ }, |
+ 'parent': { |
+ 'extension_types': ['extension'], |
+ 'channel': 'beta' |
+ }, |
+ 'parent.explicitNoParent': { |
+ 'extension_types': ['extension'], |
+ 'noparent': True |
+ }, |
+ 'parent.inheritAndOverride': { |
+ 'channel': 'dev' |
+ }, |
+ 'overridePlatform': { |
+ 'dependencies': ['permission:tabs'], |
+ 'extension_types': 'platform_app' |
+ }, |
+ 'mergeMostStableChannel': [{ |
+ 'channel': 'dev', |
+ 'extension_types': ['extension'], |
+ 'value1': 1 |
+ }, { |
+ 'channel': 'stable', |
+ 'extension_types': ['extension'], |
+ 'value2': 2 |
+ }, { |
+ 'channel': 'beta', |
+ 'extension_types': ['extension'], |
+ 'value3': 3 |
+ }, { |
+ 'channel': 'stable', |
+ 'extension_types': ['extension'], |
+ 'value4': 4 |
+ }, { |
+ 'extension_types': ['extension'], |
+ 'value5': 5 |
+ }] |
}), |
'_manifest_features.json': json.dumps({ |
'app.content_security_policy': { |
@@ -97,6 +171,12 @@ _TEST_FILESYSTEM = { |
'sockets': { |
'channel': 'dev', |
'extension_types': ['platform_app'] |
+ }, |
+ 'testDeep4': { |
+ 'extension_types': ['extension'] |
+ }, |
+ 'multipleAmbiguous': { |
+ 'extension_types': ['extension'] |
} |
}), |
'_permission_features.json': json.dumps({ |
@@ -115,13 +195,25 @@ _TEST_FILESYSTEM = { |
] |
}, |
'syncFileSystem': { |
- 'channel': 'beta', |
+ 'channel': 'stable', |
'extension_types': ['platform_app'] |
}, |
'tabs': { |
'channel': 'stable', |
'extension_types': ['extension'] |
- } |
+ }, |
+ 'mergingDependencies1': { |
+ 'channel': 'stable', |
+ 'extension_types': 'all' |
+ }, |
+ 'mergingDependencies2': { |
+ 'channel': 'beta', |
+ 'extension_types': ['platform_app'] |
+ }, |
+ 'mergingDependencies3': { |
+ 'extension_types': ['extension'] |
+ }, |
+ 'defaults': {} |
}) |
}, |
'docs': { |
@@ -149,7 +241,7 @@ _TEST_FILESYSTEM = { |
}, |
'tabs': { |
'partial': 'permissions/tabs.html' |
- }, |
+ } |
}) |
} |
} |
@@ -167,155 +259,307 @@ class FeaturesBundleTest(unittest.TestCase): |
'background': { |
'name': 'background', |
'channel': 'stable', |
- 'platforms': ['extensions'], |
- 'documentation': 'background_pages.html' |
+ 'documentation': 'background_pages.html', |
+ 'extension_types': ['extension', 'legacy_packaged_app', 'hosted_app'] |
}, |
'inheritsPlatformAndChannelFromDependency': { |
- 'channel': 'dev', |
'name': 'inheritsPlatformAndChannelFromDependency', |
- 'platforms': ['extensions'] |
+ 'channel': 'dev', |
+ 'extension_types': ['extension'] |
}, |
'manifest_version': { |
'name': 'manifest_version', |
'channel': 'stable', |
- 'platforms': ['apps', 'extensions'], |
'documentation': 'manifest/manifest_version.html', |
+ 'extension_types': 'all', |
'level': 'required', |
- 'example': 2 |
+ 'example': 2, |
}, |
'omnibox': { |
'name': 'omnibox', |
'channel': 'stable', |
- 'platforms': ['extensions'] |
+ 'extension_types': ['extension'], |
+ 'platforms': ['win'], |
}, |
'page_action': { |
'name': 'page_action', |
'channel': 'stable', |
- 'platforms': ['extensions'], |
'documentation': 'pageAction.html', |
+ 'extension_types': ['extension'], |
'level': 'only_one', |
- 'example': {} |
+ 'example': {}, |
+ }, |
+ 'testDeep4': { |
+ 'name': 'testDeep4', |
+ 'channel': 'stable', |
+ 'extension_types': ['extension'] |
+ }, |
+ 'multipleAmbiguous': { |
+ 'name': 'multipleAmbiguous', |
+ 'channel': 'stable', |
+ 'extension_types': ['extension'] |
+ } |
+ } |
+ self.assertEqual( |
+ expected_features, |
+ self._server.platform_bundle.GetFeaturesBundle( |
+ 'extensions').GetManifestFeatures().Get()) |
+ expected_features = { |
+ 'manifest_version': { |
+ 'name': 'manifest_version', |
+ 'channel': 'stable', |
+ 'documentation': 'manifest/manifest_version.html', |
+ 'extension_types': 'all', |
+ 'level': 'required', |
+ 'example': 2, |
}, |
'sockets': { |
'name': 'sockets', |
'channel': 'dev', |
- 'platforms': ['apps'] |
+ 'extension_types': ['platform_app'] |
} |
} |
self.assertEqual( |
expected_features, |
- self._server.features_bundle.GetManifestFeatures().Get()) |
+ self._server.platform_bundle.GetFeaturesBundle( |
+ 'apps').GetManifestFeatures().Get()) |
def testPermissionFeatures(self): |
expected_features = { |
- 'bluetooth': { |
- 'name': 'bluetooth', |
- 'channel': 'dev', |
- 'platforms': ['apps'], |
- }, |
- 'fakeUnsupportedFeature': { |
- 'name': 'fakeUnsupportedFeature', |
- 'platforms': [] |
+ 'power': { |
+ 'name': 'power', |
+ 'channel': 'stable', |
+ 'extension_types': ['extension', 'legacy_packaged_app', 'platform_app'] |
}, |
'overridesPlatformAndChannelFromDependency': { |
'name': 'overridesPlatformAndChannelFromDependency', |
'channel': 'stable', |
- 'platforms': ['extensions'] |
+ 'extension_types': ['extension'] |
+ }, |
+ 'tabs': { |
+ 'name': 'tabs', |
+ 'channel': 'stable', |
+ 'extension_types': ['extension'], |
+ 'partial': 'permissions/tabs.html' |
+ }, |
+ 'mergingDependencies1': { |
+ 'name': 'mergingDependencies1', |
+ 'channel': 'stable', |
+ 'extension_types': 'all' |
+ }, |
+ 'mergingDependencies3': { |
+ 'name': 'mergingDependencies3', |
+ 'channel': 'stable', |
+ 'extension_types': ['extension'] |
+ }, |
+ 'defaults': { |
+ 'name': 'defaults', |
+ 'channel': 'stable' |
+ } |
+ } |
+ self.assertEqual( |
+ expected_features, |
+ self._server.platform_bundle.GetFeaturesBundle( |
+ 'extensions').GetPermissionFeatures().Get()) |
+ expected_features = { |
+ 'bluetooth': { |
+ 'name': 'bluetooth', |
+ 'channel': 'dev', |
+ 'extension_types': ['platform_app'] |
}, |
'power': { |
'name': 'power', |
'channel': 'stable', |
- 'platforms': ['apps', 'extensions'], |
+ 'extension_types': ['extension', 'legacy_packaged_app', 'platform_app'] |
}, |
'syncFileSystem': { |
'name': 'syncFileSystem', |
- 'channel': 'beta', |
- 'platforms': ['apps'], |
+ 'channel': 'stable', |
+ 'extension_types': ['platform_app'], |
'partial': 'permissions/sync_file_system.html' |
}, |
- 'tabs': { |
- 'name': 'tabs', |
+ 'mergingDependencies1': { |
+ 'name': 'mergingDependencies1', |
'channel': 'stable', |
- 'platforms': ['extensions'], |
- 'partial': 'permissions/tabs.html' |
+ 'extension_types': 'all' |
+ }, |
+ 'mergingDependencies2': { |
+ 'name': 'mergingDependencies2', |
+ 'channel': 'beta', |
+ 'extension_types': ['platform_app'] |
+ }, |
+ 'defaults': { |
+ 'name': 'defaults', |
+ 'channel': 'stable' |
} |
} |
self.assertEqual( |
expected_features, |
- self._server.features_bundle.GetPermissionFeatures().Get()) |
+ self._server.platform_bundle.GetFeaturesBundle( |
+ 'apps').GetPermissionFeatures().Get()) |
def testAPIFeatures(self): |
expected_features = { |
- 'audioCapture': { |
- 'name': 'audioCapture', |
- 'channel': 'stable', |
- 'platforms': ['apps'] |
- }, |
'background': { |
'name': 'background', |
'channel': 'stable', |
- 'platforms': ['extensions'] |
+ 'extension_types': ['extension'] |
+ }, |
+ 'omnibox': { |
+ 'name': 'omnibox', |
+ 'contexts': ['blessed_extension'], |
+ 'dependencies': ['manifest:omnibox'], |
+ 'channel': 'stable' |
+ }, |
+ 'tabs': { |
+ 'name': 'tabs', |
+ 'channel': 'stable', |
+ 'contexts': ['blessed_extension'], |
+ 'extension_types': ['extension', 'legacy_packaged_app'], |
+ }, |
+ 'test': { |
+ 'name': 'test', |
+ 'channel': 'stable', |
+ 'contexts': [ |
+ 'blessed_extension', 'unblessed_extension', 'content_script'], |
+ 'extension_types': 'all', |
+ }, |
+ 'windows': { |
+ 'name': 'windows', |
+ 'contexts': ['blessed_extension'], |
+ 'dependencies': ['api:tabs'], |
+ 'channel': 'stable' |
+ }, |
+ 'testDeep1': { |
+ 'name': 'testDeep1', |
+ 'dependencies': ['api:testDeep2'], |
+ 'channel': 'stable' |
+ }, |
+ 'testDeep2': { |
+ 'name': 'testDeep2', |
+ 'dependencies': ['api:testDeep3'], |
+ 'channel': 'stable' |
+ }, |
+ 'testDeep3': { |
+ 'name': 'testDeep3', |
+ 'dependencies': ['manifest:testDeep4'], |
+ 'channel': 'stable' |
+ }, |
+ 'testDeep1.child': { |
+ 'name': 'testDeep1.child', |
+ 'channel': 'stable', |
+ 'dependencies': ['api:testDeep2'] |
+ }, |
+ 'multipleAmbiguous': { |
+ 'name': 'multipleAmbiguous', |
+ 'value': 2, |
+ 'dependencies': ['manifest:multipleAmbiguous'], |
+ 'channel': 'stable' |
+ }, |
+ 'mergingDependencies2': { |
+ 'name': 'mergingDependencies2', |
+ 'dependencies': [ |
+ 'permission:mergingDependencies1', |
+ 'permission:mergingDependencies3' |
+ ], |
+ 'channel': 'stable' |
}, |
'inheritsFromDifferentDependencyName': { |
'channel': 'dev', |
'name': 'inheritsFromDifferentDependencyName', |
'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'], |
- 'platforms': ['extensions'] |
}, |
'inheritsPlatformAndChannelFromDependency': { |
'channel': 'dev', |
'name': 'inheritsPlatformAndChannelFromDependency', |
'dependencies': ['manifest:inheritsPlatformAndChannelFromDependency'], |
- 'platforms': ['extensions'] |
}, |
- 'omnibox': { |
+ 'implicitNoParent.child': { |
+ 'name': 'implicitNoParent.child', |
'channel': 'stable', |
- 'name': 'omnibox', |
- 'platforms': ['extensions'], |
- 'contexts': ['blessed_extension'], |
- 'dependencies': ['manifest:omnibox'] |
+ 'extension_types': ['extension'], |
}, |
- 'overridesPlatformAndChannelFromDependency': { |
+ 'parent': { |
+ 'name': 'parent', |
'channel': 'beta', |
- 'name': 'overridesPlatformAndChannelFromDependency', |
- 'dependencies': [ |
- 'permission:overridesPlatformAndChannelFromDependency' |
- ], |
- 'platforms': ['apps'] |
+ 'extension_types': ['extension'], |
}, |
- 'syncFileSystem': { |
- 'channel': 'beta', |
- 'name': 'syncFileSystem', |
- 'platforms': ['apps'], |
- 'contexts': ['blessed_extension'], |
- 'dependencies': ['permission:syncFileSystem'] |
+ 'parent.explicitNoParent': { |
+ 'name': 'parent.explicitNoParent', |
+ 'channel': 'stable', |
+ 'extension_types': ['extension'], |
+ 'noparent': True |
}, |
- 'tabs': { |
+ 'parent.inheritAndOverride': { |
+ 'name': 'parent.inheritAndOverride', |
+ 'channel': 'dev', |
+ 'extension_types': ['extension'] |
+ }, |
+ 'mergeMostStableChannel': { |
+ 'name': 'mergeMostStableChannel', |
'channel': 'stable', |
- 'name': 'tabs', |
+ 'extension_types': ['extension'], |
+ 'value2': 2, |
+ 'value4': 4, |
+ 'value5': 5 |
+ } |
+ } |
+ self.assertEqual( |
+ expected_features, |
+ self._server.platform_bundle.GetFeaturesBundle( |
+ 'extensions').GetAPIFeatures().Get()) |
+ expected_features = { |
+ 'audioCapture': { |
+ 'name': 'audioCapture', |
'channel': 'stable', |
- 'platforms': ['extensions'], |
+ 'extension_types': ['platform_app'] |
+ }, |
+ 'syncFileSystem': { |
+ 'name': 'syncFileSystem', |
'contexts': ['blessed_extension'], |
+ 'dependencies': ['permission:syncFileSystem'], |
+ 'channel': 'stable' |
}, |
'test': { |
- 'channel': 'stable', |
'name': 'test', |
'channel': 'stable', |
- 'platforms': ['apps', 'extensions'], |
'contexts': [ |
'blessed_extension', 'unblessed_extension', 'content_script'], |
+ 'extension_types': 'all', |
}, |
- 'windows': { |
+ 'multipleAmbiguous': { |
+ 'name': 'multipleAmbiguous', |
'channel': 'stable', |
- 'name': 'windows', |
- 'platforms': ['extensions'], |
- 'contexts': ['blessed_extension'], |
- 'dependencies': ['api:tabs'] |
+ 'extension_types': ['platform_app'], |
+ 'value': 1, |
+ }, |
+ 'mergingDependencies1': { |
+ 'name': 'mergingDependencies1', |
+ 'channel': 'beta', |
+ 'dependencies': [ |
+ 'permission:mergingDependencies1', |
+ 'permission:mergingDependencies2' |
+ ], |
+ }, |
+ 'overridesPlatformAndChannelFromDependency': { |
+ 'name': 'overridesPlatformAndChannelFromDependency', |
+ 'channel': 'beta', |
+ 'dependencies': [ |
+ 'permission:overridesPlatformAndChannelFromDependency' |
+ ], |
+ 'extension_types': ['platform_app'] |
+ }, |
+ 'overridePlatform': { |
+ 'name': 'overridePlatform', |
+ 'channel': 'stable', |
+ 'dependencies': ['permission:tabs'], |
+ 'extension_types': 'platform_app' |
} |
} |
self.assertEqual( |
expected_features, |
- self._server.features_bundle.GetAPIFeatures().Get()) |
+ self._server.platform_bundle.GetFeaturesBundle( |
+ 'apps').GetAPIFeatures().Get()) |
if __name__ == '__main__': |