Index: client/dom/scripts/generator.py |
diff --git a/client/dom/scripts/generator.py b/client/dom/scripts/generator.py |
index 2a678ba393342a5a2d23c53aa3d0ac5fd32aa76b..c29a47bdcb2c731bf3e9407f71fefbca4bdefd72 100644 |
--- a/client/dom/scripts/generator.py |
+++ b/client/dom/scripts/generator.py |
@@ -450,7 +450,7 @@ def TypeName(typeIds, interface): |
class IDLTypeInfo(object): |
def __init__(self, idl_type, dart_type=None, native_type=None, ref_counted=True, |
has_dart_wrapper=True, conversion_template=None, |
- custom_to_dart=False): |
+ custom_to_dart=False, conversion_includes=[]): |
self._idl_type = idl_type |
self._dart_type = dart_type |
self._native_type = native_type |
@@ -458,6 +458,7 @@ class IDLTypeInfo(object): |
self._has_dart_wrapper = has_dart_wrapper |
self._conversion_template = conversion_template |
self._custom_to_dart = custom_to_dart |
+ self._conversion_includes = conversion_includes |
def idl_type(self): |
return self._idl_type |
@@ -485,18 +486,23 @@ class IDLTypeInfo(object): |
def parameter_type(self): |
return '%s*' % self.native_type() |
- def webcore_include(self): |
- if self._idl_type == 'SVGNumber' or self._idl_type == 'SVGPoint': |
- return None |
+ def webcore_includes(self): |
+ if not self._idl_type.startswith('SVG'): |
+ return [self._idl_type] |
+ |
+ if self._idl_type in ['SVGNumber', 'SVGPoint']: |
+ return [] |
if self._idl_type.startswith('SVGPathSeg'): |
- return self._idl_type.replace('Abs', '').replace('Rel', '') |
- return self._idl_type |
+ include = self._idl_type.replace('Abs', '').replace('Rel', '') |
+ else: |
+ include = self._idl_type |
+ return [include] + _svg_supplemental_includes |
def receiver(self): |
return 'receiver->' |
- def conversion_include(self): |
- return 'Dart%s' % self._idl_type |
+ def conversion_includes(self): |
+ return ['Dart%s' % include for include in [self.dart_type()] + self._conversion_includes] |
def conversion_cast(self, expression): |
if self._conversion_template: |
@@ -528,8 +534,8 @@ class PrimitiveIDLTypeInfo(IDLTypeInfo): |
return 'const String&' |
return self.native_type() |
- def conversion_include(self): |
- return None |
+ def conversion_includes(self): |
+ return [] |
def webcore_getter_name(self): |
return self._webcore_getter_name |
@@ -600,6 +606,7 @@ _idl_type_registry = { |
'SerializedScriptValue': PrimitiveIDLTypeInfo('SerializedScriptValue', dart_type='Dynamic', ref_counted=True), |
'WebKitFlags': PrimitiveIDLTypeInfo('WebKitFlags', dart_type='Object'), |
+ 'CSSRule': IDLTypeInfo('CSSRule', conversion_includes=['CSSImportRule']), |
'DOMException': IDLTypeInfo('DOMCoreException', dart_type='DOMException'), |
'DOMWindow': IDLTypeInfo('DOMWindow', custom_to_dart=True), |
'Element': IDLTypeInfo('Element', custom_to_dart=True), |
@@ -608,6 +615,7 @@ _idl_type_registry = { |
'HTMLElement': IDLTypeInfo('HTMLElement', custom_to_dart=True), |
'MediaQueryListListener': IDLTypeInfo('MediaQueryListListener', has_dart_wrapper=False), |
'OptionsObject': IDLTypeInfo('OptionsObject', has_dart_wrapper=False), |
+ 'StyleSheet': IDLTypeInfo('StyleSheet', conversion_includes=['CSSStyleSheet']), |
'SVGElement': IDLTypeInfo('SVGElement', custom_to_dart=True), |
'SVGAngle': SVGTearOffIDLTypeInfo('SVGAngle'), |
@@ -626,6 +634,15 @@ _idl_type_registry = { |
'SVGTransformList': SVGTearOffIDLTypeInfo('SVGTransformList', native_type='SVGTransformListPropertyTearOff', ref_counted=False) |
} |
+_svg_supplemental_includes = [ |
+ 'SVGAnimatedPropertyTearOff', |
+ 'SVGAnimatedListPropertyTearOff', |
+ 'SVGStaticListPropertyTearOff', |
+ 'SVGAnimatedListPropertyTearOff', |
+ 'SVGTransformListPropertyTearOff', |
+ 'SVGPathSegListPropertyTearOff', |
+] |
+ |
def GetIDLTypeInfo(idl_type): |
return GetIDLTypeInfoByName(idl_type.id) |