| OLD | NEW |
| 1 # Copyright (C) 2013 Google Inc. All rights reserved. | 1 # Copyright (C) 2013 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 'number_of_arguments': len(arguments), | 168 'number_of_arguments': len(arguments), |
| 169 'number_of_required_arguments': len([ | 169 'number_of_required_arguments': len([ |
| 170 argument for argument in arguments | 170 argument for argument in arguments |
| 171 if not (argument.is_optional or argument.is_variadic)]), | 171 if not (argument.is_optional or argument.is_variadic)]), |
| 172 'number_of_required_or_variadic_arguments': len([ | 172 'number_of_required_or_variadic_arguments': len([ |
| 173 argument for argument in arguments | 173 argument for argument in arguments |
| 174 if not argument.is_optional]), | 174 if not argument.is_optional]), |
| 175 'only_exposed_to_private_script': is_only_exposed_to_private_script, | 175 'only_exposed_to_private_script': is_only_exposed_to_private_script, |
| 176 'per_context_enabled_function': v8_utilities.per_context_enabled_functio
n_name(method), # [PerContextEnabled] | 176 'per_context_enabled_function': v8_utilities.per_context_enabled_functio
n_name(method), # [PerContextEnabled] |
| 177 'private_script_v8_value_to_local_cpp_value': idl_type.v8_value_to_local
_cpp_value( | 177 'private_script_v8_value_to_local_cpp_value': idl_type.v8_value_to_local
_cpp_value( |
| 178 extended_attributes, 'v8Value', 'cppValue', isolate='scriptState->is
olate()', used_in_private_script=True), | 178 extended_attributes, 'v8Value', 'cppValue', isolate='scriptState->is
olate()', bailout_return_value='false'), |
| 179 'property_attributes': property_attributes(interface, method), | 179 'property_attributes': property_attributes(interface, method), |
| 180 'returns_promise': method.returns_promise, |
| 180 'runtime_enabled_function': v8_utilities.runtime_enabled_function_name(m
ethod), # [RuntimeEnabled] | 181 'runtime_enabled_function': v8_utilities.runtime_enabled_function_name(m
ethod), # [RuntimeEnabled] |
| 181 'should_be_exposed_to_script': not (is_implemented_in_private_script and
is_only_exposed_to_private_script), | 182 'should_be_exposed_to_script': not (is_implemented_in_private_script and
is_only_exposed_to_private_script), |
| 182 'signature': 'v8::Local<v8::Signature>()' if is_static or 'DoNotCheckSig
nature' in extended_attributes else 'defaultSignature', | 183 'signature': 'v8::Local<v8::Signature>()' if is_static or 'DoNotCheckSig
nature' in extended_attributes else 'defaultSignature', |
| 183 'use_output_parameter_for_result': idl_type.use_output_parameter_for_res
ult, | 184 'use_output_parameter_for_result': idl_type.use_output_parameter_for_res
ult, |
| 184 'use_local_result': use_local_result(method), | 185 'use_local_result': use_local_result(method), |
| 185 'v8_set_return_value': v8_set_return_value(interface.name, method, this_
cpp_value), | 186 'v8_set_return_value': v8_set_return_value(interface.name, method, this_
cpp_value), |
| 186 'v8_set_return_value_for_main_world': v8_set_return_value(interface.name
, method, this_cpp_value, for_main_world=True), | 187 'v8_set_return_value_for_main_world': v8_set_return_value(interface.name
, method, this_cpp_value, for_main_world=True), |
| 187 'visible': is_visible, | 188 'visible': is_visible, |
| 188 'world_suffixes': ['', 'ForMainWorld'] if 'PerWorldBindings' in extended
_attributes else [''], # [PerWorldBindings], | 189 'world_suffixes': ['', 'ForMainWorld'] if 'PerWorldBindings' in extended
_attributes else [''], # [PerWorldBindings], |
| 189 } | 190 } |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 'is_variadic': argument.is_variadic, | 236 'is_variadic': argument.is_variadic, |
| 236 'is_variadic_wrapper_type': is_variadic_wrapper_type, | 237 'is_variadic_wrapper_type': is_variadic_wrapper_type, |
| 237 'is_wrapper_type': idl_type.is_wrapper_type, | 238 'is_wrapper_type': idl_type.is_wrapper_type, |
| 238 'name': argument.name, | 239 'name': argument.name, |
| 239 'private_script_cpp_value_to_v8_value': idl_type.cpp_value_to_v8_value( | 240 'private_script_cpp_value_to_v8_value': idl_type.cpp_value_to_v8_value( |
| 240 argument.name, isolate='scriptState->isolate()', | 241 argument.name, isolate='scriptState->isolate()', |
| 241 creation_context='scriptState->context()->Global()'), | 242 creation_context='scriptState->context()->Global()'), |
| 242 'use_permissive_dictionary_conversion': 'PermissiveDictionaryConversion'
in extended_attributes, | 243 'use_permissive_dictionary_conversion': 'PermissiveDictionaryConversion'
in extended_attributes, |
| 243 'v8_set_return_value': v8_set_return_value(interface.name, method, this_
cpp_value), | 244 'v8_set_return_value': v8_set_return_value(interface.name, method, this_
cpp_value), |
| 244 'v8_set_return_value_for_main_world': v8_set_return_value(interface.name
, method, this_cpp_value, for_main_world=True), | 245 'v8_set_return_value_for_main_world': v8_set_return_value(interface.name
, method, this_cpp_value, for_main_world=True), |
| 245 'v8_value_to_local_cpp_value': v8_value_to_local_cpp_value(argument, ind
ex, return_promise=method.returns_promise, restricted_float=restricted_float), | 246 'v8_value_to_local_cpp_value': v8_value_to_local_cpp_value(method, argum
ent, index, restricted_float=restricted_float), |
| 246 'vector_type': v8_types.cpp_ptr_type('Vector', 'HeapVector', idl_type.gc
_type), | 247 'vector_type': v8_types.cpp_ptr_type('Vector', 'HeapVector', idl_type.gc
_type), |
| 247 } | 248 } |
| 248 | 249 |
| 249 | 250 |
| 250 def argument_declarations_for_private_script(interface, method): | 251 def argument_declarations_for_private_script(interface, method): |
| 251 argument_declarations = ['LocalFrame* frame'] | 252 argument_declarations = ['LocalFrame* frame'] |
| 252 argument_declarations.append('%s* holderImpl' % interface.name) | 253 argument_declarations.append('%s* holderImpl' % interface.name) |
| 253 argument_declarations.extend(['%s %s' % (argument.idl_type.cpp_type_args( | 254 argument_declarations.extend(['%s %s' % (argument.idl_type.cpp_type_args( |
| 254 used_as_rvalue_type=True), argument.name) for argument in method.argumen
ts]) | 255 used_as_rvalue_type=True), argument.name) for argument in method.argumen
ts]) |
| 255 if method.idl_type.name != 'void': | 256 if method.idl_type.name != 'void': |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 # result is of type Nullable<T> | 341 # result is of type Nullable<T> |
| 341 cpp_value = 'result.get()' | 342 cpp_value = 'result.get()' |
| 342 else: | 343 else: |
| 343 cpp_value = 'result' | 344 cpp_value = 'result' |
| 344 release = idl_type.release | 345 release = idl_type.release |
| 345 | 346 |
| 346 script_wrappable = 'impl' if inherits_interface(interface_name, 'Node') else
'' | 347 script_wrappable = 'impl' if inherits_interface(interface_name, 'Node') else
'' |
| 347 return idl_type.v8_set_return_value(cpp_value, extended_attributes, script_w
rappable=script_wrappable, release=release, for_main_world=for_main_world) | 348 return idl_type.v8_set_return_value(cpp_value, extended_attributes, script_w
rappable=script_wrappable, release=release, for_main_world=for_main_world) |
| 348 | 349 |
| 349 | 350 |
| 350 def v8_value_to_local_cpp_variadic_value(argument, index, return_promise): | 351 def v8_value_to_local_cpp_variadic_value(method, argument, index, return_promise
): |
| 351 assert argument.is_variadic | 352 assert argument.is_variadic |
| 352 idl_type = argument.idl_type | 353 idl_type = argument.idl_type |
| 354 this_cpp_type = idl_type.cpp_type |
| 353 | 355 |
| 354 suffix = '' | 356 if method.returns_promise: |
| 357 check_expression = 'exceptionState.hadException()' |
| 358 else: |
| 359 check_expression = 'exceptionState.throwIfNeeded()' |
| 355 | 360 |
| 356 macro = 'TONATIVE_VOID_EXCEPTIONSTATE' | 361 return { |
| 357 macro_args = [ | 362 'assign_expression': 'toImplArguments<%s>(info, %s, exceptionState)' % (
this_cpp_type, index), |
| 358 argument.name, | 363 'check_expression': check_expression, |
| 359 'toImplArguments<%s>(info, %s, exceptionState)' % (idl_type.cpp_type, in
dex), | 364 'cpp_type': this_cpp_type, |
| 360 'exceptionState', | 365 'cpp_name': argument.name, |
| 361 ] | 366 'declare_variable': False, |
| 362 | 367 } |
| 363 if return_promise: | |
| 364 suffix += '_PROMISE' | |
| 365 macro_args.extend(['info', 'ScriptState::current(info.GetIsolate())']) | |
| 366 | |
| 367 suffix += '_INTERNAL' | |
| 368 | |
| 369 return '%s%s(%s)' % (macro, suffix, ', '.join(macro_args)) | |
| 370 | 368 |
| 371 | 369 |
| 372 def v8_value_to_local_cpp_value(argument, index, return_promise=False, restricte
d_float=False): | 370 def v8_value_to_local_cpp_value(method, argument, index, return_promise=False, r
estricted_float=False): |
| 373 extended_attributes = argument.extended_attributes | 371 extended_attributes = argument.extended_attributes |
| 374 idl_type = argument.idl_type | 372 idl_type = argument.idl_type |
| 375 name = argument.name | 373 name = argument.name |
| 376 if argument.is_variadic: | 374 if argument.is_variadic: |
| 377 return v8_value_to_local_cpp_variadic_value(argument, index, return_prom
ise) | 375 return v8_value_to_local_cpp_variadic_value(method, argument, index, ret
urn_promise) |
| 378 return idl_type.v8_value_to_local_cpp_value(extended_attributes, 'info[%s]'
% index, | 376 return idl_type.v8_value_to_local_cpp_value(extended_attributes, 'info[%s]'
% index, |
| 379 name, index=index, declare_varia
ble=False, | 377 name, index=index, declare_varia
ble=False, |
| 380 return_promise=return_promise, | 378 use_exception_state=method.retur
ns_promise, |
| 381 restricted_float=restricted_floa
t) | 379 restricted_float=restricted_floa
t) |
| 382 | 380 |
| 383 | 381 |
| 384 ################################################################################ | 382 ################################################################################ |
| 385 # Auxiliary functions | 383 # Auxiliary functions |
| 386 ################################################################################ | 384 ################################################################################ |
| 387 | 385 |
| 388 # [NotEnumerable] | 386 # [NotEnumerable] |
| 389 def property_attributes(interface, method): | 387 def property_attributes(interface, method): |
| 390 extended_attributes = method.extended_attributes | 388 extended_attributes = method.extended_attributes |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 448 | 446 |
| 449 IdlOperation.returns_promise = property(method_returns_promise) | 447 IdlOperation.returns_promise = property(method_returns_promise) |
| 450 | 448 |
| 451 | 449 |
| 452 def argument_conversion_needs_exception_state(method, argument): | 450 def argument_conversion_needs_exception_state(method, argument): |
| 453 idl_type = argument.idl_type | 451 idl_type = argument.idl_type |
| 454 return (idl_type.v8_conversion_needs_exception_state or | 452 return (idl_type.v8_conversion_needs_exception_state or |
| 455 argument.is_variadic or | 453 argument.is_variadic or |
| 456 (method.returns_promise and (idl_type.is_string_type or | 454 (method.returns_promise and (idl_type.is_string_type or |
| 457 idl_type.is_enum))) | 455 idl_type.is_enum))) |
| OLD | NEW |