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

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

Issue 768793002: Revert of 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 null_setter_name_for_dictionary_member(member):
32 if member.idl_type.is_nullable:
33 name = v8_utilities.cpp_name(member)
34 return 'set%sToNull' % v8_utilities.capitalize(name)
35 return None
36
37
38 def has_method_name_for_dictionary_member(member): 31 def has_method_name_for_dictionary_member(member):
39 name = v8_utilities.cpp_name(member) 32 name = v8_utilities.cpp_name(member)
40 return 'has%s' % v8_utilities.capitalize(name) 33 return 'has%s' % v8_utilities.capitalize(name)
41 34
42 35
43 def unwrap_nullable_if_needed(idl_type): 36 def unwrap_nullable_if_needed(idl_type):
44 if idl_type.is_nullable: 37 if idl_type.is_nullable:
45 return idl_type.inner_type 38 return idl_type.inner_type
46 return idl_type 39 return idl_type
47 40
(...skipping 20 matching lines...) Expand all
68 context.update({ 61 context.update({
69 'parent_cpp_class': parent_cpp_class, 62 'parent_cpp_class': parent_cpp_class,
70 'parent_v8_class': v8_types.v8_type(parent_cpp_class), 63 'parent_v8_class': v8_types.v8_type(parent_cpp_class),
71 }) 64 })
72 return context 65 return context
73 66
74 67
75 def member_context(member): 68 def member_context(member):
76 idl_type = member.idl_type 69 idl_type = member.idl_type
77 idl_type.add_includes_for_type() 70 idl_type.add_includes_for_type()
78 unwrapped_idl_type = unwrap_nullable_if_needed(idl_type) 71 idl_type = unwrap_nullable_if_needed(idl_type)
79 72
80 def default_values(): 73 def default_values():
81 if not member.default_value: 74 if not member.default_value:
82 return None, None 75 return None, None
83 if member.default_value.is_null: 76 if member.default_value.is_null:
84 return None, 'v8::Null(isolate)' 77 return None, 'v8::Null(isolate)'
85 cpp_default_value = str(member.default_value) 78 cpp_default_value = str(member.default_value)
86 v8_default_value = unwrapped_idl_type.cpp_value_to_v8_value( 79 v8_default_value = idl_type.cpp_value_to_v8_value(
87 cpp_value=cpp_default_value, isolate='isolate', 80 cpp_value=cpp_default_value, isolate='isolate',
88 creation_context='creationContext') 81 creation_context='creationContext')
89 return cpp_default_value, v8_default_value 82 return cpp_default_value, v8_default_value
90 83
91 cpp_default_value, v8_default_value = default_values() 84 cpp_default_value, v8_default_value = default_values()
92 cpp_name = v8_utilities.cpp_name(member) 85 cpp_name = v8_utilities.cpp_name(member)
93 86
94 return { 87 return {
95 'cpp_default_value': cpp_default_value, 88 'cpp_default_value': cpp_default_value,
96 'cpp_name': cpp_name, 89 'cpp_name': cpp_name,
97 'cpp_type': unwrapped_idl_type.cpp_type, 90 'cpp_type': idl_type.cpp_type,
98 'cpp_value_to_v8_value': unwrapped_idl_type.cpp_value_to_v8_value( 91 'cpp_value_to_v8_value': idl_type.cpp_value_to_v8_value(
99 cpp_value='impl.%s()' % cpp_name, isolate='isolate', 92 cpp_value='impl.%s()' % cpp_name, isolate='isolate',
100 creation_context='creationContext', 93 creation_context='creationContext',
101 extended_attributes=member.extended_attributes), 94 extended_attributes=member.extended_attributes),
102 'enum_validation_expression': unwrapped_idl_type.enum_validation_express ion, 95 'enum_validation_expression': idl_type.enum_validation_expression,
103 'has_method_name': has_method_name_for_dictionary_member(member), 96 'has_method_name': has_method_name_for_dictionary_member(member),
104 'is_nullable': idl_type.is_nullable, 97 'is_object': idl_type.name == 'Object',
105 'is_object': unwrapped_idl_type.name == 'Object',
106 'name': member.name, 98 'name': member.name,
107 'setter_name': setter_name_for_dictionary_member(member), 99 'setter_name': setter_name_for_dictionary_member(member),
108 'null_setter_name': null_setter_name_for_dictionary_member(member), 100 'use_output_parameter_for_result': idl_type.use_output_parameter_for_res ult,
109 'use_output_parameter_for_result': unwrapped_idl_type.use_output_paramet er_for_result,
110 'v8_default_value': v8_default_value, 101 'v8_default_value': v8_default_value,
111 'v8_value_to_local_cpp_value': unwrapped_idl_type.v8_value_to_local_cpp_ value( 102 'v8_value_to_local_cpp_value': idl_type.v8_value_to_local_cpp_value(
112 member.extended_attributes, member.name + 'Value', 103 member.extended_attributes, member.name + 'Value',
113 member.name, isolate='isolate'), 104 member.name, isolate='isolate'),
114 } 105 }
115 106
116 107
117 # Context for implementation classes 108 # Context for implementation classes
118 109
119 def dictionary_impl_context(dictionary, interfaces_info): 110 def dictionary_impl_context(dictionary, interfaces_info):
120 includes.clear() 111 includes.clear()
121 header_includes = set(['platform/heap/Handle.h']) 112 header_includes = set(['platform/heap/Handle.h'])
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 header_includes.update(idl_type.impl_includes_for_type(interfaces_info)) 158 header_includes.update(idl_type.impl_includes_for_type(interfaces_info))
168 return { 159 return {
169 'cpp_default_value': cpp_default_value, 160 'cpp_default_value': cpp_default_value,
170 'cpp_name': cpp_name, 161 'cpp_name': cpp_name,
171 'getter_expression': getter_expression(), 162 'getter_expression': getter_expression(),
172 'has_method_expression': has_method_expression(), 163 'has_method_expression': has_method_expression(),
173 'has_method_name': has_method_name_for_dictionary_member(member), 164 'has_method_name': has_method_name_for_dictionary_member(member),
174 'is_object': is_object, 165 'is_object': is_object,
175 'is_traceable': idl_type.is_traceable, 166 'is_traceable': idl_type.is_traceable,
176 'member_cpp_type': member_cpp_type(), 167 'member_cpp_type': member_cpp_type(),
177 'null_setter_name': null_setter_name_for_dictionary_member(member),
178 'rvalue_cpp_type': idl_type.cpp_type_args(used_as_rvalue_type=True), 168 'rvalue_cpp_type': idl_type.cpp_type_args(used_as_rvalue_type=True),
179 'setter_name': setter_name_for_dictionary_member(member), 169 'setter_name': setter_name_for_dictionary_member(member),
180 } 170 }
OLDNEW
« no previous file with comments | « LayoutTests/fast/dom/idl-dictionary-unittest-expected.txt ('k') | Source/bindings/templates/dictionary_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698