| Index: client/dom/scripts/systemnative.py
|
| diff --git a/client/dom/scripts/systemnative.py b/client/dom/scripts/systemnative.py
|
| index e5e35f33585eb4dfb5bcdb2134af1604c82db727..ae75dbcd8e242f543647c188a025c78718820206 100644
|
| --- a/client/dom/scripts/systemnative.py
|
| +++ b/client/dom/scripts/systemnative.py
|
| @@ -278,6 +278,18 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
|
| raises_dart_exceptions = raises_dom_exceptions or len(constructor_info.idl_args) > 0
|
| arguments = []
|
| parameter_definitions_emitter = emitter.Emitter()
|
| + create_function = 'create'
|
| + if 'NamedConstructor' in self._interface.ext_attrs:
|
| + raises_dart_exceptions = True
|
| + parameter_definitions_emitter.Emit(
|
| + ' DOMWindow* domWindow = DartUtilities::domWindowForCurrentIsolate();\n'
|
| + ' if (!domWindow) {\n'
|
| + ' exception = Dart_NewString("Failed to fetch domWindow");\n'
|
| + ' goto fail;\n'
|
| + ' }\n'
|
| + ' Document* document = domWindow->document();\n')
|
| + arguments.append('document')
|
| + create_function = 'createForJSConstructor'
|
| if 'CallWith' in self._interface.ext_attrs:
|
| call_with = self._interface.ext_attrs['CallWith']
|
| if call_with == 'ScriptExecutionContext':
|
| @@ -297,7 +309,7 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
|
| self._GenerateParameterAdapter(parameter_definitions_emitter, arg, i - 1)
|
| arguments.append(arg.id)
|
|
|
| - function_expression = '%s::create' % self._interface_type_info.native_type()
|
| + function_expression = '%s::%s' % (self._interface_type_info.native_type(), create_function)
|
| invocation = self._GenerateWebCoreInvocation(function_expression, arguments,
|
| self._interface, self._interface.ext_attrs, raises_dom_exceptions)
|
| self._GenerateNativeCallback(callback_name='constructorCallback',
|
| @@ -310,8 +322,7 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
|
|
|
| def _IsConstructable(self):
|
| # FIXME: support ConstructorTemplate.
|
| - # FIXME: support NamedConstructor.
|
| - return set(['CustomConstructor', 'V8CustomConstructor', 'Constructor']) & set(self._interface.ext_attrs)
|
| + return set(['CustomConstructor', 'V8CustomConstructor', 'Constructor', 'NamedConstructor']) & set(self._interface.ext_attrs)
|
|
|
| def FinishInterface(self):
|
| base = self._BaseClassName(self._interface)
|
| @@ -666,7 +677,7 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
|
| if include_name:
|
| self._cpp_impl_includes[include_name] = 1
|
| flags = ''
|
| - if (idl_argument.ext_attrs.get('Optionial') == 'DefaultIsNullString' or
|
| + if (idl_argument.ext_attrs.get('Optional') == 'DefaultIsNullString' or
|
| ('Optional' in idl_argument.ext_attrs and 'Callback' in idl_argument.ext_attrs)):
|
| flags = ', DartUtilities::ConvertNullToDefaultValue'
|
| emitter.Emit(
|
|
|