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

Side by Side Diff: chrome/common/extensions/docs/server2/api_models.py

Issue 532423002: Inlining references to internal APIs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing extensionTypes from chrome api features (still in extension api features) Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import posixpath 5 import posixpath
6 6
7 from compiled_file_system import Cache, SingleFile, Unicode 7 from compiled_file_system import Cache, SingleFile, Unicode
8 from extensions_paths import API_PATHS 8 from extensions_paths import API_PATHS
9 from features_bundle import HasParent, GetParentName 9 from features_bundle import HasParent, GetParentName
10 from file_system import FileNotFoundError 10 from file_system import FileNotFoundError
11 from future import All, Future, Race 11 from future import All, Future, Race
12 from operator import itemgetter 12 from operator import itemgetter
13 from path_util import Join 13 from path_util import Join
14 from platform_util import PlatformToExtensionType 14 from platform_util import PlatformToExtensionType
15 from schema_util import ProcessSchema 15 from process_schema import ProcessSchema, ProcessSchemaFactory
16 from third_party.json_schema_compiler.json_schema import DeleteNodes 16 from third_party.json_schema_compiler.json_schema import DeleteNodes
17 from third_party.json_schema_compiler.model import Namespace, UnixName 17 from third_party.json_schema_compiler.model import Namespace, UnixName
18 18
19 19
20 def GetNodeCategories(): 20 def GetNodeCategories():
21 '''Returns a tuple of the possible categories a node may belong to. 21 '''Returns a tuple of the possible categories a node may belong to.
22 ''' 22 '''
23 return ('types', 'functions', 'events', 'properties') 23 return ('types', 'functions', 'events', 'properties')
24 24
25 25
(...skipping 24 matching lines...) Expand all
50 50
51 class APIModels(object): 51 class APIModels(object):
52 '''Tracks APIs and their Models. 52 '''Tracks APIs and their Models.
53 ''' 53 '''
54 54
55 def __init__(self, 55 def __init__(self,
56 features_bundle, 56 features_bundle,
57 compiled_fs_factory, 57 compiled_fs_factory,
58 file_system, 58 file_system,
59 object_store_creator, 59 object_store_creator,
60 platform): 60 platform,
61 process_schema_factory):
61 self._features_bundle = features_bundle 62 self._features_bundle = features_bundle
62 self._platform = PlatformToExtensionType(platform) 63 self._platform = PlatformToExtensionType(platform)
63 self._model_cache = compiled_fs_factory.Create( 64 self._model_cache = compiled_fs_factory.Create(
64 file_system, self._CreateAPIModel, APIModels, category=self._platform) 65 file_system, self._CreateAPIModel, APIModels, category=self._platform)
65 self._object_store = object_store_creator.Create(APIModels) 66 self._object_store = object_store_creator.Create(APIModels)
67 self._process_schema = Future(callback=lambda:
68 process_schema_factory.Create(False))
66 69
67 @Cache 70 @Cache
68 @SingleFile 71 @SingleFile
69 @Unicode 72 @Unicode
70 def _CreateAPIModel(self, path, data): 73 def _CreateAPIModel(self, path, data):
71 def does_not_include_platform(node): 74 def does_not_include_platform(node):
72 return ('extension_types' in node and 75 return ('extension_types' in node and
73 node['extension_types'] != 'all' and 76 node['extension_types'] != 'all' and
74 self._platform not in node['extension_types']) 77 self._platform not in node['extension_types'])
75 78
76 schema = ProcessSchema(path, data)[0] 79 schema = self._process_schema.Get().Process(path, data)[0]
77 if not schema: 80 if not schema:
78 raise ValueError('No schema for %s' % path) 81 raise ValueError('No schema for %s' % path)
79 return Namespace(DeleteNodes( 82 return Namespace(DeleteNodes(
80 schema, matcher=does_not_include_platform), schema['namespace']) 83 schema, matcher=does_not_include_platform), path)
81 84
82 def GetNames(self): 85 def GetNames(self):
83 # API names appear alongside some of their methods/events/etc in the 86 # API names appear alongside some of their methods/events/etc in the
84 # features file. APIs are those which either implicitly or explicitly have 87 # features file. APIs are those which either implicitly or explicitly have
85 # no parent feature (e.g. app, app.window, and devtools.inspectedWindow are 88 # no parent feature (e.g. app, app.window, and devtools.inspectedWindow are
86 # APIs; runtime.onConnectNative is not). 89 # APIs; runtime.onConnectNative is not).
87 api_features = self._features_bundle.GetAPIFeatures().Get() 90 api_features = self._features_bundle.GetAPIFeatures().Get()
88 return [name for name, feature in api_features.iteritems() 91 return [name for name, feature in api_features.iteritems()
89 if not HasParent(name, feature, api_features)] 92 if not HasParent(name, feature, api_features)]
90 93
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 177
175 def IterModels(self): 178 def IterModels(self):
176 future_models = [(name, self.GetModel(name)) for name in self.GetNames()] 179 future_models = [(name, self.GetModel(name)) for name in self.GetNames()]
177 for name, future_model in future_models: 180 for name, future_model in future_models:
178 try: 181 try:
179 model = future_model.Get() 182 model = future_model.Get()
180 except FileNotFoundError: 183 except FileNotFoundError:
181 continue 184 continue
182 if model: 185 if model:
183 yield name, model 186 yield name, model
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698