Chromium Code Reviews| 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 aaea1ab2a1e50fa4b28bc6fb70cf8be6624ab855..cb5ac3f7b3c6853bd86d057fa1ebdb68424944a3 100644 |
| --- a/chrome/common/extensions/docs/server2/api_data_source.py |
| +++ b/chrome/common/extensions/docs/server2/api_data_source.py |
| @@ -8,11 +8,12 @@ import os |
| import posixpath |
| from data_source import DataSource |
| -from docs_server_utils import StringIdentity |
| +from docs_server_utils import StringIdentity, MarkFirst, MarkLast |
| from environment import IsPreviewServer, IsReleaseServer |
| from extensions_paths import JSON_TEMPLATES, PRIVATE_TEMPLATES |
| from file_system import FileNotFoundError |
| from future import Future, Collect |
| +from operator import itemgetter |
| from platform_util import GetPlatforms |
| import third_party.json_schema_compiler.json_parse as json_parse |
| import third_party.json_schema_compiler.model as model |
| @@ -266,12 +267,14 @@ class _JSCModel(object): |
| ''' |
| def __init__(self, |
| + content_script_apis, |
| namespace, |
| availability_finder, |
| json_cache, |
| template_cache, |
| features_bundle, |
| event_byname_future): |
| + self._content_script_apis = content_script_apis |
| self._availability = availability_finder.GetAPIAvailability(namespace.name) |
| self._current_node = _APINodeCursor(availability_finder, namespace.name) |
| self._api_availabilities = json_cache.GetFromFile( |
| @@ -544,7 +547,7 @@ class _JSCModel(object): |
| intro_rows = [ |
| self._GetIntroDescriptionRow(), |
| self._GetIntroAvailabilityRow() |
| - ] + self._GetIntroDependencyRows() |
| + ] + self._GetIntroDependencyRows() + self._GetIntroContentScriptRow() |
| # Add rows using data from intro_tables.json, overriding any existing rows |
| # if they share the same 'title' attribute. |
| @@ -574,6 +577,25 @@ class _JSCModel(object): |
| 'version': version |
| } |
| + def _GetIntroContentScriptRow(self): |
| + content_script_support = self._content_script_apis.get(self._namespace.name) |
| + if content_script_support is None: |
| + return [] |
| + if content_script_support.restrictedTo: |
|
ahernandez
2014/07/16 20:35:34
Should this code be moved into a function somewher
not at google - send to devlin
2014/07/21 17:51:19
maybe, though I can't think of an appropriate plac
|
| + content_script_support.restrictedTo.sort(key=itemgetter('node')) |
| + MarkFirst(content_script_support.restrictedTo) |
| + MarkLast(content_script_support.restrictedTo) |
| + return [{ |
| + 'title': 'Content Scripts', |
| + 'content': [{ |
| + 'partial': self._template_cache.GetFromFile( |
| + posixpath.join(PRIVATE_TEMPLATES, |
| + 'intro_tables', |
| + 'content_scripts.html')).Get(), |
| + 'contentScriptSupport': content_script_support.__dict__ |
| + }] |
| + }] |
| + |
| def _GetIntroDescriptionRow(self): |
| ''' Generates the 'Description' row data for an API intro table. |
| ''' |
| @@ -733,13 +755,15 @@ class APIDataSource(DataSource): |
| def _GetSchemaModel(self, platform, api_name): |
| object_store_key = '/'.join((platform, api_name)) |
| + api_models = self._platform_bundle.GetAPIModels(platform) |
| jsc_model_future = self._model_cache.Get(object_store_key) |
| - model_future = self._platform_bundle.GetAPIModels(platform).GetModel( |
| - api_name) |
| + model_future = api_models.GetModel(api_name) |
| + content_script_apis_future = api_models.GetContentScriptAPIs() |
| def resolve(): |
| jsc_model = jsc_model_future.Get() |
| if jsc_model is None: |
| jsc_model = _JSCModel( |
| + content_script_apis_future.Get(), |
| model_future.Get(), |
| self._platform_bundle.GetAvailabilityFinder(platform), |
| self._json_cache, |