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

Side by Side Diff: tools/dom/scripts/systemhtml.py

Issue 12082122: Add supported checks to the SVG library, and library cleanup. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « tools/dom/scripts/monitored.py ('k') | tools/dom/scripts/systemnative.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
3 # for details. All rights reserved. Use of this source code is governed by a 3 # for details. All rights reserved. Use of this source code is governed by a
4 # BSD-style license that can be found in the LICENSE file. 4 # BSD-style license that can be found in the LICENSE file.
5 5
6 """This module provides shared functionality for the system to generate 6 """This module provides shared functionality for the system to generate
7 Dart:html APIs from the IDL database.""" 7 Dart:html APIs from the IDL database."""
8 8
9 import emitter 9 import emitter
10 import os 10 import os
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 'Window.document', 62 'Window.document',
63 'Window.indexedDB', 63 'Window.indexedDB',
64 'Window.location', 64 'Window.location',
65 'Window.open', 65 'Window.open',
66 'Window.requestAnimationFrame', 66 'Window.requestAnimationFrame',
67 'Window.webkitCancelAnimationFrame', 67 'Window.webkitCancelAnimationFrame',
68 'Window.webkitRequestAnimationFrame', 68 'Window.webkitRequestAnimationFrame',
69 'WorkerContext.indexedDB', 69 'WorkerContext.indexedDB',
70 ]) 70 ])
71 71
72 js_support_checks = {
73 'ArrayBuffer': "JS('bool', 'typeof window.ArrayBuffer != \"undefined\"')",
74 'Database': "JS('bool', '!!(window.openDatabase)')",
75 'DOMApplicationCache': "JS('bool', '!!(window.applicationCache)')",
76 'DOMFileSystem': "JS('bool', '!!(window.webkitRequestFileSystem)')",
77 'HashChangeEvent': "Event._isTypeSupported('HashChangeEvent')",
78 'HTMLContentElement': "Element.isTagSupported('content')",
79 'HTMLDataListElement': "Element.isTagSupported('datalist')",
80 'HTMLDetailsElement': "Element.isTagSupported('details')",
81 'HTMLEmbedElement': "Element.isTagSupported('embed')",
82 # IE creates keygen as Block elements
83 'HTMLKeygenElement': "Element.isTagSupported('keygen') "
84 "&& (new Element.tag('keygen') is KeygenElement)",
85 'HTMLMeterElement': "Element.isTagSupported('meter')",
86 'HTMLObjectElement': "Element.isTagSupported('object')",
87 'HTMLOutputElement': "Element.isTagSupported('output')",
88 'HTMLProgressElement': "Element.isTagSupported('progress')",
89 'HTMLShadowElement': "Element.isTagSupported('shadow')",
90 'HTMLTrackElement': "Element.isTagSupported('track')",
91 'MediaStreamEvent': "Event._isTypeSupported('MediaStreamEvent')",
92 'MediaStreamTrackEvent': "Event._isTypeSupported('MediaStreamTrackEvent')",
93 'NotificationCenter': "JS('bool', '!!(window.webkitNotifications)')",
94 'Performance': "JS('bool', '!!(window.performance)')",
95 'SpeechRecognition': "JS('bool', '!!(window.SpeechRecognition || "
96 "window.webkitSpeechRecognition)')",
97 'XMLHttpRequestProgressEvent':
98 "Event._isTypeSupported('XMLHttpRequestProgressEvent')",
99 'WebGLRenderingContext': "JS('bool', '!!(window.WebGLRenderingContext)')",
100 'WebKitCSSMatrix': "JS('bool', '!!(window.WebKitCSSMatrix)')",
101 'WebKitPoint': "JS('bool', '!!(window.WebKitPoint)')",
102 'WebSocket': "JS('bool', 'typeof window.WebSocket != \"undefined\"')",
103 'XSLTProcessor': "JS('bool', '!!(window.XSLTProcessor)')",
104 }
105
106 # Classes that offer only static methods, and therefore we should suppress 72 # Classes that offer only static methods, and therefore we should suppress
107 # constructor creation. 73 # constructor creation.
108 _static_classes = set(['Url']) 74 _static_classes = set(['Url'])
109 75
110 # Information for generating element constructors. 76 # Information for generating element constructors.
111 # 77 #
112 # TODO(sra): maybe remove all the argument complexity and use cascades. 78 # TODO(sra): maybe remove all the argument complexity and use cascades.
113 # 79 #
114 # var c = new CanvasElement(width: 100, height: 70); 80 # var c = new CanvasElement(width: 100, height: 70);
115 # var c = new CanvasElement()..width = 100..height = 70; 81 # var c = new CanvasElement()..width = 100..height = 70;
(...skipping 17 matching lines...) Expand all
133 info.js_name = None 99 info.js_name = None
134 info.type_name = interface_name 100 info.type_name = interface_name
135 info.param_infos = map(lambda tXn: ParamInfo(tXn[1], tXn[0], True), 101 info.param_infos = map(lambda tXn: ParamInfo(tXn[1], tXn[0], True),
136 self.opt_params) 102 self.opt_params)
137 info.requires_named_arguments = True 103 info.requires_named_arguments = True
138 info.factory_parameters = ['"%s"' % self.tag] 104 info.factory_parameters = ['"%s"' % self.tag]
139 info.pure_dart_constructor = True 105 info.pure_dart_constructor = True
140 return info 106 return info
141 107
142 _html_element_constructors = { 108 _html_element_constructors = {
143 'AnchorElement' : 109 'HTMLAnchorElement' :
144 ElementConstructorInfo(tag='a', opt_params=[('DOMString', 'href')]), 110 ElementConstructorInfo(tag='a', opt_params=[('DOMString', 'href')]),
145 'AreaElement': 'area', 111 'HTMLAreaElement': 'area',
146 'ButtonElement': 'button', 112 'HTMLButtonElement': 'button',
147 'BRElement': 'br', 113 'HTMLBRElement': 'br',
148 'BaseElement': 'base', 114 'HTMLBaseElement': 'base',
149 'BodyElement': 'body', 115 'HTMLBodyElement': 'body',
150 'ButtonElement': 'button', 116 'HTMLButtonElement': 'button',
151 'CanvasElement': 117 'HTMLCanvasElement':
152 ElementConstructorInfo(tag='canvas', 118 ElementConstructorInfo(tag='canvas',
153 opt_params=[('int', 'width'), ('int', 'height')]), 119 opt_params=[('int', 'width'), ('int', 'height')]),
154 'ContentElement': 'content', 120 'HTMLContentElement': 'content',
155 'DataListElement': 'datalist', 121 'HTMLDataListElement': 'datalist',
156 'DListElement': 'dl', 122 'HTMLDListElement': 'dl',
157 'DetailsElement': 'details', 123 'HTMLDetailsElement': 'details',
158 'DivElement': 'div', 124 'HTMLDivElement': 'div',
159 'EmbedElement': 'embed', 125 'HTMLEmbedElement': 'embed',
160 'FieldSetElement': 'fieldset', 126 'HTMLFieldSetElement': 'fieldset',
161 'FormElement': 'form', 127 'HTMLFormElement': 'form',
162 'HRElement': 'hr', 128 'HTMLHRElement': 'hr',
163 'HeadElement': 'head', 129 'HTMLHeadElement': 'head',
164 'HeadingElement': [ElementConstructorInfo('h1'), 130 'HTMLHeadingElement': [ElementConstructorInfo('h1'),
165 ElementConstructorInfo('h2'), 131 ElementConstructorInfo('h2'),
166 ElementConstructorInfo('h3'), 132 ElementConstructorInfo('h3'),
167 ElementConstructorInfo('h4'), 133 ElementConstructorInfo('h4'),
168 ElementConstructorInfo('h5'), 134 ElementConstructorInfo('h5'),
169 ElementConstructorInfo('h6')], 135 ElementConstructorInfo('h6')],
170 'HtmlElement': 'html', 136 'HTMLHtmlElement': 'html',
171 'IFrameElement': 'iframe', 137 'HTMLIFrameElement': 'iframe',
172 'ImageElement': 138 'HTMLImageElement':
173 ElementConstructorInfo(tag='img', 139 ElementConstructorInfo(tag='img',
174 opt_params=[('DOMString', 'src'), 140 opt_params=[('DOMString', 'src'),
175 ('int', 'width'), ('int', 'height')]), 141 ('int', 'width'), ('int', 'height')]),
176 'KeygenElement': 'keygen', 142 'HTMLKeygenElement': 'keygen',
177 'LIElement': 'li', 143 'HTMLLIElement': 'li',
178 'LabelElement': 'label', 144 'HTMLLabelElement': 'label',
179 'LegendElement': 'legend', 145 'HTMLLegendElement': 'legend',
180 'LinkElement': 'link', 146 'HTMLLinkElement': 'link',
181 'MapElement': 'map', 147 'HTMLMapElement': 'map',
182 'MenuElement': 'menu', 148 'HTMLMenuElement': 'menu',
183 'MeterElement': 'meter', 149 'HTMLMeterElement': 'meter',
184 'OListElement': 'ol', 150 'HTMLOListElement': 'ol',
185 'ObjectElement': 'object', 151 'HTMLObjectElement': 'object',
186 'OptGroupElement': 'optgroup', 152 'HTMLOptGroupElement': 'optgroup',
187 'OutputElement': 'output', 153 'HTMLOutputElement': 'output',
188 'ParagraphElement': 'p', 154 'HTMLParagraphElement': 'p',
189 'ParamElement': 'param', 155 'HTMLParamElement': 'param',
190 'PreElement': 'pre', 156 'HTMLPreElement': 'pre',
191 'ProgressElement': 'progress', 157 'HTMLProgressElement': 'progress',
192 'ScriptElement': 'script', 158 'HTMLScriptElement': 'script',
193 'SelectElement': 'select', 159 'HTMLSelectElement': 'select',
194 'SourceElement': 'source', 160 'HTMLSourceElement': 'source',
195 'SpanElement': 'span', 161 'HTMLSpanElement': 'span',
196 'StyleElement': 'style', 162 'HTMLStyleElement': 'style',
197 'TableCaptionElement': 'caption', 163 'HTMLTableCaptionElement': 'caption',
198 'TableCellElement': 'td', 164 'HTMLTableCellElement': 'td',
199 'TableColElement': 'col', 165 'HTMLTableColElement': 'col',
200 'TableElement': 'table', 166 'HTMLTableElement': 'table',
201 'TableRowElement': 'tr', 167 'HTMLTableRowElement': 'tr',
202 #'TableSectionElement' <thead> <tbody> <tfoot> 168 #'HTMLTableSectionElement' <thead> <tbody> <tfoot>
203 'TextAreaElement': 'textarea', 169 'HTMLTextAreaElement': 'textarea',
204 'TitleElement': 'title', 170 'HTMLTitleElement': 'title',
205 'TrackElement': 'track', 171 'HTMLTrackElement': 'track',
206 'UListElement': 'ul', 172 'HTMLUListElement': 'ul',
207 'VideoElement': 'video' 173 'HTMLVideoElement': 'video'
208 } 174 }
209 175
210 _svg_element_constructors = { 176 _svg_element_constructors = {
211 'AElement': 'a', 177 'SVGAElement': 'a',
212 'AnimateColorElement': 'animateColor', 178 'SVGAltGlyphElement': 'altGlyph',
213 'AnimateElement': 'animate', 179 'SVGAnimateElement': 'animate',
214 'AnimateMotionElement': 'animateMotion', 180 'SVGAnimateMotionElement': 'animateMotion',
215 'AnimateTransformElement': 'animateTransform', 181 'SVGAnimateTransformElement': 'animateTransform',
216 'AnimationElement': 'animation', 182 'SVGAnimationElement': 'animation',
217 'CircleElement': 'circle', 183 'SVGCircleElement': 'circle',
218 'ClipPathElement': 'clipPath', 184 'SVGClipPathElement': 'clipPath',
219 'CursorElement': 'cursor', 185 'SVGCursorElement': 'cursor',
220 'DefsElement': 'defs', 186 'SVGDefsElement': 'defs',
221 'DescElement': 'desc', 187 'SVGDescElement': 'desc',
222 'EllipseElement': 'ellipse', 188 'SVGEllipseElement': 'ellipse',
223 'FilterElement': 'filter', 189 'SVGFEBlendElement': 'feBlend',
224 'FontElement': 'font', 190 'SVGFEColorMatrixElement': 'feColorMatrix',
225 'FontFaceElement': 'font-face', 191 'SVGFEComponentTransferElement': 'feComponentTransfer',
226 'FontFaceFormatElement': 'font-face-format', 192 'SVGFEConvolveMatrixElement': 'feConvolveMatrix',
227 'FontFaceNameElement': 'font-face-name', 193 'SVGFEDiffuseLightingElement': 'feDiffuseLighting',
228 'FontFaceSrcElement': 'font-face-src', 194 'SVGFEDisplacementMapElement': 'feDisplacementMap',
229 'FontFaceUriElement': 'font-face-uri', 195 'SVGFEDistantLightElement': 'feDistantLight',
230 'ForeignObjectElement': 'foreignObject', 196 'SVGFEFloodElement': 'feFlood',
231 'GlyphElement': 'glyph', 197 'SVGFEFuncAElement': 'feFuncA',
232 'GElement': 'g', 198 'SVGFEFuncBElement': 'feFuncB',
233 'HKernElement': 'hkern', 199 'SVGFEFuncGElement': 'feFuncG',
234 'ImageElement': 'image', 200 'SVGFEFuncRElement': 'feFuncR',
235 'LinearGradientElement': 'linearGradient', 201 'SVGFEGaussianBlurElement': 'feGaussianBlur',
236 'LineElement': 'line', 202 'SVGFEImageElement': 'feImage',
237 'MarkerElement': 'marker', 203 'SVGFEMergeElement': 'feMerge',
238 'MaskElement': 'mask', 204 'SVGFEMergeNodeElement': 'feMergeNode',
239 'MPathElement': 'mpath', 205 'SVGFEMorphology': 'feMorphology',
240 'PathElement': 'path', 206 'SVGFEOffsetElement': 'feOffset',
241 'PatternElement': 'pattern', 207 'SVGFEPointLightElement': 'fePointLight',
242 'PolygonElement': 'polygon', 208 'SVGFESpecularLightingElement': 'feSpecularLighting',
243 'PolylineElement': 'polyline', 209 'SVGFESpotLightElement': 'feSpotLight',
244 'RadialGradientElement': 'radialGradient', 210 'SVGFETileElement': 'feTile',
245 'RectElement': 'rect', 211 'SVGFETurbulenceElement': 'feTurbulence',
246 'ScriptElement': 'script', 212 'SVGFilterElement': 'filter',
247 'SetElement': 'set', 213 'SVGForeignObjectElement': 'foreignObject',
248 'StopElement': 'stop', 214 'SVGGlyphElement': 'glyph',
249 'StyleElement': 'style', 215 'SVGGElement': 'g',
250 'SwitchElement': 'switch', 216 'SVGHKernElement': 'hkern',
251 'SymbolElement': 'symbol', 217 'SVGImageElement': 'image',
252 'TextElement': 'text', 218 'SVGLinearGradientElement': 'linearGradient',
253 'TitleElement': 'title', 219 'SVGLineElement': 'line',
254 'TRefElement': 'tref', 220 'SVGMarkerElement': 'marker',
255 'TSpanElement': 'tspan', 221 'SVGMaskElement': 'mask',
256 'UseElement': 'use', 222 'SVGMPathElement': 'mpath',
257 'ViewElement': 'view', 223 'SVGPathElement': 'path',
258 'VKernElement': 'vkern', 224 'SVGPatternElement': 'pattern',
225 'SVGPolygonElement': 'polygon',
226 'SVGPolylineElement': 'polyline',
227 'SVGRadialGradientElement': 'radialGradient',
228 'SVGRectElement': 'rect',
229 'SVGScriptElement': 'script',
230 'SVGSetElement': 'set',
231 'SVGStopElement': 'stop',
232 'SVGStyleElement': 'style',
233 'SVGSwitchElement': 'switch',
234 'SVGSymbolElement': 'symbol',
235 'SVGTextElement': 'text',
236 'SVGTitleElement': 'title',
237 'SVGTRefElement': 'tref',
238 'SVGTSpanElement': 'tspan',
239 'SVGUseElement': 'use',
240 'SVGViewElement': 'view',
241 'SVGVKernElement': 'vkern',
259 } 242 }
260 243
261 _element_constructors = { 244 _element_constructors = {
262 'html': _html_element_constructors, 245 'html': _html_element_constructors,
263 'indexed_db': {}, 246 'indexed_db': {},
264 'svg': _svg_element_constructors, 247 'svg': _svg_element_constructors,
265 'web_audio': {}, 248 'web_audio': {},
266 } 249 }
267 250
268 _factory_ctr_strings = { 251 _factory_ctr_strings = {
(...skipping 24 matching lines...) Expand all
293 return [] 276 return []
294 infos = element_constructors[typename] 277 infos = element_constructors[typename]
295 if isinstance(infos, str): 278 if isinstance(infos, str):
296 infos = ElementConstructorInfo(tag=infos, 279 infos = ElementConstructorInfo(tag=infos,
297 factory_provider_name=factory_provider_name) 280 factory_provider_name=factory_provider_name)
298 if not isinstance(infos, list): 281 if not isinstance(infos, list):
299 infos = [infos] 282 infos = [infos]
300 return infos 283 return infos
301 284
302 # ------------------------------------------------------------------------------ 285 # ------------------------------------------------------------------------------
286 def SvgSupportStr(tagName):
287 return 'Svg%s' % ElemSupportStr(tagName)
288
289 def ElemSupportStr(tagName):
290 return "Element.isTagSupported('%s')" % tagName
291
292 _js_support_checks_basic_element_with_constructors = [
293 'HTMLContentElement',
294 'HTMLDataListElement',
295 'HTMLDetailsElement',
296 'HTMLEmbedElement',
297 'HTMLMeterElement',
298 'HTMLObjectElement',
299 'HTMLOutputElement',
300 'HTMLProgressElement',
301 'HTMLTrackElement',
302 ]
303
304 _js_support_checks_additional_element = [
305 # IE creates keygen as Block elements
306 'HTMLKeygenElement',
307 'SVGAltGlyphElement',
308 'SVGAnimateElement',
309 'SVGAnimateMotionElement',
310 'SVGAnimateTransformElement',
311 'SVGCursorElement',
312 'SVGFEBlendElement',
313 'SVGFEColorMatrixElement',
314 'SVGFEComponentTransferElement',
315 'SVGFEConvolveMatrixElement',
316 'SVGFEDiffuseLightingElement',
317 'SVGFEDisplacementMapElement',
318 'SVGFEDistantLightElement',
319 'SVGFEFloodElement',
320 'SVGFEFuncAElement',
321 'SVGFEFuncBElement',
322 'SVGFEFuncGElement',
323 'SVGFEFuncRElement',
324 'SVGFEGaussianBlurElement',
325 'SVGFEImageElement',
326 'SVGFEMergeElement',
327 'SVGFEMergeNodeElement',
328 'SVGFEMorphology',
329 'SVGFEOffsetElement',
330 'SVGFEPointLightElement',
331 'SVGFESpecularLightingElement',
332 'SVGFESpotLightElement',
333 'SVGFETileElement',
334 'SVGFETurbulenceElement',
335 'SVGFilterElement',
336 'SVGForeignObjectElement',
337 'SVGSetElement',
338 ]
339
340 js_support_checks = dict({
341 'ArrayBuffer': "JS('bool', 'typeof window.ArrayBuffer != \"undefined\"')",
342 'Database': "JS('bool', '!!(window.openDatabase)')",
343 'DOMApplicationCache': "JS('bool', '!!(window.applicationCache)')",
344 'DOMFileSystem': "JS('bool', '!!(window.webkitRequestFileSystem)')",
345 'HashChangeEvent': "Event._isTypeSupported('HashChangeEvent')",
346 'HTMLShadowElement': ElemSupportStr('shadow'),
347 'MediaStreamEvent': "Event._isTypeSupported('MediaStreamEvent')",
348 'MediaStreamTrackEvent': "Event._isTypeSupported('MediaStreamTrackEvent')",
349 'NotificationCenter': "JS('bool', '!!(window.webkitNotifications)')",
350 'Performance': "JS('bool', '!!(window.performance)')",
351 'SpeechRecognition': "JS('bool', '!!(window.SpeechRecognition || "
352 "window.webkitSpeechRecognition)')",
353 'SVGExternalResourcesRequired': ('supported(SvgElement element)',
354 "JS('bool', '#.externalResourcesRequired !== undefined && "
355 "#.externalResourcesRequired.animVal !== undefined', "
356 "element, element)"),
357 'SVGLangSpace': ('supported(SvgElement element)',
358 "JS('bool', '#.xmlspace !== undefined && #.xmllang !== undefined', "
359 "element, element)"),
360 'XMLHttpRequestProgressEvent':
361 "Event._isTypeSupported('XMLHttpRequestProgressEvent')",
362 'WebGLRenderingContext': "JS('bool', '!!(window.WebGLRenderingContext)')",
363 'WebKitCSSMatrix': "JS('bool', '!!(window.WebKitCSSMatrix)')",
364 'WebKitPoint': "JS('bool', '!!(window.WebKitPoint)')",
365 'WebSocket': "JS('bool', 'typeof window.WebSocket != \"undefined\"')",
366 'XSLTProcessor': "JS('bool', '!!(window.XSLTProcessor)')",
367 }.items() +
368 dict((key,
369 SvgSupportStr(_svg_element_constructors[key]) if key.startswith('SVG')
370 else ElemSupportStr(_html_element_constructors[key])) for key in
371 _js_support_checks_basic_element_with_constructors +
372 _js_support_checks_additional_element).items())
373 # ------------------------------------------------------------------------------
303 374
304 class HtmlDartInterfaceGenerator(object): 375 class HtmlDartInterfaceGenerator(object):
305 """Generates dart interface and implementation for the DOM IDL interface.""" 376 """Generates dart interface and implementation for the DOM IDL interface."""
306 377
307 def __init__(self, options, library_emitter, event_generator, interface, 378 def __init__(self, options, library_emitter, event_generator, interface,
308 backend): 379 backend):
309 self._renamer = options.renamer 380 self._renamer = options.renamer
310 self._database = options.database 381 self._database = options.database
311 self._template_loader = options.templates 382 self._template_loader = options.templates
312 self._type_registry = options.type_registry 383 self._type_registry = options.type_registry
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 if interface_name in _static_classes: 423 if interface_name in _static_classes:
353 constructor_info = None 424 constructor_info = None
354 else: 425 else:
355 constructor_info = AnalyzeConstructor(self._interface) 426 constructor_info = AnalyzeConstructor(self._interface)
356 if constructor_info: 427 if constructor_info:
357 constructors.append(constructor_info) 428 constructors.append(constructor_info)
358 # TODO(antonm): consider removing it later. 429 # TODO(antonm): consider removing it later.
359 factory_provider = interface_name 430 factory_provider = interface_name
360 431
361 # HTML Elements and SVG Elements have convenience constructors. 432 # HTML Elements and SVG Elements have convenience constructors.
362 infos = ElementConstructorInfos(interface_name, 433 infos = ElementConstructorInfos(self._interface.id,
363 _element_constructors[self._library_name], factory_provider_name= 434 _element_constructors[self._library_name], factory_provider_name=
364 _factory_ctr_strings[self._library_name]['provider_name']) 435 _factory_ctr_strings[self._library_name]['provider_name'])
365 436
366 if infos: 437 if infos:
367 factory_constructor_name = _factory_ctr_strings[ 438 factory_constructor_name = _factory_ctr_strings[
368 self._library_name]['constructor_name'] 439 self._library_name]['constructor_name']
369 440
370 for info in infos: 441 for info in infos:
371 constructors.append(info.ConstructorInfo(self._interface.id)) 442 constructors.append(info.ConstructorInfo(self._interface.id))
372 if factory_provider: 443 if factory_provider:
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 def StartInterface(self, members_emitter): 585 def StartInterface(self, members_emitter):
515 self._members_emitter = members_emitter 586 self._members_emitter = members_emitter
516 587
517 def FinishInterface(self): 588 def FinishInterface(self):
518 pass 589 pass
519 590
520 def HasSupportCheck(self): 591 def HasSupportCheck(self):
521 return self._interface.doc_js_name in js_support_checks 592 return self._interface.doc_js_name in js_support_checks
522 593
523 def GetSupportCheck(self): 594 def GetSupportCheck(self):
595 """Return a tuple of the support check function signature and the support
596 test itself. If no parameters are supplied, we assume the default."""
597 if self._interface.doc_js_name in _js_support_checks_additional_element:
598 if self._interface.doc_js_name in _svg_element_constructors:
599 lib_prefix = 'Svg'
600 constructors = _svg_element_constructors
601 else:
602 lib_prefix = ''
603 constructors = _html_element_constructors
604 return (js_support_checks.get(self._interface.doc_js_name) +
605 " && (new %sElement.tag('%s') is %s)" % (lib_prefix,
606 constructors[self._interface.doc_js_name],
607 self._renamer.RenameInterface(self._interface)))
524 return js_support_checks.get(self._interface.doc_js_name) 608 return js_support_checks.get(self._interface.doc_js_name)
525 609
526 def GenerateCustomFactory(self, constructor_info): 610 def GenerateCustomFactory(self, constructor_info):
527 # Custom factory will be taken from the template. 611 # Custom factory will be taken from the template.
528 return self._interface.doc_js_name in [ 612 return self._interface.doc_js_name in [
529 'AudioContext', 613 'AudioContext',
530 'Blob', 614 'Blob',
531 'MutationObserver', 615 'MutationObserver',
532 'SpeechRecognition', 616 'SpeechRecognition',
533 ] 617 ]
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
1020 for library_name in libraries: 1104 for library_name in libraries:
1021 self._libraries[library_name] = DartLibrary( 1105 self._libraries[library_name] = DartLibrary(
1022 library_name, template_loader, library_type, output_dir) 1106 library_name, template_loader, library_type, output_dir)
1023 1107
1024 def AddFile(self, basename, library_name, path): 1108 def AddFile(self, basename, library_name, path):
1025 self._libraries[library_name].AddFile(path) 1109 self._libraries[library_name].AddFile(path)
1026 1110
1027 def Emit(self, emitter, auxiliary_dir): 1111 def Emit(self, emitter, auxiliary_dir):
1028 for lib in self._libraries.values(): 1112 for lib in self._libraries.values():
1029 lib.Emit(emitter, auxiliary_dir) 1113 lib.Emit(emitter, auxiliary_dir)
OLDNEW
« no previous file with comments | « tools/dom/scripts/monitored.py ('k') | tools/dom/scripts/systemnative.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698