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

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

Issue 232563003: API functions returning Promises should not throw exceptions. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 4 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
« no previous file with comments | « Source/bindings/scripts/v8_methods.py ('k') | Source/bindings/templates/methods.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 505 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 expression_format = '(to{ref_ptr_type}NativeArray<{native_array_element_ type}, V8{native_array_element_type}>({v8_value}, {index}, {isolate}))' 516 expression_format = '(to{ref_ptr_type}NativeArray<{native_array_element_ type}, V8{native_array_element_type}>({v8_value}, {index}, {isolate}))'
517 add_includes_for_type(native_array_element_type) 517 add_includes_for_type(native_array_element_type)
518 else: 518 else:
519 ref_ptr_type = None 519 ref_ptr_type = None
520 this_cpp_type = native_array_element_type.cpp_type 520 this_cpp_type = native_array_element_type.cpp_type
521 expression_format = 'toNativeArray<{cpp_type}>({v8_value}, {index}, {iso late})' 521 expression_format = 'toNativeArray<{cpp_type}>({v8_value}, {index}, {iso late})'
522 expression = expression_format.format(native_array_element_type=native_array _element_type.name, cpp_type=this_cpp_type, index=index, ref_ptr_type=ref_ptr_ty pe, v8_value=v8_value, isolate=isolate) 522 expression = expression_format.format(native_array_element_type=native_array _element_type.name, cpp_type=this_cpp_type, index=index, ref_ptr_type=ref_ptr_ty pe, v8_value=v8_value, isolate=isolate)
523 return expression 523 return expression
524 524
525 525
526 def v8_value_to_local_cpp_value(idl_type, extended_attributes, v8_value, variabl e_name, index=None, declare_variable=True, isolate='info.GetIsolate()', used_in_ private_script=False): 526 def v8_value_to_local_cpp_value(idl_type, extended_attributes, v8_value, variabl e_name, index=None, declare_variable=True, isolate='info.GetIsolate()', used_in_ private_script=False, return_promise=False):
527 """Returns an expression that converts a V8 value to a C++ value and stores it as a local value.""" 527 """Returns an expression that converts a V8 value to a C++ value and stores it as a local value."""
528 528
529 # FIXME: Support union type. 529 # FIXME: Support union type.
530 if idl_type.is_union_type: 530 if idl_type.is_union_type:
531 return '' 531 return ''
532 532
533 this_cpp_type = idl_type.cpp_type_args(extended_attributes=extended_attribut es, raw_type=True) 533 this_cpp_type = idl_type.cpp_type_args(extended_attributes=extended_attribut es, raw_type=True)
534 534
535 idl_type = idl_type.preprocessed_type 535 idl_type = idl_type.preprocessed_type
536 cpp_value = v8_value_to_cpp_value(idl_type, extended_attributes, v8_value, i ndex, isolate) 536 cpp_value = v8_value_to_cpp_value(idl_type, extended_attributes, v8_value, i ndex, isolate)
537 args = [variable_name, cpp_value] 537 args = [variable_name, cpp_value]
538 if idl_type.base_type == 'DOMString' and not idl_type.native_array_element_t ype: 538 if idl_type.base_type == 'DOMString' and not idl_type.native_array_element_t ype:
539 macro = 'TOSTRING_DEFAULT' if used_in_private_script else 'TOSTRING_VOID ' 539 macro = 'TOSTRING_DEFAULT' if used_in_private_script else 'TOSTRING_VOID '
540 elif idl_type.may_raise_exception_on_conversion: 540 elif idl_type.may_raise_exception_on_conversion:
541 macro = 'TONATIVE_DEFAULT_EXCEPTIONSTATE' if used_in_private_script else 'TONATIVE_VOID_EXCEPTIONSTATE' 541 macro = 'TONATIVE_DEFAULT_EXCEPTIONSTATE' if used_in_private_script else 'TONATIVE_VOID_EXCEPTIONSTATE'
542 args.append('exceptionState') 542 args.append('exceptionState')
543 else: 543 else:
544 macro = 'TONATIVE_DEFAULT' if used_in_private_script else 'TONATIVE_VOID ' 544 macro = 'TONATIVE_DEFAULT' if used_in_private_script else 'TONATIVE_VOID '
545 545
546 if used_in_private_script: 546 if used_in_private_script:
547 args.append('false') 547 args.append('false')
548 548
549 # Macros come in several variants, to minimize expensive creation of 549 # Macros come in several variants, to minimize expensive creation of
550 # v8::TryCatch. 550 # v8::TryCatch.
551 suffix = '' 551 suffix = ''
552 552
553 if return_promise:
554 suffix += '_PROMISE'
555 args.append('info')
556 if macro == 'TONATIVE_VOID_EXCEPTIONSTATE':
557 args.append('ScriptState::current(%s)' % isolate)
558
553 if declare_variable: 559 if declare_variable:
554 args.insert(0, this_cpp_type) 560 args.insert(0, this_cpp_type)
555 else: 561 else:
556 suffix += '_INTERNAL' 562 suffix += '_INTERNAL'
557 563
558 return '%s(%s)' % (macro + suffix, ', '.join(args)) 564 return '%s(%s)' % (macro + suffix, ', '.join(args))
559 565
560 566
561 IdlType.v8_value_to_local_cpp_value = v8_value_to_local_cpp_value 567 IdlType.v8_value_to_local_cpp_value = v8_value_to_local_cpp_value
562 IdlUnionType.v8_value_to_local_cpp_value = v8_value_to_local_cpp_value 568 IdlUnionType.v8_value_to_local_cpp_value = v8_value_to_local_cpp_value
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
798 804
799 def is_explicit_nullable(idl_type): 805 def is_explicit_nullable(idl_type):
800 # Nullable type that isn't implicit nullable (see above.) For such types, 806 # Nullable type that isn't implicit nullable (see above.) For such types,
801 # we use Nullable<T> or similar explicit ways to represent a null value. 807 # we use Nullable<T> or similar explicit ways to represent a null value.
802 return idl_type.is_nullable and not idl_type.is_implicit_nullable 808 return idl_type.is_nullable and not idl_type.is_implicit_nullable
803 809
804 IdlType.is_implicit_nullable = property(is_implicit_nullable) 810 IdlType.is_implicit_nullable = property(is_implicit_nullable)
805 IdlType.is_explicit_nullable = property(is_explicit_nullable) 811 IdlType.is_explicit_nullable = property(is_explicit_nullable)
806 IdlUnionType.is_implicit_nullable = False 812 IdlUnionType.is_implicit_nullable = False
807 IdlUnionType.is_explicit_nullable = property(is_explicit_nullable) 813 IdlUnionType.is_explicit_nullable = property(is_explicit_nullable)
OLDNEW
« no previous file with comments | « Source/bindings/scripts/v8_methods.py ('k') | Source/bindings/templates/methods.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698