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

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

Issue 2791133002: bindings: Explicitly pass ValueType to toImplArray (Closed)
Patch Set: Fix tests Created 3 years, 8 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 621 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 if (native_array_element_type.is_interface_type and 632 if (native_array_element_type.is_interface_type and
633 native_array_element_type.name != 'Dictionary'): 633 native_array_element_type.name != 'Dictionary'):
634 this_cpp_type = None 634 this_cpp_type = None
635 expression_format = 'toMemberNativeArray<{native_array_element_type}>({v 8_value}, {index}, {isolate}, exceptionState)' 635 expression_format = 'toMemberNativeArray<{native_array_element_type}>({v 8_value}, {index}, {isolate}, exceptionState)'
636 else: 636 else:
637 this_cpp_type = native_array_element_type.cpp_type 637 this_cpp_type = native_array_element_type.cpp_type
638 if native_array_element_type.is_dictionary or native_array_element_type. is_union_type: 638 if native_array_element_type.is_dictionary or native_array_element_type. is_union_type:
639 vector_type = 'HeapVector' 639 vector_type = 'HeapVector'
640 else: 640 else:
641 vector_type = 'Vector' 641 vector_type = 'Vector'
642 expression_format = 'toImplArray<%s<{cpp_type}>>({v8_value}, {index}, {i solate}, exceptionState)' % vector_type 642 if native_array_element_type.is_primitive_type:
haraken 2017/04/03 04:29:02 Why do we need to limit this to primitive types?
bashi 2017/04/03 04:42:34 Just to minimize the impact of changes to see if t
bashi 2017/04/03 05:06:25 Looks like we need to improve coverage of native_v
Raphael Kubo da Costa (rakuco) 2017/04/06 13:22:36 (belatedly adding myself to the party) Are you ac
643 value_type = native_value_traits_type_name(native_array_element_type )
644 expression_format = ('toImplArray<%s<{cpp_type}>, %s>'
645 '({v8_value}, {index}, {isolate}, '
646 'exceptionState)' % (vector_type, value_type))
647 else:
648 expression_format = ('toImplArray<%s<{cpp_type}>>'
649 '({v8_value}, {index}, {isolate}, '
650 'exceptionState)' % vector_type)
651
643 expression = expression_format.format(native_array_element_type=native_array _element_type.name, cpp_type=this_cpp_type, 652 expression = expression_format.format(native_array_element_type=native_array _element_type.name, cpp_type=this_cpp_type,
644 index=index, v8_value=v8_value, isolat e=isolate) 653 index=index, v8_value=v8_value, isolat e=isolate)
645 return expression 654 return expression
646 655
647 656
648 # FIXME: this function should be refactored, as this takes too many flags. 657 # FIXME: this function should be refactored, as this takes too many flags.
649 def v8_value_to_local_cpp_value(idl_type, extended_attributes, v8_value, variabl e_name, index=None, declare_variable=True, 658 def v8_value_to_local_cpp_value(idl_type, extended_attributes, v8_value, variabl e_name, index=None, declare_variable=True,
650 isolate='info.GetIsolate()', bailout_return_valu e=None, use_exception_state=False): 659 isolate='info.GetIsolate()', bailout_return_valu e=None, use_exception_state=False):
651 """Returns an expression that converts a V8 value to a C++ value and stores it as a local value.""" 660 """Returns an expression that converts a V8 value to a C++ value and stores it as a local value."""
652 661
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
1059 IdlTypeBase.is_explicit_nullable = property(is_explicit_nullable) 1068 IdlTypeBase.is_explicit_nullable = property(is_explicit_nullable)
1060 1069
1061 1070
1062 def includes_nullable_type_union(idl_type): 1071 def includes_nullable_type_union(idl_type):
1063 # http://heycam.github.io/webidl/#dfn-includes-a-nullable-type 1072 # http://heycam.github.io/webidl/#dfn-includes-a-nullable-type
1064 return idl_type.number_of_nullable_member_types == 1 1073 return idl_type.number_of_nullable_member_types == 1
1065 1074
1066 IdlTypeBase.includes_nullable_type = False 1075 IdlTypeBase.includes_nullable_type = False
1067 IdlNullableType.includes_nullable_type = True 1076 IdlNullableType.includes_nullable_type = True
1068 IdlUnionType.includes_nullable_type = property(includes_nullable_type_union) 1077 IdlUnionType.includes_nullable_type = property(includes_nullable_type_union)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698