Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3559)

Unified Diff: chrome/common/extensions/docs/server2/availability_finder.py

Issue 385703005: Docserver: Modify doc inlining so all relevant data is present in availability_finder.py (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Final nit Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/server2/availability_finder.py
diff --git a/chrome/common/extensions/docs/server2/availability_finder.py b/chrome/common/extensions/docs/server2/availability_finder.py
index b1c98529d2170c9306a7202d2edc81c7b08063d5..63245f29819bd128c58e9a83f874110051d46295 100644
--- a/chrome/common/extensions/docs/server2/availability_finder.py
+++ b/chrome/common/extensions/docs/server2/availability_finder.py
@@ -6,9 +6,11 @@ import posixpath
from api_schema_graph import APISchemaGraph
from branch_utility import BranchUtility, ChannelInfo
+from compiled_file_system import CompiledFileSystem, SingleFile, Unicode
from extensions_paths import API_PATHS, JSON_TEMPLATES
from features_bundle import FeaturesBundle
from file_system import FileNotFoundError
+from schema_util import ProcessSchema
from third_party.json_schema_compiler.memoize import memoize
from third_party.json_schema_compiler.model import UnixName
@@ -142,6 +144,21 @@ class AvailabilityFinder(object):
return AvailabilityInfo(
self._branch_utility.GetChannelInfo(api_info['channel']))
+ @memoize
+ def _CreateAPISchemaFileSystem(self, file_system):
+ '''Creates a CompiledFileSystem for parsing raw JSON or IDL API schema
+ data and formatting it so that it can be used to create APISchemaGraphs.
+ '''
+ # When processing the API schemas, we retain inlined types in the schema
+ # so that there are not missing nodes in the APISchemaGraphs when trying
+ # to lookup availability.
+ def process_schema(path, data):
+ return ProcessSchema(path, data, retain_inlined_types=True)
+ return self._compiled_fs_factory.Create(file_system,
+ SingleFile(Unicode(process_schema)),
+ CompiledFileSystem,
+ category='api-schema')
+
def _GetAPISchema(self, api_name, file_system, version):
'''Searches |file_system| for |api_name|'s API schema data, and processes
and returns it if found.
@@ -151,7 +168,7 @@ class AvailabilityFinder(object):
# No file for the API could be found in the given |file_system|.
return None
- schema_fs = self._compiled_fs_factory.ForAPISchema(file_system)
+ schema_fs = self._CreateAPISchemaFileSystem(file_system)
api_schemas = schema_fs.GetFromFile(api_filename).Get()
matching_schemas = [api for api in api_schemas
if api['namespace'] == api_name]
« no previous file with comments | « chrome/common/extensions/docs/server2/app.yaml ('k') | chrome/common/extensions/docs/server2/availability_finder_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698