Index: tools/dom/scripts/htmldartgenerator.py |
diff --git a/tools/dom/scripts/htmldartgenerator.py b/tools/dom/scripts/htmldartgenerator.py |
index 6699fd3ca366136b15f2c001b540bc9fa9c890dc..860d7e1abbed2a1b309a0e791d0e969794569728 100644 |
--- a/tools/dom/scripts/htmldartgenerator.py |
+++ b/tools/dom/scripts/htmldartgenerator.py |
@@ -542,6 +542,14 @@ class HtmlDartGenerator(object): |
else: |
factory_parameters = ', '.join(constructor_info.factory_parameters) |
+ def InputType(type_name): |
+ conversion = self._InputConversion( |
+ type_name, constructor_info.declared_name) |
+ if conversion: |
+ return conversion.input_type |
+ else: |
+ return self._NarrowInputType(type_name) if type_name else 'dynamic' |
+ |
if constructor_info.pure_dart_constructor: |
# TODO(antonm): use common dispatcher generation for this case as well. |
has_optional = any(param_info.is_optional |
@@ -553,7 +561,7 @@ class HtmlDartGenerator(object): |
'factory $CTOR($PARAMS) => ' |
'$FACTORY.$CTOR_FACTORY_NAME($FACTORY_PARAMS);\n', |
CTOR=constructor_info._ConstructorFullName(self._DartType), |
- PARAMS=constructor_info.ParametersAsDeclaration(self._DartType), |
+ PARAMS=constructor_info.ParametersAsDeclaration(InputType), |
FACTORY=factory_name, |
METADATA=metadata, |
CTOR_FACTORY_NAME=factory_constructor_name, |
@@ -570,7 +578,7 @@ class HtmlDartGenerator(object): |
METADATA=metadata, |
FACTORY=factory_name, |
CTOR_FACTORY_NAME=factory_constructor_name, |
- PARAMS=constructor_info.ParametersAsDeclaration(self._DartType), |
+ PARAMS=constructor_info.ParametersAsDeclaration(InputType), |
FACTORY_PARAMS=factory_parameters) |
for index, param_info in enumerate(constructor_info.param_infos): |
@@ -586,6 +594,7 @@ class HtmlDartGenerator(object): |
version, signature_index, argument_count): |
name = emitter.Format('_create_$VERSION', VERSION=version) |
arguments = constructor_info.idl_args[signature_index][:argument_count] |
+ args = None |
if self._dart_use_blink: |
type_ids = [p.type.id for p in arguments] |
base_name, rs = \ |
@@ -593,15 +602,18 @@ class HtmlDartGenerator(object): |
qualified_name = \ |
self.DeriveQualifiedBlinkName(self._interface.id, |
base_name) |
+ args = constructor_info.ParametersAsArgumentList(argument_count) |
else: |
qualified_name = emitter.Format( |
'$FACTORY.$NAME', |
FACTORY=factory_name, |
NAME=name) |
+ (factory_params, converted_arguments) = self._ConvertArgumentTypes( |
+ stmts_emitter, arguments, argument_count, constructor_info) |
+ args = ', '.join(converted_arguments) |
call_emitter.Emit('$FACTORY_NAME($FACTORY_PARAMS)', |
FACTORY_NAME=qualified_name, |
- FACTORY_PARAMS= \ |
- constructor_info.ParametersAsArgumentList(argument_count)) |
+ FACTORY_PARAMS=args) |
self.EmitStaticFactoryOverload(constructor_info, name, arguments) |
def IsOptional(signature_index, argument): |
@@ -614,7 +626,7 @@ class HtmlDartGenerator(object): |
CTOR=(('' if not custom_factory_ctr else '_factory') |
+ constructor_full_name), |
METADATA=metadata, |
- PARAMS=constructor_info.ParametersAsDeclaration(self._DartType)) |
+ PARAMS=constructor_info.ParametersAsDeclaration(InputType)) |
overload_emitter = self._members_emitter |
overload_declaration = entry_declaration |