Index: chrome/common/extensions/docs/server2/manifest_data_source.py |
diff --git a/chrome/common/extensions/docs/server2/manifest_data_source.py b/chrome/common/extensions/docs/server2/manifest_data_source.py |
index ac4d99cfd94b6bea0dc467c3ca719c88f783a4b8..9daa5bbac7be0bbd8d18750249dac19c4126ed63 100644 |
--- a/chrome/common/extensions/docs/server2/manifest_data_source.py |
+++ b/chrome/common/extensions/docs/server2/manifest_data_source.py |
@@ -6,6 +6,7 @@ import json |
from data_source import DataSource |
import features_utility |
+from future import Gettable, Future |
from manifest_features import ConvertDottedKeysToNested |
from third_party.json_schema_compiler.json_parse import Parse |
@@ -105,27 +106,29 @@ class ManifestDataSource(DataSource): |
ManifestDataSource) |
def _CreateManifestData(self): |
- def for_templates(manifest_features, platform): |
- return _AddLevelAnnotations( |
- _ListifyAndSortDocs( |
- ConvertDottedKeysToNested( |
- features_utility.Filtered(manifest_features, platform)), |
- app_name=platform.capitalize())) |
- manifest_features = self._features_bundle.GetManifestFeatures() |
- return { |
- 'apps': for_templates(manifest_features, 'apps'), |
- 'extensions': for_templates(manifest_features, 'extensions') |
- } |
- |
- def _GetCachedManifestData(self, force_update=False): |
+ future_manifest_features = self._features_bundle.GetManifestFeatures() |
+ def resolve(): |
+ manifest_features = future_manifest_features.Get() |
+ def for_templates(manifest_features, platform): |
+ return _AddLevelAnnotations(_ListifyAndSortDocs( |
+ ConvertDottedKeysToNested( |
+ features_utility.Filtered(manifest_features, platform)), |
+ app_name=platform.capitalize())) |
+ return { |
+ 'apps': for_templates(manifest_features, 'apps'), |
+ 'extensions': for_templates(manifest_features, 'extensions') |
+ } |
+ return Future(delegate=Gettable(resolve)) |
+ |
+ def _GetCachedManifestData(self): |
data = self._object_store.Get('manifest_data').Get() |
- if data is None or force_update: |
- data = self._CreateManifestData() |
+ if data is None: |
+ data = self._CreateManifestData().Get() |
self._object_store.Set('manifest_data', data) |
return data |
def Cron(self): |
- self._GetCachedManifestData(force_update=True) |
+ return self._CreateManifestData() |
def get(self, key): |
return self._GetCachedManifestData().get(key) |