Index: chrome/common/extensions/docs/server2/api_data_source.py |
diff --git a/chrome/common/extensions/docs/server2/api_data_source.py b/chrome/common/extensions/docs/server2/api_data_source.py |
index d3806e58cb6a5110fcc626707e6ea89010b6dfd5..c28dbe815c545efe4744dbf2bd022ffe64ba90d3 100644 |
--- a/chrome/common/extensions/docs/server2/api_data_source.py |
+++ b/chrome/common/extensions/docs/server2/api_data_source.py |
@@ -9,9 +9,8 @@ from docs_server_utils import StringIdentity |
from environment import IsPreviewServer |
from file_system import FileNotFoundError |
from future import Future, All |
-from jsc_view import JSCView, GetEventByNameFromEvents |
+from jsc_view import CreateJSCView, GetEventByNameFromEvents |
from platform_util import GetPlatforms |
-from samples_data_source import CreateSamplesView |
class APIDataSource(DataSource): |
@@ -51,10 +50,18 @@ class APIDataSource(DataSource): |
jsc_view_future = self._view_cache.Get(object_store_key) |
model_future = api_models.GetModel(api_name) |
content_script_apis_future = api_models.GetContentScriptAPIs() |
+ |
+ # Parsing samples on the preview server takes forever, so disable it. |
+ if IsPreviewServer(): |
+ samples_futures = Future(value=[]) |
+ else: |
+ samples_future = (self._platform_bundle.GetSamplesModel(platform) |
+ .FilterSamples(api_name)) |
+ |
def resolve(): |
jsc_view = jsc_view_future.Get() |
if jsc_view is None: |
- jsc_view = JSCView( |
+ jsc_view = CreateJSCView( |
content_script_apis_future.Get(), |
model_future.Get(), |
self._platform_bundle.GetAvailabilityFinder(platform), |
@@ -62,33 +69,19 @@ class APIDataSource(DataSource): |
self._template_cache, |
self._platform_bundle.GetFeaturesBundle(platform), |
self._LoadEventByName(platform), |
- platform).ToDict() |
+ platform, |
+ samples_future.Get(), |
+ self._request) |
self._view_cache.Set(object_store_key, jsc_view) |
return jsc_view |
return Future(callback=resolve) |
- def _GetImpl(self, platform, api_name): |
- jsc_view_future = self._GetSchemaView(platform, api_name) |
- def resolve(): |
- jsc_view = jsc_view_future.Get() |
- # Parsing samples on the preview server takes seconds and doesn't add |
- # anything. Don't do it. |
- if not IsPreviewServer(): |
- samples_model = self._platform_bundle.GetSamplesModel(platform) |
- # Creates an object that lazily gets samples. |
- jsc_view['samples'] = type('getter', (object,), { |
- 'get': lambda _, platform: CreateSamplesView( |
- samples_model.FilterSamples(jsc_view['name']), self._request) |
- })() |
- return jsc_view |
- return Future(callback=resolve) |
- |
def get(self, platform): |
'''Return a getter object so that templates can perform lookups such |
as apis.extensions.runtime. |
''' |
getter = lambda: 0 |
- getter.get = lambda api_name: self._GetImpl(platform, api_name).Get() |
+ getter.get = lambda api_name: self._GetSchemaView(platform, api_name).Get() |
return getter |
def GetRefreshPaths(self): |
@@ -102,5 +95,5 @@ class APIDataSource(DataSource): |
def Refresh(self, path): |
platform, api = path.split('/') |
logging.info('Refreshing %s/%s' % (platform, api)) |
- future = self._GetImpl(platform, api) |
+ future = self._GetSchemaView(platform, api) |
return All([future], except_pass=FileNotFoundError) |