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

Side by Side Diff: Source/bindings/scripts/v8_methods.py

Issue 946973005: IDL: Drop value conversion (V8 -> C++) macros from generated code (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: make ExceptionState.throwException() private again Created 5 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 unified diff | Download patch
OLDNEW
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
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
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
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()'
haraken 2015/02/24 15:59:38 I'm a bit confused about when throwIfNeeded() shou
Jens Widell 2015/02/24 16:15:58 I use throwIfNeeded() as throw_expression when che
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
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)))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698