| Index: tools/dom/scripts/generator.py
|
| diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
|
| index 59c545882a58bdadacc342f5893d859ff5fbd902..d8ecaa20545d063e37155632a43215611af288bb 100644
|
| --- a/tools/dom/scripts/generator.py
|
| +++ b/tools/dom/scripts/generator.py
|
| @@ -114,7 +114,6 @@ _dart2js_dom_custom_native_specs = monitored.Dict(
|
| 'ChannelMergerNode': 'ChannelMergerNode,AudioChannelMerger',
|
| 'ChannelSplitterNode': 'ChannelSplitterNode,AudioChannelSplitter',
|
|
|
| - 'ClientRect': 'ClientRect,DOMRect',
|
| 'ClientRectList': 'ClientRectList,DOMRectList',
|
|
|
| 'CSSStyleDeclaration':
|
| @@ -239,9 +238,9 @@ def _BuildArguments(args, interface, constructor=False):
|
| return '_OR_'.join(sorted(set(arg.id for arg in args)))
|
|
|
| def DartType(idl_type_name):
|
| - if idl_type_name in _idl_type_registry:
|
| - return _idl_type_registry[idl_type_name].dart_type or idl_type_name
|
| - return idl_type_name
|
| + if idl_type_name in _idl_type_registry:
|
| + return _idl_type_registry[idl_type_name].dart_type or idl_type_name
|
| + return idl_type_name
|
|
|
| # Given a list of overloaded arguments, choose a suitable type.
|
| def OverloadedType(args):
|
| @@ -264,12 +263,15 @@ def _BuildArguments(args, interface, constructor=False):
|
|
|
| return result
|
|
|
| -# Argument default value set (literal value or null).
|
| -def HasDefault(argument):
|
| - return (argument.default_value != None) or argument.default_value_is_null
|
| +# Argument default value is one that we suppress
|
| +# FIXME(leafp) We may wish to eliminate this special treatment of optional
|
| +# arguments entirely, since default values are being used more pervasively
|
| +# in the IDL now.
|
| +def HasSuppressedOptionalDefault(argument):
|
| + return (argument.default_value == 'Undefined') or argument.default_value_is_null
|
|
|
| def IsOptional(argument):
|
| - return argument.optional and (not(HasDefault(argument))) \
|
| + return argument.optional and (not(HasSuppressedOptionalDefault(argument))) \
|
| or 'DartForceOptional' in argument.ext_attrs
|
|
|
| def AnalyzeOperation(interface, operations):
|
| @@ -450,7 +452,7 @@ class OperationInfo(object):
|
| else:
|
| if optional:
|
| raise Exception('Optional parameters cannot precede required ones: '
|
| - + str(params))
|
| + + str(param_info))
|
| required.append(FormatParam(param_info))
|
| needs_named = optional and self.requires_named_arguments and not force_optional
|
| return (required, optional, needs_named)
|
| @@ -1273,7 +1275,7 @@ class TypeRegistry(object):
|
| return self.TypeInfo(type_name).dart_type()
|
|
|
| def _TypeInfo(self, type_name):
|
| - match = re.match(r'(?:sequence<(\w+)>|(\w+)\[\])$', type_name)
|
| + match = re.match(r'(?:sequence<([\w ]+)>|(\w+)\[\])$', type_name)
|
| if match:
|
| type_data = TypeData('Sequence')
|
| item_info = self.TypeInfo(match.group(1) or match.group(2))
|
|
|