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

Unified Diff: client/dom/scripts/systemnative.py

Issue 9480001: Support named ctors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebaseline Created 8 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | client/dom/src/native_FactoryProvidersImplementation.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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(
« no previous file with comments | « no previous file | client/dom/src/native_FactoryProvidersImplementation.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698