Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / docs / server2 / features_bundle_test.py
index 2806e08..4cb0eb0 100755 (executable)
@@ -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__':