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

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

Issue 2732093003: bindings: Add support for the record<K,V> WebIDL type. (Closed)
Patch Set: s/isolate->GetCurrentContext()/context/ Created 3 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 23 matching lines...) Expand all
34 class methods. 34 class methods.
35 35
36 Spec: 36 Spec:
37 http://www.w3.org/TR/WebIDL/#es-type-mapping 37 http://www.w3.org/TR/WebIDL/#es-type-mapping
38 38
39 Design doc: http://www.chromium.org/developers/design-documents/idl-compiler 39 Design doc: http://www.chromium.org/developers/design-documents/idl-compiler
40 """ 40 """
41 41
42 import posixpath 42 import posixpath
43 43
44 from idl_types import IdlTypeBase, IdlType, IdlUnionType, IdlArrayOrSequenceType , IdlNullableType 44 from idl_types import IdlArrayOrSequenceType
45 from idl_types import IdlNullableType
46 from idl_types import IdlRecordType
47 from idl_types import IdlType
48 from idl_types import IdlTypeBase
49 from idl_types import IdlUnionType
45 import v8_attributes # for IdlType.constructor_type_name 50 import v8_attributes # for IdlType.constructor_type_name
46 from v8_globals import includes 51 from v8_globals import includes
47 from v8_utilities import extended_attribute_value_contains 52 from v8_utilities import extended_attribute_value_contains
48 53
49 54
50 ################################################################################ 55 ################################################################################
51 # V8-specific handling of IDL types 56 # V8-specific handling of IDL types
52 ################################################################################ 57 ################################################################################
53 58
54 NON_WRAPPER_TYPES = frozenset([ 59 NON_WRAPPER_TYPES = frozenset([
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 IdlType 138 IdlType
134 raw_type: 139 raw_type:
135 bool, True if idl_type's raw/primitive C++ type should be returned. 140 bool, True if idl_type's raw/primitive C++ type should be returned.
136 used_as_rvalue_type: 141 used_as_rvalue_type:
137 bool, True if the C++ type is used as an argument or the return 142 bool, True if the C++ type is used as an argument or the return
138 type of a method. 143 type of a method.
139 used_as_variadic_argument: 144 used_as_variadic_argument:
140 bool, True if the C++ type is used as a variadic argument of a metho d. 145 bool, True if the C++ type is used as a variadic argument of a metho d.
141 used_in_cpp_sequence: 146 used_in_cpp_sequence:
142 bool, True if the C++ type is used as an element of a container. 147 bool, True if the C++ type is used as an element of a container.
143 Containers can be an array, a sequence or a dictionary. 148 Containers can be an array, a sequence, a dictionary or a record.
144 """ 149 """
145 def string_mode(): 150 def string_mode():
146 if idl_type.is_nullable: 151 if idl_type.is_nullable:
147 return 'TreatNullAndUndefinedAsNullString' 152 return 'TreatNullAndUndefinedAsNullString'
148 if extended_attributes.get('TreatNullAs') == 'EmptyString': 153 if extended_attributes.get('TreatNullAs') == 'EmptyString':
149 return 'TreatNullAsEmptyString' 154 return 'TreatNullAsEmptyString'
150 if extended_attributes.get('TreatNullAs') == 'NullString': 155 if extended_attributes.get('TreatNullAs') == 'NullString':
151 return 'TreatNullAsNullString' 156 return 'TreatNullAsNullString'
152 return '' 157 return ''
153 158
154 extended_attributes = extended_attributes or {} 159 extended_attributes = extended_attributes or {}
155 idl_type = idl_type.preprocessed_type 160 idl_type = idl_type.preprocessed_type
156 161
157 # Array or sequence types 162 # Array or sequence types
158 if used_as_variadic_argument: 163 if used_as_variadic_argument:
159 native_array_element_type = idl_type 164 native_array_element_type = idl_type
160 else: 165 else:
161 native_array_element_type = idl_type.native_array_element_type 166 native_array_element_type = idl_type.native_array_element_type
162 if native_array_element_type: 167 if native_array_element_type:
163 vector_type = cpp_ptr_type('Vector', 'HeapVector', native_array_element_ type.is_gc_type) 168 vector_type = cpp_ptr_type('Vector', 'HeapVector', native_array_element_ type.is_gc_type)
164 vector_template_type = cpp_template_type(vector_type, native_array_eleme nt_type.cpp_type_args(used_in_cpp_sequence=True)) 169 vector_template_type = cpp_template_type(vector_type, native_array_eleme nt_type.cpp_type_args(used_in_cpp_sequence=True))
165 if used_as_rvalue_type: 170 if used_as_rvalue_type:
166 return 'const %s&' % vector_template_type 171 return 'const %s&' % vector_template_type
167 return vector_template_type 172 return vector_template_type
168 173
174 # Record types.
175 if idl_type.is_record_type:
176 vector_type = cpp_ptr_type('Vector', 'HeapVector', idl_type.value_type.i s_gc_type)
177 value_type = idl_type.value_type.cpp_type_args(used_in_cpp_sequence=True )
178 vector_template_type = cpp_template_type(vector_type,
179 'std::pair<String, %s>' % value _type)
180 if used_as_rvalue_type:
181 return 'const %s&' % vector_template_type
182 return vector_template_type
183
169 # Simple types 184 # Simple types
170 base_idl_type = idl_type.base_type 185 base_idl_type = idl_type.base_type
171 186
172 if base_idl_type in CPP_TYPE_SAME_AS_IDL_TYPE: 187 if base_idl_type in CPP_TYPE_SAME_AS_IDL_TYPE:
173 return base_idl_type 188 return base_idl_type
174 if base_idl_type in CPP_INTEGER_CONVERSION_RULES: 189 if base_idl_type in CPP_INTEGER_CONVERSION_RULES:
175 return CPP_INTEGER_CONVERSION_RULES[base_idl_type] 190 return CPP_INTEGER_CONVERSION_RULES[base_idl_type]
176 if base_idl_type in CPP_SPECIAL_CONVERSION_RULES: 191 if base_idl_type in CPP_SPECIAL_CONVERSION_RULES:
177 return CPP_SPECIAL_CONVERSION_RULES[base_idl_type] 192 return CPP_SPECIAL_CONVERSION_RULES[base_idl_type]
178 193
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 IdlTypeBase.is_gc_type = property(is_gc_type) 325 IdlTypeBase.is_gc_type = property(is_gc_type)
311 326
312 327
313 def is_traceable(idl_type): 328 def is_traceable(idl_type):
314 return (idl_type.is_garbage_collected or idl_type.is_dictionary) 329 return (idl_type.is_garbage_collected or idl_type.is_dictionary)
315 330
316 IdlTypeBase.is_traceable = property(is_traceable) 331 IdlTypeBase.is_traceable = property(is_traceable)
317 IdlUnionType.is_traceable = property(lambda self: True) 332 IdlUnionType.is_traceable = property(lambda self: True)
318 IdlArrayOrSequenceType.is_traceable = property( 333 IdlArrayOrSequenceType.is_traceable = property(
319 lambda self: self.element_type.is_traceable) 334 lambda self: self.element_type.is_traceable)
335 IdlRecordType.is_traceable = property(
336 lambda self: self.value_type.is_traceable)
320 337
321 338
322 ################################################################################ 339 ################################################################################
323 # Includes 340 # Includes
324 ################################################################################ 341 ################################################################################
325 342
326 INCLUDES_FOR_TYPE = { 343 INCLUDES_FOR_TYPE = {
327 'object': set(), 344 'object': set(),
328 'ArrayBufferView': set(['bindings/core/v8/V8ArrayBufferView.h', 345 'ArrayBufferView': set(['bindings/core/v8/V8ArrayBufferView.h',
329 'core/dom/FlexibleArrayBufferView.h']), 346 'core/dom/FlexibleArrayBufferView.h']),
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 413
397 IdlUnionType.includes_for_type = includes_for_union_type 414 IdlUnionType.includes_for_type = includes_for_union_type
398 415
399 416
400 def includes_for_array_or_sequence_type(idl_type, extended_attributes=None): 417 def includes_for_array_or_sequence_type(idl_type, extended_attributes=None):
401 return idl_type.element_type.includes_for_type(extended_attributes) 418 return idl_type.element_type.includes_for_type(extended_attributes)
402 419
403 IdlArrayOrSequenceType.includes_for_type = includes_for_array_or_sequence_type 420 IdlArrayOrSequenceType.includes_for_type = includes_for_array_or_sequence_type
404 421
405 422
423 def includes_for_record_type(idl_type, extended_attributes=None):
424 return set.union(idl_type.key_type.includes_for_type(extended_attributes),
425 idl_type.value_type.includes_for_type(extended_attributes))
426
427 IdlRecordType.includes_for_type = includes_for_record_type
428
429
406 def add_includes_for_type(idl_type, extended_attributes=None): 430 def add_includes_for_type(idl_type, extended_attributes=None):
407 includes.update(idl_type.includes_for_type(extended_attributes)) 431 includes.update(idl_type.includes_for_type(extended_attributes))
408 432
409 IdlTypeBase.add_includes_for_type = add_includes_for_type 433 IdlTypeBase.add_includes_for_type = add_includes_for_type
410 434
411 435
412 def includes_for_interface(interface_name): 436 def includes_for_interface(interface_name):
413 return IdlType(interface_name).includes_for_type() 437 return IdlType(interface_name).includes_for_type()
414 438
415 439
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 516
493 517
494 def v8_conversion_needs_exception_state(idl_type): 518 def v8_conversion_needs_exception_state(idl_type):
495 return (idl_type.is_numeric_type or 519 return (idl_type.is_numeric_type or
496 idl_type.is_enum or 520 idl_type.is_enum or
497 idl_type.is_dictionary or 521 idl_type.is_dictionary or
498 idl_type.name in ('Boolean', 'ByteString', 'Date', 'Dictionary', 'US VString', 'SerializedScriptValue')) 522 idl_type.name in ('Boolean', 'ByteString', 'Date', 'Dictionary', 'US VString', 'SerializedScriptValue'))
499 523
500 IdlType.v8_conversion_needs_exception_state = property(v8_conversion_needs_excep tion_state) 524 IdlType.v8_conversion_needs_exception_state = property(v8_conversion_needs_excep tion_state)
501 IdlArrayOrSequenceType.v8_conversion_needs_exception_state = True 525 IdlArrayOrSequenceType.v8_conversion_needs_exception_state = True
526 IdlRecordType.v8_conversion_needs_exception_state = True
502 IdlUnionType.v8_conversion_needs_exception_state = True 527 IdlUnionType.v8_conversion_needs_exception_state = True
503 528
504 529
505 TRIVIAL_CONVERSIONS = frozenset([ 530 TRIVIAL_CONVERSIONS = frozenset([
506 'any', 531 'any',
507 'boolean', 532 'boolean',
508 'Date', 533 'Date',
509 'Dictionary', 534 'Dictionary',
510 'NodeFilter', 535 'NodeFilter',
511 'XPathNSResolver', 536 'XPathNSResolver',
512 'Promise' 537 'Promise'
513 ]) 538 ])
514 539
515 540
516 def v8_conversion_is_trivial(idl_type): 541 def v8_conversion_is_trivial(idl_type):
517 # The conversion is a simple expression that returns the converted value and 542 # The conversion is a simple expression that returns the converted value and
518 # cannot raise an exception. 543 # cannot raise an exception.
519 return (idl_type.base_type in TRIVIAL_CONVERSIONS or 544 return (idl_type.base_type in TRIVIAL_CONVERSIONS or
520 idl_type.is_wrapper_type) 545 idl_type.is_wrapper_type)
521 546
522 IdlType.v8_conversion_is_trivial = property(v8_conversion_is_trivial) 547 IdlType.v8_conversion_is_trivial = property(v8_conversion_is_trivial)
523 548
524 549
550 def native_value_traits_type_name(idl_type):
551 if idl_type.is_nullable:
552 idl_type = idl_type.inner_type
553
554 if idl_type.native_array_element_type:
555 name = 'IDLSequence<%s>' % native_value_traits_type_name(idl_type.native _array_element_type)
556 elif idl_type.is_record_type:
557 name = 'IDLRecord<%s, %s>' % (native_value_traits_type_name(idl_type.key _type),
558 native_value_traits_type_name(idl_type.val ue_type))
559 elif idl_type.is_basic_type or idl_type.name == 'Promise':
560 name = 'IDL%s' % idl_type.name
561 elif idl_type.implemented_as is not None:
562 name = idl_type.implemented_as
563 else:
564 name = idl_type.name
565 return name
566
567
525 def v8_value_to_cpp_value(idl_type, extended_attributes, v8_value, variable_name , index, isolate): 568 def v8_value_to_cpp_value(idl_type, extended_attributes, v8_value, variable_name , index, isolate):
526 if idl_type.name == 'void': 569 if idl_type.name == 'void':
527 return '' 570 return ''
528 571
529 # Array or sequence types 572 # Array or sequence types
530 native_array_element_type = idl_type.native_array_element_type 573 native_array_element_type = idl_type.native_array_element_type
531 if native_array_element_type: 574 if native_array_element_type:
532 return v8_value_to_cpp_value_array_or_sequence(native_array_element_type , v8_value, index, isolate) 575 return v8_value_to_cpp_value_array_or_sequence(native_array_element_type , v8_value, index, isolate)
533 576
534 # Simple types 577 # Simple types
(...skipping 27 matching lines...) Expand all
562 nullable = 'UnionTypeConversionMode::Nullable' if idl_type.includes_null able_type else 'UnionTypeConversionMode::NotNullable' 605 nullable = 'UnionTypeConversionMode::Nullable' if idl_type.includes_null able_type else 'UnionTypeConversionMode::NotNullable'
563 cpp_expression_format = 'V8{idl_type}::toImpl({isolate}, {v8_value}, {va riable_name}, %s, exceptionState)' % nullable 606 cpp_expression_format = 'V8{idl_type}::toImpl({isolate}, {v8_value}, {va riable_name}, %s, exceptionState)' % nullable
564 elif idl_type.use_output_parameter_for_result: 607 elif idl_type.use_output_parameter_for_result:
565 cpp_expression_format = 'V8{idl_type}::toImpl({isolate}, {v8_value}, {va riable_name}, exceptionState)' 608 cpp_expression_format = 'V8{idl_type}::toImpl({isolate}, {v8_value}, {va riable_name}, exceptionState)'
566 elif idl_type.is_callback_function: 609 elif idl_type.is_callback_function:
567 cpp_expression_format = ( 610 cpp_expression_format = (
568 '{idl_type}::create(ScriptState::current({isolate}), {v8_value})') 611 '{idl_type}::create(ScriptState::current({isolate}), {v8_value})')
569 elif idl_type.v8_conversion_needs_exception_state: 612 elif idl_type.v8_conversion_needs_exception_state:
570 # Effectively, this if branch means everything with v8_conversion_needs_ exception_state == True 613 # Effectively, this if branch means everything with v8_conversion_needs_ exception_state == True
571 # except for unions, sequences and dictionary interfaces. 614 # except for unions, sequences and dictionary interfaces.
572 if idl_type.is_nullable: 615 base_idl_type = native_value_traits_type_name(idl_type)
573 idl_type = idl_type.inner_type
574 if idl_type.is_primitive_type or idl_type.name in ('ByteString', 'Date', 'Promise', 'USVString'):
575 trait_type = 'IDL%s' % idl_type.name
576 else:
577 trait_type = idl_type.name
578 cpp_expression_format = ( 616 cpp_expression_format = (
579 'NativeValueTraits<%s>::nativeValue({isolate}, {arguments})' % trait _type) 617 'NativeValueTraits<{idl_type}>::nativeValue({isolate}, {arguments})' )
580 else: 618 else:
581 cpp_expression_format = ( 619 cpp_expression_format = (
582 'V8{idl_type}::toImplWithTypeCheck({isolate}, {v8_value})') 620 'V8{idl_type}::toImplWithTypeCheck({isolate}, {v8_value})')
583 621
584 return cpp_expression_format.format(arguments=arguments, idl_type=base_idl_t ype, v8_value=v8_value, variable_name=variable_name, isolate=isolate) 622 return cpp_expression_format.format(arguments=arguments, idl_type=base_idl_t ype, v8_value=v8_value, variable_name=variable_name, isolate=isolate)
585 623
586 624
587 def v8_value_to_cpp_value_array_or_sequence(native_array_element_type, v8_value, index, isolate='info.GetIsolate()'): 625 def v8_value_to_cpp_value_array_or_sequence(native_array_element_type, v8_value, index, isolate='info.GetIsolate()'):
588 # Index is None for setters, index (starting at 0) for method arguments, 626 # Index is None for setters, index (starting at 0) for method arguments,
589 # and is used to provide a human-readable exception message 627 # and is used to provide a human-readable exception message
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 return 'NullableDictionary' 779 return 'NullableDictionary'
742 780
743 if idl_type.is_dictionary or idl_type.is_union_type: 781 if idl_type.is_dictionary or idl_type.is_union_type:
744 return 'DictionaryOrUnion' 782 return 'DictionaryOrUnion'
745 783
746 # Array or sequence types 784 # Array or sequence types
747 native_array_element_type = idl_type.native_array_element_type 785 native_array_element_type = idl_type.native_array_element_type
748 if native_array_element_type: 786 if native_array_element_type:
749 return 'FrozenArray' if idl_type.is_frozen_array else 'array' 787 return 'FrozenArray' if idl_type.is_frozen_array else 'array'
750 788
789 # Record types.
790 if idl_type.is_record_type:
791 return 'Record'
792
751 # Simple types 793 # Simple types
752 base_idl_type = idl_type.base_type 794 base_idl_type = idl_type.base_type
753 # Basic types, without additional includes 795 # Basic types, without additional includes
754 if base_idl_type in CPP_INTEGER_CONVERSION_RULES: 796 if base_idl_type in CPP_INTEGER_CONVERSION_RULES:
755 return CPP_INTEGER_CONVERSION_RULES[base_idl_type] 797 return CPP_INTEGER_CONVERSION_RULES[base_idl_type]
756 if idl_type.is_string_type: 798 if idl_type.is_string_type:
757 if idl_type.is_nullable: 799 if idl_type.is_nullable:
758 return 'StringOrNull' 800 return 'StringOrNull'
759 return base_idl_type 801 return base_idl_type
760 if idl_type.is_basic_type or base_idl_type == 'ScriptValue': 802 if idl_type.is_basic_type or base_idl_type == 'ScriptValue':
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 'double': 'v8SetReturnValue(info, {cpp_value})', 837 'double': 'v8SetReturnValue(info, {cpp_value})',
796 'unrestricted double': 'v8SetReturnValue(info, {cpp_value})', 838 'unrestricted double': 'v8SetReturnValue(info, {cpp_value})',
797 # No special v8SetReturnValue* function, but instead convert value to V8 839 # No special v8SetReturnValue* function, but instead convert value to V8
798 # and then use general v8SetReturnValue. 840 # and then use general v8SetReturnValue.
799 'array': 'v8SetReturnValue(info, {cpp_value})', 841 'array': 'v8SetReturnValue(info, {cpp_value})',
800 'FrozenArray': 'v8SetReturnValue(info, {cpp_value})', 842 'FrozenArray': 'v8SetReturnValue(info, {cpp_value})',
801 'Date': 'v8SetReturnValue(info, {cpp_value})', 843 'Date': 'v8SetReturnValue(info, {cpp_value})',
802 'EventHandler': 'v8SetReturnValue(info, {cpp_value})', 844 'EventHandler': 'v8SetReturnValue(info, {cpp_value})',
803 'ScriptValue': 'v8SetReturnValue(info, {cpp_value})', 845 'ScriptValue': 'v8SetReturnValue(info, {cpp_value})',
804 'SerializedScriptValue': 'v8SetReturnValue(info, {cpp_value})', 846 'SerializedScriptValue': 'v8SetReturnValue(info, {cpp_value})',
847 # Records.
848 'Record': 'v8SetReturnValue(info, ToV8({cpp_value}, info.Holder(), info.GetI solate()))',
805 # DOMWrapper 849 # DOMWrapper
806 'DOMWrapperForMainWorld': 'v8SetReturnValueForMainWorld(info, {cpp_value})', 850 'DOMWrapperForMainWorld': 'v8SetReturnValueForMainWorld(info, {cpp_value})',
807 'DOMWrapperFast': 'v8SetReturnValueFast(info, {cpp_value}, {script_wrappable })', 851 'DOMWrapperFast': 'v8SetReturnValueFast(info, {cpp_value}, {script_wrappable })',
808 'DOMWrapperDefault': 'v8SetReturnValue(info, {cpp_value})', 852 'DOMWrapperDefault': 'v8SetReturnValue(info, {cpp_value})',
809 # If [CheckSecurity=ReturnValue] is specified, the returned object must be 853 # If [CheckSecurity=ReturnValue] is specified, the returned object must be
810 # wrapped in its own realm, which can be different from the realm of the 854 # wrapped in its own realm, which can be different from the realm of the
811 # receiver object. 855 # receiver object.
812 # 856 #
813 # [CheckSecurity=ReturnValue] is used only for contentDocument and 857 # [CheckSecurity=ReturnValue] is used only for contentDocument and
814 # getSVGDocument attributes of HTML{IFrame,Frame,Object,Embed}Element, 858 # getSVGDocument attributes of HTML{IFrame,Frame,Object,Embed}Element,
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 'unrestricted double': 'v8::Number::New({isolate}, {cpp_value})', 940 'unrestricted double': 'v8::Number::New({isolate}, {cpp_value})',
897 'void': 'v8Undefined()', 941 'void': 'v8Undefined()',
898 'StringOrNull': '{cpp_value}.isNull() ? v8::Local<v8::Value>(v8::Null({isola te})) : v8String({isolate}, {cpp_value})', 942 'StringOrNull': '{cpp_value}.isNull() ? v8::Local<v8::Value>(v8::Null({isola te})) : v8String({isolate}, {cpp_value})',
899 # Special cases 943 # Special cases
900 'Dictionary': '{cpp_value}.v8Value()', 944 'Dictionary': '{cpp_value}.v8Value()',
901 'EventHandler': ( 945 'EventHandler': (
902 '{cpp_value} ? ' + 946 '{cpp_value} ? ' +
903 'V8AbstractEventListener::cast({cpp_value})->getListenerOrNull(' + 947 'V8AbstractEventListener::cast({cpp_value})->getListenerOrNull(' +
904 '{isolate}, impl->getExecutionContext()) : ' + 948 '{isolate}, impl->getExecutionContext()) : ' +
905 'v8::Null({isolate}).As<v8::Value>()'), 949 'v8::Null({isolate}).As<v8::Value>()'),
950 'Record': 'ToV8({cpp_value}, {creation_context}, {isolate})',
906 'ScriptValue': '{cpp_value}.v8Value()', 951 'ScriptValue': '{cpp_value}.v8Value()',
907 'SerializedScriptValue': 'v8Deserialize({isolate}, {cpp_value})', 952 'SerializedScriptValue': 'v8Deserialize({isolate}, {cpp_value})',
908 # General 953 # General
909 'array': 'ToV8({cpp_value}, {creation_context}, {isolate})', 954 'array': 'ToV8({cpp_value}, {creation_context}, {isolate})',
910 'FrozenArray': 'freezeV8Object(ToV8({cpp_value}, {creation_context}, {isolat e}), {isolate})', 955 'FrozenArray': 'freezeV8Object(ToV8({cpp_value}, {creation_context}, {isolat e}), {isolate})',
911 'DOMWrapper': 'ToV8({cpp_value}, {creation_context}, {isolate})', 956 'DOMWrapper': 'ToV8({cpp_value}, {creation_context}, {isolate})',
912 # Passing nullable dictionaries isn't a pattern currently used 957 # Passing nullable dictionaries isn't a pattern currently used
913 # anywhere in the web platform, and more work would be needed in 958 # anywhere in the web platform, and more work would be needed in
914 # the code generator to distinguish between passing null, and 959 # the code generator to distinguish between passing null, and
915 # passing an object which happened to not contain any of the 960 # passing an object which happened to not contain any of the
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1029 number_of_nullable_member_types_union) 1074 number_of_nullable_member_types_union)
1030 1075
1031 1076
1032 def includes_nullable_type_union(idl_type): 1077 def includes_nullable_type_union(idl_type):
1033 # http://heycam.github.io/webidl/#dfn-includes-a-nullable-type 1078 # http://heycam.github.io/webidl/#dfn-includes-a-nullable-type
1034 return idl_type.number_of_nullable_member_types == 1 1079 return idl_type.number_of_nullable_member_types == 1
1035 1080
1036 IdlTypeBase.includes_nullable_type = False 1081 IdlTypeBase.includes_nullable_type = False
1037 IdlNullableType.includes_nullable_type = True 1082 IdlNullableType.includes_nullable_type = True
1038 IdlUnionType.includes_nullable_type = property(includes_nullable_type_union) 1083 IdlUnionType.includes_nullable_type = property(includes_nullable_type_union)
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/bindings/scripts/v8_interface.py ('k') | third_party/WebKit/Source/bindings/scripts/v8_union.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698