| Index: client/dom/scripts/generator.py
|
| diff --git a/client/dom/scripts/generator.py b/client/dom/scripts/generator.py
|
| index 971a91042e15771b69fb06e9203260c9d221c957..8d73ef63b6b87f8d4bb26b8a5c98c4aec439a8b9 100644
|
| --- a/client/dom/scripts/generator.py
|
| +++ b/client/dom/scripts/generator.py
|
| @@ -182,7 +182,7 @@ def IsPrimitiveType(type_name):
|
|
|
| def MaybeListElementTypeName(type_name):
|
| """Returns the List element type T from string of form "List<T>", or None."""
|
| - match = re.match(r'List<(\w*)>$', type_name)
|
| + match = re.match(r'sequence<(\w*)>$', type_name)
|
| if match:
|
| return match.group(1)
|
| return None
|
| @@ -225,6 +225,11 @@ def MatchSourceFilter(filter, thing):
|
| else:
|
| return any(token in thing.annotations for token in filter)
|
|
|
| +def DartType(idl_type_name):
|
| + match = re.match(r'sequence<(\w*)>$', idl_type_name)
|
| + if match:
|
| + return 'List<%s>' % GetIDLTypeInfoByName(match.group(1)).dart_type()
|
| + return GetIDLTypeInfoByName(idl_type_name).dart_type()
|
|
|
| # Given a list of overloaded arguments, render a dart argument.
|
| def _DartArg(args, interface):
|
| @@ -234,7 +239,7 @@ def _DartArg(args, interface):
|
|
|
| # Given a list of overloaded arguments, choose a suitable type.
|
| def OverloadedType(args):
|
| - typeIds = sorted(set(arg.type.id for arg in args))
|
| + typeIds = sorted(set(DartType(arg.type.id) for arg in args))
|
| if len(typeIds) == 1:
|
| return typeIds[0]
|
| else:
|
| @@ -266,7 +271,7 @@ def AnalyzeOperation(interface, operations):
|
| info.declared_name = operations[0].id
|
| info.name = operations[0].ext_attrs.get('DartName', info.declared_name)
|
| info.js_name = info.declared_name
|
| - info.type_name = operations[0].type.id # TODO: widen.
|
| + info.type_name = DartType(operations[0].type.id) # TODO: widen.
|
| info.arg_infos = args
|
| return info
|
|
|
| @@ -316,7 +321,7 @@ def RecognizeCallback(interface):
|
| return AnalyzeOperation(interface, handlers)
|
|
|
| def IsDartListType(type):
|
| - return type == 'List' or type.startswith('List<')
|
| + return type == 'List' or type.startswith('sequence<')
|
|
|
| def IsDartCollectionType(type):
|
| return IsDartListType(type)
|
| @@ -439,10 +444,11 @@ def TypeName(typeIds, interface):
|
| # ------------------------------------------------------------------------------
|
|
|
| class IDLTypeInfo(object):
|
| - def __init__(self, idl_type, native_type=None, ref_counted=True,
|
| + 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):
|
| self._idl_type = idl_type
|
| + self._dart_type = dart_type
|
| self._native_type = native_type
|
| self._ref_counted = ref_counted
|
| self._has_dart_wrapper = has_dart_wrapper
|
| @@ -452,6 +458,11 @@ class IDLTypeInfo(object):
|
| def idl_type(self):
|
| return self._idl_type
|
|
|
| + def dart_type(self):
|
| + if self._dart_type:
|
| + return self._dart_type
|
| + return self._idl_type
|
| +
|
| def native_type(self):
|
| if self._native_type:
|
| return self._native_type
|
| @@ -492,11 +503,11 @@ class IDLTypeInfo(object):
|
| return self._custom_to_dart
|
|
|
| class PrimitiveIDLTypeInfo(IDLTypeInfo):
|
| - def __init__(self, idl_type, native_type=None, ref_counted=False,
|
| + def __init__(self, idl_type, dart_type, native_type=None, ref_counted=False,
|
| conversion_template=None,
|
| webcore_getter_name='getAttribute',
|
| webcore_setter_name='setAttribute'):
|
| - super(PrimitiveIDLTypeInfo, self).__init__(idl_type,
|
| + super(PrimitiveIDLTypeInfo, self).__init__(idl_type, dart_type=dart_type,
|
| native_type=native_type, ref_counted=ref_counted,
|
| conversion_template=conversion_template)
|
| self._webcore_getter_name = webcore_getter_name
|
| @@ -543,34 +554,49 @@ class SVGTearOffIDLTypeInfo(IDLTypeInfo):
|
|
|
|
|
| _idl_type_registry = {
|
| - # There is GC3Dboolean which is not a bool, but unsigned char for OpenGL compatibility.
|
| - 'boolean': PrimitiveIDLTypeInfo('boolean', native_type='bool',
|
| + # There is GC3Dboolean which is not a bool, but unsigned char for OpenGL compatibility.
|
| + 'boolean': PrimitiveIDLTypeInfo('boolean', dart_type='bool', native_type='bool',
|
| conversion_template='static_cast<bool>(%s)',
|
| webcore_getter_name='hasAttribute',
|
| webcore_setter_name='setBooleanAttribute'),
|
| # Some IDL's unsigned shorts/shorts are mapped to WebCore C++ enums, so we
|
| # use a static_cast<int> here not to provide overloads for all enums.
|
| - 'short': PrimitiveIDLTypeInfo('short', native_type='int', conversion_template='static_cast<int>(%s)'),
|
| - 'unsigned short': PrimitiveIDLTypeInfo('unsigned short', native_type='int', conversion_template='static_cast<int>(%s)'),
|
| - 'int': PrimitiveIDLTypeInfo('int'),
|
| - 'unsigned int': PrimitiveIDLTypeInfo('unsigned int', native_type='unsigned'),
|
| - 'long': PrimitiveIDLTypeInfo('long', native_type='int',
|
| + 'short': PrimitiveIDLTypeInfo('short', dart_type='int', native_type='int',
|
| + conversion_template='static_cast<int>(%s)'),
|
| + 'unsigned short': PrimitiveIDLTypeInfo('unsigned short', dart_type='int',
|
| + native_type='int', conversion_template='static_cast<int>(%s)'),
|
| + 'int': PrimitiveIDLTypeInfo('int', dart_type='int'),
|
| + 'unsigned int': PrimitiveIDLTypeInfo('unsigned int', dart_type='int',
|
| + native_type='unsigned'),
|
| + 'long': PrimitiveIDLTypeInfo('long', dart_type='int', native_type='int',
|
| webcore_getter_name='getIntegralAttribute',
|
| webcore_setter_name='setIntegralAttribute'),
|
| - 'unsigned long': PrimitiveIDLTypeInfo('unsigned long', native_type='unsigned',
|
| + 'unsigned long': PrimitiveIDLTypeInfo('unsigned long', dart_type='int',
|
| + native_type='unsigned',
|
| webcore_getter_name='getUnsignedIntegralAttribute',
|
| webcore_setter_name='setUnsignedIntegralAttribute'),
|
| - 'long long': PrimitiveIDLTypeInfo('long long'),
|
| - 'unsigned long long': PrimitiveIDLTypeInfo('unsigned long long'),
|
| - 'double': PrimitiveIDLTypeInfo('double'),
|
| -
|
| - 'Date': PrimitiveIDLTypeInfo('Date', native_type='double'),
|
| - 'DOMString': PrimitiveIDLTypeInfo('DOMString', native_type='String'),
|
| - 'DOMTimeStamp': PrimitiveIDLTypeInfo('DOMTimeStamp'),
|
| - 'object': PrimitiveIDLTypeInfo('object', native_type='ScriptValue'),
|
| - 'SerializedScriptValue': PrimitiveIDLTypeInfo('SerializedScriptValue', ref_counted=True),
|
| -
|
| - 'DOMException': IDLTypeInfo('DOMCoreException'),
|
| + 'long long': PrimitiveIDLTypeInfo('long long', dart_type='int'),
|
| + 'unsigned long long': PrimitiveIDLTypeInfo('unsigned long long', dart_type='int'),
|
| + 'double': PrimitiveIDLTypeInfo('double', dart_type='num'),
|
| + 'float': PrimitiveIDLTypeInfo('float', dart_type='num'),
|
| +
|
| + 'any': PrimitiveIDLTypeInfo('any', dart_type='Object'),
|
| + 'any[]': PrimitiveIDLTypeInfo('any[]', dart_type='List'),
|
| + 'Array': PrimitiveIDLTypeInfo('Array', dart_type='List'),
|
| + 'custom': PrimitiveIDLTypeInfo('custom', dart_type='Dynamic'),
|
| + 'Date': PrimitiveIDLTypeInfo('Date', dart_type='Date', native_type='double'),
|
| + 'DOMObject': PrimitiveIDLTypeInfo('DOMObject', dart_type='Object'),
|
| + 'DOMString': PrimitiveIDLTypeInfo('DOMString', dart_type='String', native_type='String'),
|
| + # TODO(sra): Flags is really a dictionary: {create:bool, exclusive:bool}
|
| + # http://dev.w3.org/2009/dap/file-system/file-dir-sys.html#the-flags-interface
|
| + 'Flags': PrimitiveIDLTypeInfo('Flags', dart_type='Object'),
|
| + 'List<String>': PrimitiveIDLTypeInfo('DOMStringList', dart_type='List<String>'),
|
| + 'DOMTimeStamp': PrimitiveIDLTypeInfo('DOMTimeStamp', dart_type='int'),
|
| + 'object': PrimitiveIDLTypeInfo('object', dart_type='Object', native_type='ScriptValue'),
|
| + 'SerializedScriptValue': PrimitiveIDLTypeInfo('SerializedScriptValue', dart_type='Dynamic', ref_counted=True),
|
| + 'WebKitFlags': PrimitiveIDLTypeInfo('WebKitFlags', dart_type='Object'),
|
| +
|
| + 'DOMException': IDLTypeInfo('DOMCoreException', dart_type='DOMException'),
|
| 'DOMWindow': IDLTypeInfo('DOMWindow', custom_to_dart=True),
|
| 'Element': IDLTypeInfo('Element', custom_to_dart=True),
|
| 'EventListener': IDLTypeInfo('EventListener', has_dart_wrapper=False),
|
| @@ -596,12 +622,8 @@ _idl_type_registry = {
|
| 'SVGTransformList': SVGTearOffIDLTypeInfo('SVGTransformList', native_type='SVGTransformListPropertyTearOff', ref_counted=False)
|
| }
|
|
|
| -original_idl_types = {
|
| -}
|
| -
|
| def GetIDLTypeInfo(idl_type):
|
| - idl_type_name = original_idl_types.get(idl_type, idl_type.id)
|
| - return GetIDLTypeInfoByName(idl_type_name)
|
| + return GetIDLTypeInfoByName(idl_type.id)
|
|
|
| def GetIDLTypeInfoByName(idl_type_name):
|
| return _idl_type_registry.get(idl_type_name, IDLTypeInfo(idl_type_name))
|
|
|