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

Side by Side Diff: client/dom/scripts/generator.py

Issue 9845043: Rename client/{dom,html} to lib/{dom,html} . (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 9 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 | « client/dom/scripts/fremontcutbuilder.py ('k') | client/dom/scripts/idlnode.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/python
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
4 # BSD-style license that can be found in the LICENSE file.
5
6 """This module provides shared functionality for systems to generate
7 Dart APIs from the IDL database."""
8
9 import re
10
11 # IDL->Dart primitive types conversion.
12 _idl_to_dart_type_conversions = {
13 'any': 'Object',
14 'any[]': 'List',
15 'custom': 'Dynamic',
16 'boolean': 'bool',
17 'DOMObject': 'Object',
18 'DOMString': 'String',
19 'DOMStringList': 'List<String>',
20 'DOMTimeStamp': 'int',
21 'Date': 'Date',
22 # Map to num to enable callers to pass in Dart int, rational
23 # types. Our implementations will need to convert these to
24 # doubles or floats as needed.
25 'double': 'num',
26 'float': 'num',
27 'int': 'int',
28 # Map to extra precision - int is a bignum in Dart.
29 'long': 'int',
30 'long long': 'int',
31 'object': 'Object',
32 # Map to extra precision - int is a bignum in Dart.
33 'short': 'int',
34 'string': 'String',
35 'void': 'void',
36 'Array': 'List',
37 'sequence': 'List',
38 # TODO(sra): Come up with some meaningful name so that where this appears in
39 # the documentation, the user is made aware that only a limited subset of
40 # serializable types are actually permitted.
41 'SerializedScriptValue': 'Dynamic',
42 # TODO(vsm): Automatically recognize types defined in src.
43 'TimeoutHandler': 'TimeoutHandler',
44 'RequestAnimationFrameCallback': 'RequestAnimationFrameCallback',
45
46 # TODO(sra): Flags is really a dictionary: {create:bool, exclusive:bool}
47 # http://dev.w3.org/2009/dap/file-system/file-dir-sys.html#the-flags-interfa ce
48 'WebKitFlags': 'Object',
49 }
50
51 _dart_to_idl_type_conversions = dict((v,k) for k, v in
52 _idl_to_dart_type_conversions.iteritems())
53
54 _pure_interfaces = set([
55 'ElementTimeControl',
56 'ElementTraversal',
57 'MediaQueryListListener',
58 'NodeSelector',
59 'SVGExternalResourcesRequired',
60 'SVGFilterPrimitiveStandardAttributes',
61 'SVGFitToViewBox',
62 'SVGLangSpace',
63 'SVGLocatable',
64 'SVGStylable',
65 'SVGTests',
66 'SVGTransformable',
67 'SVGURIReference',
68 'SVGViewSpec',
69 'SVGZoomAndPan'])
70
71 def IsPureInterface(interface_name):
72 return interface_name in _pure_interfaces
73
74 #
75 # Identifiers that are used in the IDL than need to be treated specially because
76 # *some* JavaScript processors forbid them as properties.
77 #
78 _javascript_keywords = ['delete', 'continue']
79
80 #
81 # Renames for attributes that have names that are not legal Dart names.
82 #
83 _dart_attribute_renames = {
84 'default': 'defaultValue',
85 'final': 'finalValue',
86 }
87
88 #
89 # Interface version of the DOM needs to delegate typed array constructors to a
90 # factory provider.
91 #
92 interface_factories = {
93 'Float32Array': '_TypedArrayFactoryProvider',
94 'Float64Array': '_TypedArrayFactoryProvider',
95 'Int8Array': '_TypedArrayFactoryProvider',
96 'Int16Array': '_TypedArrayFactoryProvider',
97 'Int32Array': '_TypedArrayFactoryProvider',
98 'Uint8Array': '_TypedArrayFactoryProvider',
99 'Uint16Array': '_TypedArrayFactoryProvider',
100 'Uint32Array': '_TypedArrayFactoryProvider',
101 'Uint8ClampedArray': '_TypedArrayFactoryProvider',
102 }
103
104 #
105 # Custom methods that must be implemented by hand.
106 #
107 _custom_methods = set([
108 ('DOMWindow', 'setInterval'),
109 ('DOMWindow', 'setTimeout'),
110 ('WorkerContext', 'setInterval'),
111 ('WorkerContext', 'setTimeout'),
112 ('CanvasRenderingContext2D', 'setFillStyle'),
113 ('CanvasRenderingContext2D', 'setStrokeStyle'),
114 ('CanvasRenderingContext2D', 'setFillStyle'),
115 ])
116
117 #
118 # Custom getters that must be implemented by hand.
119 #
120 _custom_getters = set([
121 ('DOMWindow', 'localStorage'),
122 ])
123
124 #
125 # Custom native specs for the Frog dom.
126 #
127 _frog_dom_custom_native_specs = {
128 # Decorate the singleton Console object, if present (workers do not have a
129 # console).
130 'Console': "=(typeof console == 'undefined' ? {} : console)",
131
132 # DOMWindow aliased with global scope.
133 'DOMWindow': '@*DOMWindow',
134 }
135
136 #
137 # Simple method substitution when one method had different names on different
138 # browsers, but are otherwise identical. The alternates are tried in order and
139 # the first one defined is used.
140 #
141 # This can be probably be removed when Chrome renames initWebKitWheelEvent to
142 # initWheelEvent.
143 #
144 _alternate_methods = {
145 ('WheelEvent', 'initWheelEvent'): ['initWebKitWheelEvent', 'initWheelEvent']
146 }
147
148 #
149 # Custom native bodies for frog implementations of dom operations that appear in
150 # dart:dom and dart:html. This is used to work-around the lack of a 'rename'
151 # feature in the 'native' string - the correct name is available on the DartName
152 # extended attribute. See Issue 1814
153 #
154 _dom_frog_native_typed_array_set_operation = """
155 if (offset == null) return this.set(array);
156 return this.set(array, offset);"""
157
158 dom_frog_native_bodies = {
159 'IDBCursor.continueFunction':
160 """
161 if (key == null) return this['continue']();
162 return this['continue'](key);
163 """,
164 'IDBIndex.getObject': """return this.get(key);""",
165 'IDBObjectStore.getObject': """return this.get(key);""",
166 'Float32Array.setElements': _dom_frog_native_typed_array_set_operation,
167 'Float64Array.setElements': _dom_frog_native_typed_array_set_operation,
168 'Int16Array.setElements': _dom_frog_native_typed_array_set_operation,
169 'Int32Array.setElements': _dom_frog_native_typed_array_set_operation,
170 'Int8Array.setElements': _dom_frog_native_typed_array_set_operation,
171 'Uint16Array.setElements': _dom_frog_native_typed_array_set_operation,
172 'Uint32Array.setElements': _dom_frog_native_typed_array_set_operation,
173 'Uint8Array.setElements': _dom_frog_native_typed_array_set_operation,
174 'Uint8ClampedArray.setElements': _dom_frog_native_typed_array_set_operation,
175 }
176
177
178 def ConvertPrimitiveType(type_name):
179 if type_name.startswith('unsigned '):
180 type_name = type_name[len('unsigned '):]
181
182 if type_name in _idl_to_dart_type_conversions:
183 # Primitive type conversion
184 return _idl_to_dart_type_conversions[type_name]
185 return None
186
187 def IsPrimitiveType(type_name):
188 return (ConvertPrimitiveType(type_name) is not None or
189 type_name in _dart_to_idl_type_conversions)
190
191 def MaybeListElementTypeName(type_name):
192 """Returns the List element type T from string of form "List<T>", or None."""
193 match = re.match(r'sequence<(\w*)>$', type_name)
194 if match:
195 return match.group(1)
196 return None
197
198 def MaybeListElementType(interface):
199 """Returns the List element type T, or None in interface does not implement
200 List<T>.
201 """
202 for parent in interface.parents:
203 element_type = MaybeListElementTypeName(parent.type.id)
204 if element_type:
205 return element_type
206 return None
207
208 def MaybeTypedArrayElementType(interface):
209 """Returns the typed array element type, or None in interface is not a
210 TypedArray.
211 """
212 # Typed arrays implement ArrayBufferView and List<T>.
213 for parent in interface.parents:
214 if parent.type.id == 'ArrayBufferView':
215 return MaybeListElementType(interface)
216 if parent.type.id == 'Uint8Array':
217 return 'int'
218 return None
219
220 def MakeNativeSpec(javascript_binding_name):
221 if javascript_binding_name in _frog_dom_custom_native_specs:
222 return _frog_dom_custom_native_specs[javascript_binding_name]
223 else:
224 # Make the class 'hidden' so it is dynamically patched at runtime. This
225 # is useful not only for browser compat, but to allow code that links
226 # against dart:dom to load in a worker isolate.
227 return '*' + javascript_binding_name
228
229
230 def MatchSourceFilter(filter, thing):
231 if not filter:
232 return True
233 else:
234 return any(token in thing.annotations for token in filter)
235
236 def DartType(idl_type_name):
237 match = re.match(r'sequence<(\w*)>$', idl_type_name)
238 if match:
239 return 'List<%s>' % GetIDLTypeInfo(match.group(1)).dart_type()
240 return GetIDLTypeInfo(idl_type_name).dart_type()
241
242 # Given a list of overloaded arguments, render a dart argument.
243 def _DartArg(args, interface):
244 # Given a list of overloaded arguments, choose a suitable name.
245 def OverloadedName(args):
246 return '_OR_'.join(sorted(set(arg.id for arg in args)))
247
248 # Given a list of overloaded arguments, choose a suitable type.
249 def OverloadedType(args):
250 typeIds = sorted(set(DartType(arg.type.id) for arg in args))
251 if len(typeIds) == 1:
252 return typeIds[0]
253 else:
254 return TypeName(typeIds, interface)
255
256 filtered = filter(None, args)
257 optional = any(not arg or arg.is_optional for arg in args)
258 type = OverloadedType(filtered)
259 name = OverloadedName(filtered)
260 if optional:
261 return (name, type, 'null')
262 else:
263 return (name, type, None)
264
265
266 def AnalyzeOperation(interface, operations):
267 """Makes operation calling convention decision for a set of overloads.
268
269 Returns: An OperationInfo object.
270 """
271
272 # Zip together arguments from each overload by position, then convert
273 # to a dart argument.
274 args = map(lambda *args: _DartArg(args, interface),
275 *(op.arguments for op in operations))
276
277 info = OperationInfo()
278 info.overloads = operations
279 info.declared_name = operations[0].id
280 info.name = operations[0].ext_attrs.get('DartName', info.declared_name)
281 info.js_name = info.declared_name
282 info.type_name = DartType(operations[0].type.id) # TODO: widen.
283 info.arg_infos = args
284 return info
285
286
287 def AnalyzeConstructor(interface):
288 """Returns an OperationInfo object for the constructor.
289
290 Returns None if the interface has no Constructor.
291 """
292 def GetArgs(func_value):
293 return map(lambda arg: _DartArg([arg], interface), func_value.arguments)
294
295 if 'Constructor' in interface.ext_attrs:
296 name = None
297 func_value = interface.ext_attrs.get('Constructor')
298 if func_value:
299 # [Constructor(param,...)]
300 args = GetArgs(func_value)
301 idl_args = func_value.arguments
302 else: # [Constructor]
303 args = []
304 idl_args = []
305 else:
306 func_value = interface.ext_attrs.get('NamedConstructor')
307 if func_value:
308 name = func_value.id
309 args = GetArgs(func_value)
310 idl_args = func_value.arguments
311 else:
312 return None
313
314 info = OperationInfo()
315 info.overloads = None
316 info.idl_args = idl_args
317 info.declared_name = name
318 info.name = name
319 info.js_name = name
320 info.type_name = interface.id
321 info.arg_infos = args
322 return info
323
324
325 def RecognizeCallback(interface):
326 """Returns the info for the callback method if the interface smells like a
327 callback.
328 """
329 if 'Callback' not in interface.ext_attrs: return None
330 handlers = [op for op in interface.operations if op.id == 'handleEvent']
331 if not handlers: return None
332 if not (handlers == interface.operations): return None
333 return AnalyzeOperation(interface, handlers)
334
335 def IsDartListType(type):
336 return type == 'List' or type.startswith('sequence<')
337
338 def IsDartCollectionType(type):
339 return IsDartListType(type)
340
341 def FindMatchingAttribute(interface, attr1):
342 matches = [attr2 for attr2 in interface.attributes
343 if attr1.id == attr2.id
344 and attr1.is_fc_getter == attr2.is_fc_getter
345 and attr1.is_fc_setter == attr2.is_fc_setter]
346 if matches:
347 assert len(matches) == 1
348 return matches[0]
349 return None
350
351
352 def DartDomNameOfAttribute(attr):
353 """Returns the Dart name for an IDLAttribute.
354
355 attr.id is the 'native' or JavaScript name.
356
357 To ensure uniformity, work with the true IDL name until as late a possible,
358 e.g. translate to the Dart name when generating Dart code.
359 """
360 name = attr.id
361 name = _dart_attribute_renames.get(name, name)
362 name = attr.ext_attrs.get('DartName', None) or name
363 return name
364
365 class OperationInfo(object):
366 """Holder for various derived information from a set of overloaded operations.
367
368 Attributes:
369 overloads: A list of IDL operation overloads with the same name.
370 name: A string, the simple name of the operation.
371 type_name: A string, the name of the return type of the operation.
372 arg_infos: A list of (name, type, default_value) tuples.
373 default_value is None for mandatory arguments.
374 """
375
376 def ParametersInterfaceDeclaration(self):
377 """Returns a formatted string declaring the parameters for the interface."""
378 return self._FormatArgs(self.arg_infos, True)
379
380 def ParametersImplementationDeclaration(self, rename_type=None):
381 """Returns a formatted string declaring the parameters for the
382 implementation.
383
384 Args:
385 rename_type: A function that allows the types to be renamed.
386 """
387 args = self.arg_infos
388 if rename_type:
389 args = [(name, rename_type(type), default)
390 for (name, type, default) in args]
391 return self._FormatArgs(args, False)
392
393 def ParametersAsArgumentList(self):
394 """Returns a formatted string declaring the parameters names as an argument
395 list.
396 """
397 return ', '.join(map(lambda arg_info: arg_info[0], self.arg_infos))
398
399 def _FormatArgs(self, args, is_interface):
400 def FormatArg(arg_info):
401 """Returns an argument declaration fragment for an argument info tuple."""
402 (name, type, default) = arg_info
403 if default:
404 return '%s %s = %s' % (type, name, default)
405 else:
406 return '%s %s' % (type, name)
407
408 required = []
409 optional = []
410 for (name, type, default) in args:
411 if default:
412 if is_interface:
413 optional.append((name, type, None)) # Default values illegal.
414 else:
415 optional.append((name, type, default))
416 else:
417 if optional:
418 raise Exception('Optional arguments cannot precede required ones: '
419 + str(args))
420 required.append((name, type, None))
421 argtexts = map(FormatArg, required)
422 if optional:
423 argtexts.append('[' + ', '.join(map(FormatArg, optional)) + ']')
424 return ', '.join(argtexts)
425
426
427 def AttributeOutputOrder(a, b):
428 """Canonical output ordering for attributes."""
429 # Getters before setters:
430 if a.id < b.id: return -1
431 if a.id > b.id: return 1
432 if a.is_fc_setter < b.is_fc_setter: return -1
433 if a.is_fc_setter > b.is_fc_setter: return 1
434 return 0
435
436 def ConstantOutputOrder(a, b):
437 """Canonical output ordering for constants."""
438 if a.id < b.id: return -1
439 if a.id > b.id: return 1
440 return 0
441
442
443 def _FormatNameList(names):
444 """Returns JavaScript array literal expression with one name per line."""
445 #names = sorted(names)
446 if len(names) <= 1:
447 expression_string = str(names) # e.g. ['length']
448 else:
449 expression_string = ',\n '.join(str(names).split(','))
450 expression_string = expression_string.replace('[', '[\n ')
451 return expression_string
452
453
454 def IndentText(text, indent):
455 """Format lines of text with indent."""
456 def FormatLine(line):
457 if line.strip():
458 return '%s%s\n' % (indent, line)
459 else:
460 return '\n'
461 return ''.join(FormatLine(line) for line in text.split('\n'))
462
463 # Given a sorted sequence of type identifiers, return an appropriate type
464 # name
465 def TypeName(typeIds, interface):
466 # Dynamically type this field for now.
467 return 'var'
468
469 # ------------------------------------------------------------------------------
470
471 class IDLTypeInfo(object):
472 def __init__(self, idl_type, dart_type=None, native_type=None, ref_counted=Tru e,
473 has_dart_wrapper=True, conversion_template=None,
474 custom_to_dart=False, conversion_includes=[]):
475 self._idl_type = idl_type
476 self._dart_type = dart_type
477 self._native_type = native_type
478 self._ref_counted = ref_counted
479 self._has_dart_wrapper = has_dart_wrapper
480 self._conversion_template = conversion_template
481 self._custom_to_dart = custom_to_dart
482 self._conversion_includes = conversion_includes
483
484 def idl_type(self):
485 return self._idl_type
486
487 def dart_type(self):
488 if self._dart_type:
489 return self._dart_type
490 return self._idl_type
491
492 def native_type(self):
493 if self._native_type:
494 return self._native_type
495 return self._idl_type
496
497 def parameter_adapter_info(self):
498 native_type = self.native_type()
499 if self._ref_counted:
500 native_type = 'RefPtr< %s >' % native_type
501 if self._has_dart_wrapper:
502 wrapper_type = 'Dart%s' % self.idl_type()
503 adapter_type = 'ParameterAdapter<%s, %s>' % (native_type, wrapper_type)
504 return (adapter_type, '"%s.h"' % wrapper_type)
505 return ('ParameterAdapter< %s >' % native_type, '"%s.h"' % self._idl_type)
506
507 def parameter_type(self):
508 return '%s*' % self.native_type()
509
510 def webcore_includes(self):
511 WTF_INCLUDES = [
512 'ArrayBuffer',
513 'ArrayBufferView',
514 'Float32Array',
515 'Float64Array',
516 'Int8Array',
517 'Int16Array',
518 'Int32Array',
519 'Uint8Array',
520 'Uint16Array',
521 'Uint32Array',
522 'Uint8ClampedArray',
523 ]
524
525 if self._idl_type in WTF_INCLUDES:
526 return ['<wtf/%s.h>' % self._idl_type]
527
528 if not self._idl_type.startswith('SVG'):
529 return ['"%s.h"' % self._idl_type]
530
531 if self._idl_type in ['SVGNumber', 'SVGPoint']:
532 return []
533 if self._idl_type.startswith('SVGPathSeg'):
534 include = self._idl_type.replace('Abs', '').replace('Rel', '')
535 else:
536 include = self._idl_type
537 return ['"%s.h"' % include] + _svg_supplemental_includes
538
539 def receiver(self):
540 return 'receiver->'
541
542 def conversion_includes(self):
543 return ['"Dart%s.h"' % include for include in [self.dart_type()] + self._con version_includes]
544
545 def conversion_cast(self, expression):
546 if self._conversion_template:
547 return self._conversion_template % expression
548 return expression
549
550 def custom_to_dart(self):
551 return self._custom_to_dart
552
553 class PrimitiveIDLTypeInfo(IDLTypeInfo):
554 def __init__(self, idl_type, dart_type, native_type=None, ref_counted=False,
555 conversion_template=None,
556 webcore_getter_name='getAttribute',
557 webcore_setter_name='setAttribute'):
558 super(PrimitiveIDLTypeInfo, self).__init__(idl_type, dart_type=dart_type,
559 native_type=native_type, ref_counted=ref_counted,
560 conversion_template=conversion_template)
561 self._webcore_getter_name = webcore_getter_name
562 self._webcore_setter_name = webcore_setter_name
563
564 def parameter_adapter_info(self):
565 native_type = self.native_type()
566 if self._ref_counted:
567 native_type = 'RefPtr< %s >' % native_type
568 return ('ParameterAdapter< %s >' % native_type, None)
569
570 def parameter_type(self):
571 if self.native_type() == 'String':
572 return 'const String&'
573 return self.native_type()
574
575 def conversion_includes(self):
576 return []
577
578 def webcore_getter_name(self):
579 return self._webcore_getter_name
580
581 def webcore_setter_name(self):
582 return self._webcore_setter_name
583
584 class SVGTearOffIDLTypeInfo(IDLTypeInfo):
585 def __init__(self, idl_type, native_type='', ref_counted=True):
586 super(SVGTearOffIDLTypeInfo, self).__init__(idl_type,
587 native_type=native_type,
588 ref_counted=ref_counted)
589
590 def native_type(self):
591 if self._native_type:
592 return self._native_type
593 tear_off_type = 'SVGPropertyTearOff'
594 if self._idl_type.endswith('List'):
595 tear_off_type = 'SVGListPropertyTearOff'
596 return '%s<%s>' % (tear_off_type, self._idl_type)
597
598 def receiver(self):
599 if self._idl_type.endswith('List'):
600 return 'receiver->'
601 return 'receiver->propertyReference().'
602
603
604 _idl_type_registry = {
605 # There is GC3Dboolean which is not a bool, but unsigned char for OpenGL com patibility.
606 'boolean': PrimitiveIDLTypeInfo('boolean', dart_type='bool', native_type='bo ol',
607 conversion_template='static_cast<bool>(%s)',
608 webcore_getter_name='hasAttribute',
609 webcore_setter_name='setBooleanAttribute'),
610 # Some IDL's unsigned shorts/shorts are mapped to WebCore C++ enums, so we
611 # use a static_cast<int> here not to provide overloads for all enums.
612 'short': PrimitiveIDLTypeInfo('short', dart_type='int', native_type='int',
613 conversion_template='static_cast<int>(%s)'),
614 'unsigned short': PrimitiveIDLTypeInfo('unsigned short', dart_type='int',
615 native_type='int', conversion_template='static_cast<int>(%s)'),
616 'int': PrimitiveIDLTypeInfo('int', dart_type='int'),
617 'unsigned int': PrimitiveIDLTypeInfo('unsigned int', dart_type='int',
618 native_type='unsigned'),
619 'long': PrimitiveIDLTypeInfo('long', dart_type='int', native_type='int',
620 webcore_getter_name='getIntegralAttribute',
621 webcore_setter_name='setIntegralAttribute'),
622 'unsigned long': PrimitiveIDLTypeInfo('unsigned long', dart_type='int',
623 native_type='unsigned',
624 webcore_getter_name='getUnsignedIntegralAttribute',
625 webcore_setter_name='setUnsignedIntegralAttribute'),
626 'long long': PrimitiveIDLTypeInfo('long long', dart_type='int'),
627 'unsigned long long': PrimitiveIDLTypeInfo('unsigned long long', dart_type=' int'),
628 'double': PrimitiveIDLTypeInfo('double', dart_type='num'),
629 'float': PrimitiveIDLTypeInfo('float', dart_type='num'),
630
631 'any': PrimitiveIDLTypeInfo('any', dart_type='Object'),
632 'any[]': PrimitiveIDLTypeInfo('any[]', dart_type='List'),
633 'Array': PrimitiveIDLTypeInfo('Array', dart_type='List'),
634 'custom': PrimitiveIDLTypeInfo('custom', dart_type='Dynamic'),
635 'Date': PrimitiveIDLTypeInfo('Date', dart_type='Date', native_type='double') ,
636 'DOMObject': PrimitiveIDLTypeInfo('DOMObject', dart_type='Object'),
637 'DOMString': PrimitiveIDLTypeInfo('DOMString', dart_type='String', native_ty pe='String'),
638 # TODO(sra): Flags is really a dictionary: {create:bool, exclusive:bool}
639 # http://dev.w3.org/2009/dap/file-system/file-dir-sys.html#the-flags-interfa ce
640 'Flags': PrimitiveIDLTypeInfo('Flags', dart_type='Object'),
641 'List<String>': PrimitiveIDLTypeInfo('DOMStringList', dart_type='List<String >'),
642 'DOMTimeStamp': PrimitiveIDLTypeInfo('DOMTimeStamp', dart_type='int'),
643 'object': PrimitiveIDLTypeInfo('object', dart_type='Object', native_type='Sc riptValue'),
644 'SerializedScriptValue': PrimitiveIDLTypeInfo('SerializedScriptValue', dart_ type='Dynamic', ref_counted=True),
645 'WebKitFlags': PrimitiveIDLTypeInfo('WebKitFlags', dart_type='Object'),
646
647 'CSSRule': IDLTypeInfo('CSSRule', conversion_includes=['CSSImportRule']),
648 'DOMException': IDLTypeInfo('DOMCoreException', dart_type='DOMException'),
649 'DOMWindow': IDLTypeInfo('DOMWindow', custom_to_dart=True),
650 'Element': IDLTypeInfo('Element', custom_to_dart=True),
651 'EventListener': IDLTypeInfo('EventListener', has_dart_wrapper=False),
652 'EventTarget': IDLTypeInfo('EventTarget', has_dart_wrapper=False),
653 'HTMLElement': IDLTypeInfo('HTMLElement', custom_to_dart=True),
654 'MediaQueryListListener': IDLTypeInfo('MediaQueryListListener', has_dart_wra pper=False),
655 'OptionsObject': IDLTypeInfo('OptionsObject', has_dart_wrapper=False),
656 'StyleSheet': IDLTypeInfo('StyleSheet', conversion_includes=['CSSStyleSheet' ]),
657 'SVGElement': IDLTypeInfo('SVGElement', custom_to_dart=True),
658
659 'SVGAngle': SVGTearOffIDLTypeInfo('SVGAngle'),
660 'SVGLength': SVGTearOffIDLTypeInfo('SVGLength'),
661 'SVGLengthList': SVGTearOffIDLTypeInfo('SVGLengthList', ref_counted=False),
662 'SVGMatrix': SVGTearOffIDLTypeInfo('SVGMatrix'),
663 'SVGNumber': SVGTearOffIDLTypeInfo('SVGNumber', native_type='SVGPropertyTear Off<float>'),
664 'SVGNumberList': SVGTearOffIDLTypeInfo('SVGNumberList', ref_counted=False),
665 'SVGPathSegList': SVGTearOffIDLTypeInfo('SVGPathSegList', native_type='SVGPa thSegListPropertyTearOff', ref_counted=False),
666 'SVGPoint': SVGTearOffIDLTypeInfo('SVGPoint', native_type='SVGPropertyTearOf f<FloatPoint>'),
667 'SVGPointList': SVGTearOffIDLTypeInfo('SVGPointList', ref_counted=False),
668 'SVGPreserveAspectRatio': SVGTearOffIDLTypeInfo('SVGPreserveAspectRatio'),
669 'SVGRect': SVGTearOffIDLTypeInfo('SVGRect', native_type='SVGPropertyTearOff< FloatRect>'),
670 'SVGStringList': SVGTearOffIDLTypeInfo('SVGStringList', native_type='SVGStat icListPropertyTearOff<SVGStringList>', ref_counted=False),
671 'SVGTransform': SVGTearOffIDLTypeInfo('SVGTransform'),
672 'SVGTransformList': SVGTearOffIDLTypeInfo('SVGTransformList', native_type='S VGTransformListPropertyTearOff', ref_counted=False)
673 }
674
675 _svg_supplemental_includes = [
676 '"SVGAnimatedPropertyTearOff.h"',
677 '"SVGAnimatedListPropertyTearOff.h"',
678 '"SVGStaticListPropertyTearOff.h"',
679 '"SVGAnimatedListPropertyTearOff.h"',
680 '"SVGTransformListPropertyTearOff.h"',
681 '"SVGPathSegListPropertyTearOff.h"',
682 ]
683
684 def GetIDLTypeInfo(idl_type_name):
685 return _idl_type_registry.get(idl_type_name, IDLTypeInfo(idl_type_name))
OLDNEW
« no previous file with comments | « client/dom/scripts/fremontcutbuilder.py ('k') | client/dom/scripts/idlnode.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698