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) |