| Index: chrome/common/extensions/docs/server2/permissions_data_source.py
|
| diff --git a/chrome/common/extensions/docs/server2/permissions_data_source.py b/chrome/common/extensions/docs/server2/permissions_data_source.py
|
| index 7ee3056e14c9b556d1010b7300d45bbc59a058e7..072ec8c360f4cb75fefb1c0126130a4cfaefaa94 100644
|
| --- a/chrome/common/extensions/docs/server2/permissions_data_source.py
|
| +++ b/chrome/common/extensions/docs/server2/permissions_data_source.py
|
| @@ -7,6 +7,7 @@ from operator import itemgetter
|
|
|
| from data_source import DataSource
|
| import features_utility as features
|
| +from future import Gettable, Future
|
| from svn_constants import PRIVATE_TEMPLATE_PATH
|
| from third_party.json_schema_compiler.json_parse import Parse
|
|
|
| @@ -50,38 +51,39 @@ class PermissionsDataSource(DataSource):
|
| server_instance.host_file_system_provider.GetTrunk())
|
|
|
| def _CreatePermissionsData(self):
|
| - api_features = self._features_bundle.GetAPIFeatures()
|
| - permission_features = self._features_bundle.GetPermissionFeatures()
|
| + api_features_future = self._features_bundle.GetAPIFeatures()
|
| + permission_features_future = self._features_bundle.GetPermissionFeatures()
|
| + def resolve():
|
| + permission_features = permission_features_future.Get()
|
| + _AddDependencyDescriptions(permission_features, api_features_future.Get())
|
|
|
| - def filter_for_platform(permissions, platform):
|
| - return _ListifyPermissions(features.Filtered(permissions, platform))
|
| + # Turn partial templates into descriptions, ensure anchors are set.
|
| + for permission in permission_features.values():
|
| + if not 'anchor' in permission:
|
| + permission['anchor'] = permission['name']
|
| + if 'partial' in permission:
|
| + permission['description'] = self._template_cache.GetFromFile('%s/%s' %
|
| + (PRIVATE_TEMPLATE_PATH, permission['partial'])).Get()
|
| + del permission['partial']
|
|
|
| - _AddDependencyDescriptions(permission_features, api_features)
|
| - # Turn partial templates into descriptions, ensure anchors are set.
|
| - for permission in permission_features.values():
|
| - if not 'anchor' in permission:
|
| - permission['anchor'] = permission['name']
|
| - if 'partial' in permission:
|
| - permission['description'] = self._template_cache.GetFromFile('%s/%s' %
|
| - (PRIVATE_TEMPLATE_PATH, permission['partial'])).Get()
|
| - del permission['partial']
|
| -
|
| - return {
|
| - 'declare_apps': filter_for_platform(permission_features, 'apps'),
|
| - 'declare_extensions': filter_for_platform(
|
| - permission_features, 'extensions')
|
| - }
|
| + def filter_for_platform(permissions, platform):
|
| + return _ListifyPermissions(features.Filtered(permissions, platform))
|
| + return {
|
| + 'declare_apps': filter_for_platform(permission_features, 'apps'),
|
| + 'declare_extensions': filter_for_platform(
|
| + permission_features, 'extensions')
|
| + }
|
| + return Future(delegate=Gettable(resolve))
|
|
|
| def _GetCachedPermissionsData(self):
|
| data = self._object_store.Get('permissions_data').Get()
|
| if data is None:
|
| - data = self._CreatePermissionsData()
|
| + data = self._CreatePermissionsData().Get()
|
| self._object_store.Set('permissions_data', data)
|
| return data
|
|
|
| def Cron(self):
|
| - # TODO(kalman): Implement this.
|
| - pass
|
| + return self._CreatePermissionsData()
|
|
|
| def get(self, key):
|
| return self._GetCachedPermissionsData().get(key)
|
|
|