Index: Source/bindings/scripts/v8_callback_interface.py |
diff --git a/Source/bindings/scripts/v8_callback_interface.py b/Source/bindings/scripts/v8_callback_interface.py |
index 506f8161df213fcdcee83291c04bd66cac5de455..e64975a40480d602f4b7a368d405955dbc7c749e 100644 |
--- a/Source/bindings/scripts/v8_callback_interface.py |
+++ b/Source/bindings/scripts/v8_callback_interface.py |
@@ -53,16 +53,6 @@ CALLBACK_INTERFACE_CPP_INCLUDES = frozenset([ |
]) |
-def cpp_to_v8_conversion(idl_type, name): |
- # FIXME: setting creation_context=v8::Handle<v8::Object>() is wrong, |
- # as toV8 then implicitly uses the current context, which causes leaks |
- # between isolate worlds if a different context should be used. |
- cpp_value_to_v8_value = idl_type.cpp_value_to_v8_value(name, |
- isolate='m_isolate', creation_context='v8::Handle<v8::Object>()') |
- return 'v8::Handle<v8::Value> {name}Handle = {cpp_to_v8};'.format( |
- name=name, cpp_to_v8=cpp_value_to_v8_value) |
- |
- |
def cpp_type(idl_type): |
# FIXME: remove this function by making callback types consistent |
# (always use usual v8_types.cpp_type) |
@@ -83,18 +73,14 @@ IdlType.callback_cpp_type = property(cpp_type) |
def generate_callback_interface(callback_interface): |
includes.clear() |
includes.update(CALLBACK_INTERFACE_CPP_INCLUDES) |
- name = callback_interface.name |
- |
- methods = [generate_method(operation) |
- for operation in callback_interface.operations] |
- template_contents = { |
+ return { |
'conditional_string': v8_utilities.conditional_string(callback_interface), |
- 'cpp_class': name, |
+ 'cpp_class': callback_interface.name, |
'v8_class': v8_utilities.v8_class_name(callback_interface), |
'header_includes': set(CALLBACK_INTERFACE_H_INCLUDES), |
- 'methods': methods, |
+ 'methods': [generate_method(operation) |
+ for operation in callback_interface.operations], |
} |
- return template_contents |
def add_includes_for_operation(operation): |
@@ -128,17 +114,21 @@ def generate_method(operation): |
def generate_arguments_contents(arguments, call_with_this_handle): |
def generate_argument(argument): |
return { |
- 'name': argument.name, |
- 'cpp_to_v8_conversion': cpp_to_v8_conversion(argument.idl_type, argument.name), |
+ 'handle': '%sHandle' % argument.name, |
+ # FIXME: setting creation_context=v8::Handle<v8::Object>() is |
+ # wrong, as toV8 then implicitly uses the current context, which |
+ # causes leaks between isolated worlds if a different context is |
+ # used. |
+ 'cpp_value_to_v8_value': argument.idl_type.cpp_value_to_v8_value( |
+ argument.name, isolate='m_isolate', |
+ creation_context='v8::Handle<v8::Object>()'), |
} |
- argument_declarations = [ |
- '%s %s' % (argument.idl_type.callback_cpp_type, argument.name) |
- for argument in arguments] |
- if call_with_this_handle: |
- argument_declarations.insert(0, 'ScriptValue thisValue') |
+ argument_declarations = ['ScriptValue thisValue'] if call_with_this_handle else [] |
+ argument_declarations.extend( |
+ '%s %s' % (argument.idl_type.callback_cpp_type, argument.name) |
+ for argument in arguments) |
return { |
'argument_declarations': argument_declarations, |
'arguments': [generate_argument(argument) for argument in arguments], |
- 'handles': ['%sHandle' % argument.name for argument in arguments], |
} |