| 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
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..842ee0922f7e0cc733c646e5b6ead4b1aa6653ad
|
| --- /dev/null
|
| +++ b/chrome/common/extensions/docs/server2/features_bundle_test.py
|
| @@ -0,0 +1,260 @@
|
| +#!/usr/bin/env python
|
| +# Copyright 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +import json
|
| +import unittest
|
| +
|
| +from server_instance import ServerInstance
|
| +from test_file_system import TestFileSystem
|
| +
|
| +_TEST_FILESYSTEM = {
|
| + 'api': {
|
| + '_api_features.json': json.dumps({
|
| + 'audioCapture': {
|
| + 'channel': 'stable',
|
| + 'extension_types': ['platform_app']
|
| + },
|
| + 'background': [
|
| + {
|
| + 'channel': 'stable',
|
| + 'extension_types': ['extension']
|
| + },
|
| + {
|
| + 'channel': 'stable',
|
| + 'extension_types': ['platform_app'],
|
| + 'whitelist': ['im not here']
|
| + }
|
| + ],
|
| + 'omnibox': {
|
| + 'dependencies': ['manifest:omnibox'],
|
| + 'contexts': ['blessed_extension']
|
| + },
|
| + 'syncFileSystem': {
|
| + 'dependencies': ['permission:syncFileSystem'],
|
| + 'contexts': ['blessed_extension']
|
| + },
|
| + 'tabs': {
|
| + 'channel': 'stable',
|
| + 'extension_types': ['extension', 'legacy_packaged_app'],
|
| + 'contexts': ['blessed_extension']
|
| + },
|
| + 'test': {
|
| + 'channel': 'stable',
|
| + 'extension_types': 'all',
|
| + 'contexts': [
|
| + 'blessed_extension', 'unblessed_extension', 'content_script']
|
| + },
|
| + 'windows': {
|
| + 'dependencies': ['api:tabs'],
|
| + 'contexts': ['blessed_extension']
|
| + }
|
| + }),
|
| + '_manifest_features.json': json.dumps({
|
| + 'app.content_security_policy': {
|
| + 'channel': 'stable',
|
| + 'extension_types': ['platform_app'],
|
| + 'min_manifest_version': 2,
|
| + 'whitelist': ['this isnt happening']
|
| + },
|
| + 'background': {
|
| + 'channel': 'stable',
|
| + 'extension_types': ['extension', 'legacy_packaged_app', 'hosted_app']
|
| + },
|
| + 'manifest_version': {
|
| + 'channel': 'stable',
|
| + 'extension_types': 'all'
|
| + },
|
| + 'omnibox': {
|
| + 'channel': 'stable',
|
| + 'extension_types': ['extension']
|
| + },
|
| + 'page_action': {
|
| + 'channel': 'stable',
|
| + 'extension_types': ['extension']
|
| + },
|
| + 'sockets': {
|
| + 'channel': 'dev',
|
| + 'extension_types': ['platform_app']
|
| + }
|
| + }),
|
| + '_permission_features.json': json.dumps({
|
| + 'bluetooth': {
|
| + 'channel': 'dev',
|
| + 'extension_types': ['platform_app']
|
| + },
|
| + 'power': {
|
| + 'channel': 'stable',
|
| + 'extension_types': [
|
| + 'extension', 'legacy_packaged_app', 'platform_app'
|
| + ]
|
| + },
|
| + 'syncFileSystem': {
|
| + 'channel': 'stable',
|
| + 'extension_types': ['platform_app']
|
| + },
|
| + 'tabs': {
|
| + 'channel': 'stable',
|
| + 'extension_types': ['extension']
|
| + }
|
| + })
|
| + },
|
| + 'docs': {
|
| + 'templates': {
|
| + 'json': {
|
| + 'manifest.json': json.dumps({
|
| + 'background': {
|
| + 'documentation': 'background_pages.html'
|
| + },
|
| + 'manifest_version': {
|
| + 'documentation': 'manifest/manifest_version.html',
|
| + 'example': 2,
|
| + 'level': 'required'
|
| + },
|
| + 'page_action': {
|
| + 'documentation': 'pageAction.html',
|
| + 'example': {},
|
| + 'level': 'only_one'
|
| + }
|
| + }),
|
| + 'permissions.json': json.dumps({
|
| + 'fakeUnsupportedFeature': {},
|
| + 'syncFileSystem': {
|
| + 'partial': 'permissions/sync_file_system.html'
|
| + },
|
| + 'tabs': {
|
| + 'partial': 'permissions/tabs.html'
|
| + },
|
| + })
|
| + }
|
| + }
|
| + }
|
| +}
|
| +
|
| +class FeaturesBundleTest(unittest.TestCase):
|
| + def setUp(self):
|
| + self._server = ServerInstance.ForTest(TestFileSystem(_TEST_FILESYSTEM))
|
| +
|
| + def testManifestFeatures(self):
|
| + expected_features = {
|
| + 'background': {
|
| + 'name': 'background',
|
| + 'channel': 'stable',
|
| + 'platforms': ['extensions'],
|
| + 'documentation': 'background_pages.html'
|
| + },
|
| + 'manifest_version': {
|
| + 'name': 'manifest_version',
|
| + 'channel': 'stable',
|
| + 'platforms': ['apps', 'extensions'],
|
| + 'documentation': 'manifest/manifest_version.html',
|
| + 'level': 'required',
|
| + 'example': 2
|
| + },
|
| + 'omnibox': {
|
| + 'name': 'omnibox',
|
| + 'channel': 'stable',
|
| + 'platforms': ['extensions']
|
| + },
|
| + 'page_action': {
|
| + 'name': 'page_action',
|
| + 'channel': 'stable',
|
| + 'platforms': ['extensions'],
|
| + 'documentation': 'pageAction.html',
|
| + 'level': 'only_one',
|
| + 'example': {}
|
| + },
|
| + 'sockets': {
|
| + 'name': 'sockets',
|
| + 'channel': 'dev',
|
| + 'platforms': ['apps']
|
| + }
|
| + }
|
| + self.assertEqual(
|
| + expected_features,
|
| + self._server.features_bundle.GetManifestFeatures())
|
| +
|
| + def testPermissionFeatures(self):
|
| + expected_features = {
|
| + 'bluetooth': {
|
| + 'name': 'bluetooth',
|
| + 'channel': 'dev',
|
| + 'platforms': ['apps'],
|
| + },
|
| + 'fakeUnsupportedFeature': {
|
| + 'name': 'fakeUnsupportedFeature',
|
| + 'platforms': []
|
| + },
|
| + 'power': {
|
| + 'name': 'power',
|
| + 'channel': 'stable',
|
| + 'platforms': ['apps', 'extensions'],
|
| + },
|
| + 'syncFileSystem': {
|
| + 'name': 'syncFileSystem',
|
| + 'channel': 'stable',
|
| + 'platforms': ['apps'],
|
| + 'partial': 'permissions/sync_file_system.html'
|
| + },
|
| + 'tabs': {
|
| + 'name': 'tabs',
|
| + 'channel': 'stable',
|
| + 'platforms': ['extensions'],
|
| + 'partial': 'permissions/tabs.html'
|
| + }
|
| + }
|
| + self.assertEqual(
|
| + expected_features,
|
| + self._server.features_bundle.GetPermissionFeatures())
|
| +
|
| + def testAPIFeatures(self):
|
| + expected_features = {
|
| + 'audioCapture': {
|
| + 'name': 'audioCapture',
|
| + 'channel': 'stable',
|
| + 'platforms': ['apps']
|
| + },
|
| + 'background': {
|
| + 'name': 'background',
|
| + 'channel': 'stable',
|
| + 'platforms': ['extensions']
|
| + },
|
| + 'omnibox': {
|
| + 'name': 'omnibox',
|
| + 'platforms': ['extensions'],
|
| + 'contexts': ['blessed_extension'],
|
| + 'dependencies': ['manifest:omnibox']
|
| + },
|
| + 'syncFileSystem': {
|
| + 'name': 'syncFileSystem',
|
| + 'platforms': ['apps'],
|
| + 'contexts': ['blessed_extension'],
|
| + 'dependencies': ['permission:syncFileSystem']
|
| + },
|
| + 'tabs': {
|
| + 'name': 'tabs',
|
| + 'channel': 'stable',
|
| + 'platforms': ['extensions'],
|
| + 'contexts': ['blessed_extension'],
|
| + },
|
| + 'test': {
|
| + 'name': 'test',
|
| + 'channel': 'stable',
|
| + 'platforms': ['apps', 'extensions'],
|
| + 'contexts': [
|
| + 'blessed_extension', 'unblessed_extension', 'content_script'],
|
| + },
|
| + 'windows': {
|
| + 'name': 'windows',
|
| + 'platforms': ['extensions'],
|
| + 'contexts': ['blessed_extension'],
|
| + 'dependencies': ['api:tabs']
|
| + }
|
| + }
|
| + self.assertEqual(
|
| + expected_features,
|
| + self._server.features_bundle.GetAPIFeatures())
|
| +
|
| +if __name__ == '__main__':
|
| + unittest.main()
|
|
|