| Index: chrome/common/extensions/docs/server2/api_list_data_source.py
|
| diff --git a/chrome/common/extensions/docs/server2/api_list_data_source.py b/chrome/common/extensions/docs/server2/api_list_data_source.py
|
| index e3f8697014c57ce68f381ed08da5f7d3e40d316e..3a9c4f5e93692207bc472e8a67492e93d1616a18 100644
|
| --- a/chrome/common/extensions/docs/server2/api_list_data_source.py
|
| +++ b/chrome/common/extensions/docs/server2/api_list_data_source.py
|
| @@ -32,22 +32,24 @@ class APIListDataSource(DataSource):
|
|
|
| def _GenerateAPIDict(self):
|
| def make_list_for_content_scripts():
|
| - content_script_apis = self._platform_bundle.GetAPIModels(
|
| - 'extensions').GetContentScriptAPIs().Get()
|
| - content_script_apis_list = [csa.__dict__ for api_name, csa
|
| - in content_script_apis.iteritems()
|
| - if self._platform_bundle.GetAPICategorizer(
|
| - 'extensions').IsDocumented(api_name)]
|
| + def convert_to_list(content_script_apis):
|
| + content_script_apis_list = [csa.__dict__ for api_name, csa
|
| + in content_script_apis.iteritems()
|
| + if self._platform_bundle.GetAPICategorizer(
|
| + 'extensions').IsDocumented(api_name)]
|
| + content_script_apis_list.sort(key=itemgetter('name'))
|
| + for csa in content_script_apis_list:
|
| + restricted_nodes = csa['restrictedTo']
|
| + if restricted_nodes:
|
| + restricted_nodes.sort(key=itemgetter('node'))
|
| + MarkFirstAndLast(restricted_nodes)
|
| + else:
|
| + del csa['restrictedTo']
|
| + return content_script_apis_list
|
|
|
| - content_script_apis_list.sort(key=itemgetter('name'))
|
| - for csa in content_script_apis_list:
|
| - restricted_nodes = csa['restrictedTo']
|
| - if restricted_nodes:
|
| - restricted_nodes.sort(key=itemgetter('node'))
|
| - MarkFirstAndLast(restricted_nodes)
|
| - else:
|
| - del csa['restrictedTo']
|
| - return content_script_apis_list
|
| + return (self._platform_bundle.GetAPIModels('extensions')
|
| + .GetContentScriptAPIs()
|
| + .Then(convert_to_list))
|
|
|
| def make_dict_for_platform(platform):
|
| platform_dict = {
|
| @@ -95,20 +97,24 @@ class APIListDataSource(DataSource):
|
| platform_dict[key] = apis
|
|
|
| return platform_dict
|
| - api_dict = dict((platform, make_dict_for_platform(platform))
|
| - for platform in GetPlatforms())
|
| - api_dict['contentScripts'] = make_list_for_content_scripts()
|
| - return api_dict
|
| +
|
| + def make_api_dict(content_script_apis):
|
| + api_dict = dict((platform, make_dict_for_platform(platform))
|
| + for platform in GetPlatforms())
|
| + api_dict['contentScripts'] = content_script_apis
|
| + return api_dict
|
| +
|
| + return make_list_for_content_scripts().Then(make_api_dict)
|
|
|
| def _GetCachedAPIData(self):
|
| - data_future = self._object_store.Get('api_data')
|
| - def resolve():
|
| - data = data_future.Get()
|
| + def persist_and_return(data):
|
| + self._object_store.Set('api_data', data)
|
| + return data
|
| + def return_or_generate(data):
|
| if data is None:
|
| - data = self._GenerateAPIDict()
|
| - self._object_store.Set('api_data', data)
|
| + return self._GenerateAPIDict().Then(persist_and_return)
|
| return data
|
| - return Future(callback=resolve)
|
| + return self._object_store.Get('api_data').Then(return_or_generate)
|
|
|
| def get(self, key):
|
| return self._GetCachedAPIData().Get().get(key)
|
|
|