| 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__':
|
|
|