Index: Source/bindings/scripts/v8_methods.py |
diff --git a/Source/bindings/scripts/v8_methods.py b/Source/bindings/scripts/v8_methods.py |
index 94f22f33814e7d2d9871f4d72c35767929293390..5fadbf9af01f2ebbcbe4f0649913b63e5a83e769 100644 |
--- a/Source/bindings/scripts/v8_methods.py |
+++ b/Source/bindings/scripts/v8_methods.py |
@@ -173,6 +173,7 @@ def generate_argument(interface, method, argument, index): |
'v8_set_return_value_for_main_world': v8_set_return_value(interface.name, method, this_cpp_value, for_main_world=True), |
'v8_set_return_value': v8_set_return_value(interface.name, method, this_cpp_value), |
'v8_value_to_local_cpp_value': v8_value_to_local_cpp_value(argument, index), |
+ 'v8_value_to_local_cpp_value_async': v8_value_to_local_cpp_value(argument, index, async=True), |
} |
@@ -243,15 +244,28 @@ def v8_set_return_value(interface_name, method, cpp_value, for_main_world=False) |
return idl_type.v8_set_return_value(cpp_value, extended_attributes, script_wrappable=script_wrappable, release=release, for_main_world=for_main_world) |
-def v8_value_to_local_cpp_value(argument, index): |
+def v8_value_to_local_cpp_variadic_value(argument, index, async): |
+ assert argument.is_variadic |
+ idl_type = argument.idl_type |
+ vector_type = v8_types.cpp_ptr_type('Vector', 'HeapVector', idl_type.gc_type) |
+ |
+ macro = 'TONATIVE_VOID' + ('_ASYNC' if async else '') |
+ macro_args = [ |
+ '%s<%s>' % (vector_type, idl_type.cpp_type), |
+ argument.name, |
+ 'toNativeArguments<%s>(info, %s)' % (idl_type.cpp_type, index), |
+ ] |
+ if async: |
+ macro_args.append('info') |
+ return '%s(%s)' % (macro, ', '.join(macro_args)) |
+ |
+ |
+def v8_value_to_local_cpp_value(argument, index, async=False): |
extended_attributes = argument.extended_attributes |
idl_type = argument.idl_type |
name = argument.name |
if argument.is_variadic: |
- vector_type = v8_types.cpp_ptr_type('Vector', 'HeapVector', idl_type.gc_type) |
- return 'TONATIVE_VOID({vector_type}<{cpp_type}>, {name}, toNativeArguments<{cpp_type}>(info, {index}))'.format( |
- vector_type=vector_type, cpp_type=idl_type.cpp_type, name=name, |
- index=index) |
+ return v8_value_to_local_cpp_variadic_value(argument, index, async) |
# [Default=NullString] |
if (argument.is_optional and idl_type.name == 'String' and |
extended_attributes.get('Default') == 'NullString'): |
@@ -259,7 +273,7 @@ def v8_value_to_local_cpp_value(argument, index): |
else: |
v8_value = 'info[%s]' % index |
return idl_type.v8_value_to_local_cpp_value(extended_attributes, v8_value, |
- name, index=index) |
+ name, index=index, async=async) |
################################################################################ |