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

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

Issue 765673005: IDL: Null values should be converted for non-nullable dictionary members (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years 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 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Generate template contexts of dictionaries for both v8 bindings and 5 """Generate template contexts of dictionaries for both v8 bindings and
6 implementation classes that are used by blink's core/modules. 6 implementation classes that are used by blink's core/modules.
7 """ 7 """
8 8
9 import operator 9 import operator
10 from idl_types import IdlType 10 from idl_types import IdlType
(...skipping 10 matching lines...) Expand all
21 DICTIONARY_CPP_INCLUDES = frozenset([ 21 DICTIONARY_CPP_INCLUDES = frozenset([
22 'bindings/core/v8/ExceptionState.h', 22 'bindings/core/v8/ExceptionState.h',
23 ]) 23 ])
24 24
25 25
26 def setter_name_for_dictionary_member(member): 26 def setter_name_for_dictionary_member(member):
27 name = v8_utilities.cpp_name(member) 27 name = v8_utilities.cpp_name(member)
28 return 'set%s' % v8_utilities.capitalize(name) 28 return 'set%s' % v8_utilities.capitalize(name)
29 29
30 30
31 def resetter_name_for_dictionary_member(member):
32 name = v8_utilities.cpp_name(member)
33 return 'reset%s' % v8_utilities.capitalize(name)
34
35
31 def has_method_name_for_dictionary_member(member): 36 def has_method_name_for_dictionary_member(member):
32 name = v8_utilities.cpp_name(member) 37 name = v8_utilities.cpp_name(member)
33 return 'has%s' % v8_utilities.capitalize(name) 38 return 'has%s' % v8_utilities.capitalize(name)
34 39
35 40
36 def unwrap_nullable_if_needed(idl_type): 41 def unwrap_nullable_if_needed(idl_type):
37 if idl_type.is_nullable: 42 if idl_type.is_nullable:
38 return idl_type.inner_type 43 return idl_type.inner_type
39 return idl_type 44 return idl_type
40 45
(...skipping 20 matching lines...) Expand all
61 context.update({ 66 context.update({
62 'parent_cpp_class': parent_cpp_class, 67 'parent_cpp_class': parent_cpp_class,
63 'parent_v8_class': v8_types.v8_type(parent_cpp_class), 68 'parent_v8_class': v8_types.v8_type(parent_cpp_class),
64 }) 69 })
65 return context 70 return context
66 71
67 72
68 def member_context(member): 73 def member_context(member):
69 idl_type = member.idl_type 74 idl_type = member.idl_type
70 idl_type.add_includes_for_type() 75 idl_type.add_includes_for_type()
71 idl_type = unwrap_nullable_if_needed(idl_type) 76 unwrapped_idl_type = unwrap_nullable_if_needed(idl_type)
72 77
73 def default_values(): 78 def default_values():
74 if not member.default_value: 79 if not member.default_value:
75 return None, None 80 return None, None
76 if member.default_value.is_null: 81 if member.default_value.is_null:
77 return None, 'v8::Null(isolate)' 82 return None, 'v8::Null(isolate)'
78 cpp_default_value = str(member.default_value) 83 cpp_default_value = str(member.default_value)
79 v8_default_value = idl_type.cpp_value_to_v8_value( 84 v8_default_value = unwrapped_idl_type.cpp_value_to_v8_value(
80 cpp_value=cpp_default_value, isolate='isolate', 85 cpp_value=cpp_default_value, isolate='isolate',
81 creation_context='creationContext') 86 creation_context='creationContext')
82 return cpp_default_value, v8_default_value 87 return cpp_default_value, v8_default_value
83 88
84 cpp_default_value, v8_default_value = default_values() 89 cpp_default_value, v8_default_value = default_values()
85 cpp_name = v8_utilities.cpp_name(member) 90 cpp_name = v8_utilities.cpp_name(member)
86 91
87 return { 92 return {
88 'cpp_default_value': cpp_default_value, 93 'cpp_default_value': cpp_default_value,
89 'cpp_name': cpp_name, 94 'cpp_name': cpp_name,
90 'cpp_type': idl_type.cpp_type, 95 'cpp_type': unwrapped_idl_type.cpp_type,
91 'cpp_value_to_v8_value': idl_type.cpp_value_to_v8_value( 96 'cpp_value_to_v8_value': unwrapped_idl_type.cpp_value_to_v8_value(
92 cpp_value='impl.%s()' % cpp_name, isolate='isolate', 97 cpp_value='impl.%s()' % cpp_name, isolate='isolate',
93 creation_context='creationContext', 98 creation_context='creationContext',
94 extended_attributes=member.extended_attributes), 99 extended_attributes=member.extended_attributes),
95 'enum_validation_expression': idl_type.enum_validation_expression, 100 'enum_validation_expression': unwrapped_idl_type.enum_validation_express ion,
96 'has_method_name': has_method_name_for_dictionary_member(member), 101 'has_method_name': has_method_name_for_dictionary_member(member),
97 'is_object': idl_type.name == 'Object', 102 'is_nullable': idl_type.is_nullable,
103 'is_object': unwrapped_idl_type.name == 'Object',
98 'name': member.name, 104 'name': member.name,
99 'setter_name': setter_name_for_dictionary_member(member), 105 'setter_name': setter_name_for_dictionary_member(member),
100 'use_output_parameter_for_result': idl_type.use_output_parameter_for_res ult, 106 'resetter_name': resetter_name_for_dictionary_member(member),
107 'use_output_parameter_for_result': unwrapped_idl_type.use_output_paramet er_for_result,
101 'v8_default_value': v8_default_value, 108 'v8_default_value': v8_default_value,
102 'v8_value_to_local_cpp_value': idl_type.v8_value_to_local_cpp_value( 109 'v8_value_to_local_cpp_value': unwrapped_idl_type.v8_value_to_local_cpp_ value(
103 member.extended_attributes, member.name + 'Value', 110 member.extended_attributes, member.name + 'Value',
104 member.name, isolate='isolate'), 111 member.name, isolate='isolate'),
105 } 112 }
106 113
107 114
108 # Context for implementation classes 115 # Context for implementation classes
109 116
110 def dictionary_impl_context(dictionary, interfaces_info): 117 def dictionary_impl_context(dictionary, interfaces_info):
111 includes.clear() 118 includes.clear()
112 header_includes = set(['platform/heap/Handle.h']) 119 header_includes = set(['platform/heap/Handle.h'])
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 header_includes.update(idl_type.impl_includes_for_type(interfaces_info)) 165 header_includes.update(idl_type.impl_includes_for_type(interfaces_info))
159 return { 166 return {
160 'cpp_default_value': cpp_default_value, 167 'cpp_default_value': cpp_default_value,
161 'cpp_name': cpp_name, 168 'cpp_name': cpp_name,
162 'getter_expression': getter_expression(), 169 'getter_expression': getter_expression(),
163 'has_method_expression': has_method_expression(), 170 'has_method_expression': has_method_expression(),
164 'has_method_name': has_method_name_for_dictionary_member(member), 171 'has_method_name': has_method_name_for_dictionary_member(member),
165 'is_object': is_object, 172 'is_object': is_object,
166 'is_traceable': idl_type.is_traceable, 173 'is_traceable': idl_type.is_traceable,
167 'member_cpp_type': member_cpp_type(), 174 'member_cpp_type': member_cpp_type(),
175 'resetter_name': resetter_name_for_dictionary_member(member),
168 'rvalue_cpp_type': idl_type.cpp_type_args(used_as_rvalue_type=True), 176 'rvalue_cpp_type': idl_type.cpp_type_args(used_as_rvalue_type=True),
169 'setter_name': setter_name_for_dictionary_member(member), 177 'setter_name': setter_name_for_dictionary_member(member),
170 } 178 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698