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

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

Issue 1029093003: [WIP] IDL: Add limited serializer support and use for RTCIceCandidate (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: use V8ObjectBuilder in modules/crypto Created 5 years, 9 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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 85
86 ################################################################################ 86 ################################################################################
87 # C++ types 87 # C++ types
88 ################################################################################ 88 ################################################################################
89 89
90 CPP_TYPE_SAME_AS_IDL_TYPE = set([ 90 CPP_TYPE_SAME_AS_IDL_TYPE = set([
91 'double', 91 'double',
92 'float', 92 'float',
93 'long long', 93 'long long',
94 'unsigned long long', 94 'unsigned long long',
95 'V8ObjectBuilder',
95 ]) 96 ])
96 CPP_INT_TYPES = set([ 97 CPP_INT_TYPES = set([
97 'byte', 98 'byte',
98 'long', 99 'long',
99 'short', 100 'short',
100 ]) 101 ])
101 CPP_UNSIGNED_TYPES = set([ 102 CPP_UNSIGNED_TYPES = set([
102 'octet', 103 'octet',
103 'unsigned int', 104 'unsigned int',
104 'unsigned long', 105 'unsigned long',
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 217
217 base_idl_type = idl_type.base_type 218 base_idl_type = idl_type.base_type
218 219
219 if idl_type.native_array_element_type: 220 if idl_type.native_array_element_type:
220 return '' 221 return ''
221 if idl_type.is_numeric_type: 222 if idl_type.is_numeric_type:
222 return ' = 0' 223 return ' = 0'
223 if base_idl_type == 'boolean': 224 if base_idl_type == 'boolean':
224 return ' = false' 225 return ' = false'
225 if (base_idl_type in NON_WRAPPER_TYPES or 226 if (base_idl_type in NON_WRAPPER_TYPES or
226 base_idl_type in CPP_SPECIAL_CONVERSION_RULES or 227 base_idl_type in CPP_SPECIAL_CONVERSION_RULES or
227 base_idl_type == 'any' or 228 base_idl_type == 'any' or
228 idl_type.is_string_type or 229 idl_type.is_string_type or
229 idl_type.is_enum): 230 idl_type.is_enum or
231 idl_type.is_dictionary or
232 idl_type.is_union_type):
230 return '' 233 return ''
234 if base_idl_type == 'V8ObjectBuilder':
235 return '(info.GetIsolate())'
231 return ' = nullptr' 236 return ' = nullptr'
232 237
233 238
234 # Allow access as idl_type.cpp_type if no arguments 239 # Allow access as idl_type.cpp_type if no arguments
235 IdlTypeBase.cpp_type = property(cpp_type) 240 IdlTypeBase.cpp_type = property(cpp_type)
236 IdlTypeBase.cpp_type_initializer = property(cpp_type_initializer) 241 IdlTypeBase.cpp_type_initializer = property(cpp_type_initializer)
237 IdlTypeBase.cpp_type_args = cpp_type 242 IdlTypeBase.cpp_type_args = cpp_type
238 IdlUnionType.cpp_type_initializer = '' 243 IdlUnionType.cpp_type_initializer = ''
239 244
240 245
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 'core/html/HTMLTableRowsCollection.h']), 361 'core/html/HTMLTableRowsCollection.h']),
357 'NodeList': set(['bindings/core/v8/V8NodeList.h', 362 'NodeList': set(['bindings/core/v8/V8NodeList.h',
358 'core/dom/NameNodeList.h', 363 'core/dom/NameNodeList.h',
359 'core/dom/NodeList.h', 364 'core/dom/NodeList.h',
360 'core/dom/StaticNodeList.h', 365 'core/dom/StaticNodeList.h',
361 'core/html/LabelsNodeList.h']), 366 'core/html/LabelsNodeList.h']),
362 'Promise': set(['bindings/core/v8/ScriptPromise.h']), 367 'Promise': set(['bindings/core/v8/ScriptPromise.h']),
363 'SerializedScriptValue': set(['bindings/core/v8/SerializedScriptValue.h', 368 'SerializedScriptValue': set(['bindings/core/v8/SerializedScriptValue.h',
364 'bindings/core/v8/SerializedScriptValueFactory .h']), 369 'bindings/core/v8/SerializedScriptValueFactory .h']),
365 'ScriptValue': set(['bindings/core/v8/ScriptValue.h']), 370 'ScriptValue': set(['bindings/core/v8/ScriptValue.h']),
371 'V8ObjectBuilder': set(['bindings/core/v8/V8ObjectBuilder.h']),
366 } 372 }
367 373
368 374
369 def includes_for_type(idl_type): 375 def includes_for_type(idl_type):
370 idl_type = idl_type.preprocessed_type 376 idl_type = idl_type.preprocessed_type
371 377
372 # Simple types 378 # Simple types
373 base_idl_type = idl_type.base_type 379 base_idl_type = idl_type.base_type
374 if base_idl_type in INCLUDES_FOR_TYPE: 380 if base_idl_type in INCLUDES_FOR_TYPE:
375 return INCLUDES_FOR_TYPE[base_idl_type] 381 return INCLUDES_FOR_TYPE[base_idl_type]
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 } 660 }
655 661
656 662
657 IdlTypeBase.v8_value_to_local_cpp_value = v8_value_to_local_cpp_value 663 IdlTypeBase.v8_value_to_local_cpp_value = v8_value_to_local_cpp_value
658 664
659 665
660 def use_output_parameter_for_result(idl_type): 666 def use_output_parameter_for_result(idl_type):
661 """True when methods/getters which return the given idl_type should 667 """True when methods/getters which return the given idl_type should
662 take the output argument. 668 take the output argument.
663 """ 669 """
664 return idl_type.is_dictionary or idl_type.is_union_type 670 return idl_type.is_dictionary or idl_type.is_union_type or idl_type.base_typ e == 'V8ObjectBuilder'
665 671
666 IdlTypeBase.use_output_parameter_for_result = property(use_output_parameter_for_ result) 672 IdlTypeBase.use_output_parameter_for_result = property(use_output_parameter_for_ result)
667 673
668 674
669 ################################################################################ 675 ################################################################################
670 # C++ -> V8 676 # C++ -> V8
671 ################################################################################ 677 ################################################################################
672 678
673 def preprocess_idl_type(idl_type): 679 def preprocess_idl_type(idl_type):
674 if idl_type.is_nullable: 680 if idl_type.is_nullable:
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 # DOMWrapper 799 # DOMWrapper
794 'DOMWrapperForMainWorld': 'v8SetReturnValueForMainWorld(info, WTF::getPtr({c pp_value}))', 800 'DOMWrapperForMainWorld': 'v8SetReturnValueForMainWorld(info, WTF::getPtr({c pp_value}))',
795 'DOMWrapperFast': 'v8SetReturnValueFast(info, WTF::getPtr({cpp_value}), {scr ipt_wrappable})', 801 'DOMWrapperFast': 'v8SetReturnValueFast(info, WTF::getPtr({cpp_value}), {scr ipt_wrappable})',
796 'DOMWrapperDefault': 'v8SetReturnValue(info, {cpp_value})', 802 'DOMWrapperDefault': 'v8SetReturnValue(info, {cpp_value})',
797 # Generic dictionary type 803 # Generic dictionary type
798 'Dictionary': 'v8SetReturnValue(info, {cpp_value})', 804 'Dictionary': 'v8SetReturnValue(info, {cpp_value})',
799 # Nullable dictionaries 805 # Nullable dictionaries
800 'NullableDictionary': 'v8SetReturnValue(info, result.get())', 806 'NullableDictionary': 'v8SetReturnValue(info, result.get())',
801 # Union types or dictionaries 807 # Union types or dictionaries
802 'DictionaryOrUnion': 'v8SetReturnValue(info, result)', 808 'DictionaryOrUnion': 'v8SetReturnValue(info, result)',
809 # Special container used for toJSON() resulting from serializer definitions.
810 'V8ObjectBuilder': 'v8SetReturnValue(info, result.v8Value())',
803 } 811 }
804 812
805 813
806 def v8_set_return_value(idl_type, cpp_value, extended_attributes=None, script_wr appable='', release=False, for_main_world=False): 814 def v8_set_return_value(idl_type, cpp_value, extended_attributes=None, script_wr appable='', release=False, for_main_world=False):
807 """Returns a statement that converts a C++ value to a V8 value and sets it a s a return value. 815 """Returns a statement that converts a C++ value to a V8 value and sets it a s a return value.
808 816
809 """ 817 """
810 def dom_wrapper_conversion_type(): 818 def dom_wrapper_conversion_type():
811 if not script_wrappable: 819 if not script_wrappable:
812 return 'DOMWrapperDefault' 820 return 'DOMWrapperDefault'
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
969 number_of_nullable_member_types_union) 977 number_of_nullable_member_types_union)
970 978
971 979
972 def includes_nullable_type_union(idl_type): 980 def includes_nullable_type_union(idl_type):
973 # http://heycam.github.io/webidl/#dfn-includes-a-nullable-type 981 # http://heycam.github.io/webidl/#dfn-includes-a-nullable-type
974 return idl_type.number_of_nullable_member_types == 1 982 return idl_type.number_of_nullable_member_types == 1
975 983
976 IdlTypeBase.includes_nullable_type = False 984 IdlTypeBase.includes_nullable_type = False
977 IdlNullableType.includes_nullable_type = True 985 IdlNullableType.includes_nullable_type = True
978 IdlUnionType.includes_nullable_type = property(includes_nullable_type_union) 986 IdlUnionType.includes_nullable_type = property(includes_nullable_type_union)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698