OLD | NEW |
1 # Copyright (C) 2013 Google Inc. All rights reserved. | 1 # Copyright (C) 2013 Google Inc. All rights reserved. |
2 # coding=utf-8 | 2 # coding=utf-8 |
3 # | 3 # |
4 # Redistribution and use in source and binary forms, with or without | 4 # Redistribution and use in source and binary forms, with or without |
5 # modification, are permitted provided that the following conditions are | 5 # modification, are permitted provided that the following conditions are |
6 # met: | 6 # met: |
7 # | 7 # |
8 # * Redistributions of source code must retain the above copyright | 8 # * Redistributions of source code must retain the above copyright |
9 # notice, this list of conditions and the following disclaimer. | 9 # notice, this list of conditions and the following disclaimer. |
10 # * Redistributions in binary form must reproduce the above | 10 # * Redistributions in binary form must reproduce the above |
(...skipping 28 matching lines...) Expand all Loading... |
39 import idl_definitions | 39 import idl_definitions |
40 from idl_definitions import IdlOperation, IdlArgument | 40 from idl_definitions import IdlOperation, IdlArgument |
41 import idl_types | 41 import idl_types |
42 from idl_types import IdlType, inherits_interface | 42 from idl_types import IdlType, inherits_interface |
43 import v8_attributes | 43 import v8_attributes |
44 from v8_globals import includes | 44 from v8_globals import includes |
45 import v8_methods | 45 import v8_methods |
46 import v8_types | 46 import v8_types |
47 from v8_types import cpp_ptr_type, cpp_template_type | 47 from v8_types import cpp_ptr_type, cpp_template_type |
48 import v8_utilities | 48 import v8_utilities |
49 from v8_utilities import (cpp_name_or_partial, capitalize, cpp_name, gc_type, | 49 from v8_utilities import (cpp_name_or_partial, capitalize, cpp_name, |
50 has_extended_attribute_value, runtime_enabled_function
_name, | 50 has_extended_attribute_value, runtime_enabled_function
_name, |
51 extended_attribute_value_as_list, is_legacy_interface_
type_checking) | 51 extended_attribute_value_as_list, is_legacy_interface_
type_checking) |
52 | 52 |
53 | 53 |
54 INTERFACE_H_INCLUDES = frozenset([ | 54 INTERFACE_H_INCLUDES = frozenset([ |
55 'bindings/core/v8/ScriptWrappable.h', | 55 'bindings/core/v8/ScriptWrappable.h', |
56 'bindings/core/v8/ToV8.h', | 56 'bindings/core/v8/ToV8.h', |
57 'bindings/core/v8/V8Binding.h', | 57 'bindings/core/v8/V8Binding.h', |
58 'bindings/core/v8/V8DOMWrapper.h', | 58 'bindings/core/v8/V8DOMWrapper.h', |
59 'bindings/core/v8/WrapperTypeInfo.h', | 59 'bindings/core/v8/WrapperTypeInfo.h', |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 'idl_type': set_wrapper_reference_to_argument.idl_type, | 143 'idl_type': set_wrapper_reference_to_argument.idl_type, |
144 'v8_type': v8_types.v8_type(set_wrapper_reference_to_argument.idl_ty
pe.name), | 144 'v8_type': v8_types.v8_type(set_wrapper_reference_to_argument.idl_ty
pe.name), |
145 } | 145 } |
146 set_wrapper_reference_to['idl_type'].add_includes_for_type() | 146 set_wrapper_reference_to['idl_type'].add_includes_for_type() |
147 | 147 |
148 # [SetWrapperReferenceFrom] | 148 # [SetWrapperReferenceFrom] |
149 has_visit_dom_wrapper = ( | 149 has_visit_dom_wrapper = ( |
150 has_extended_attribute_value(interface, 'Custom', 'VisitDOMWrapper') or | 150 has_extended_attribute_value(interface, 'Custom', 'VisitDOMWrapper') or |
151 set_wrapper_reference_from or set_wrapper_reference_to) | 151 set_wrapper_reference_from or set_wrapper_reference_to) |
152 | 152 |
153 this_gc_type = gc_type(interface) | |
154 | |
155 wrapper_class_id = ('NodeClassId' if inherits_interface(interface.name, 'Nod
e') else 'ObjectClassId') | 153 wrapper_class_id = ('NodeClassId' if inherits_interface(interface.name, 'Nod
e') else 'ObjectClassId') |
156 | 154 |
157 v8_class_name = v8_utilities.v8_class_name(interface) | 155 v8_class_name = v8_utilities.v8_class_name(interface) |
158 cpp_class_name = cpp_name(interface) | 156 cpp_class_name = cpp_name(interface) |
159 cpp_class_name_or_partial = cpp_name_or_partial(interface) | 157 cpp_class_name_or_partial = cpp_name_or_partial(interface) |
160 v8_class_name_or_partial = v8_utilities.v8_class_name_or_partial(interface) | 158 v8_class_name_or_partial = v8_utilities.v8_class_name_or_partial(interface) |
161 | 159 |
162 context = { | 160 context = { |
163 'cpp_class': cpp_class_name, | 161 'cpp_class': cpp_class_name, |
164 'cpp_class_or_partial': cpp_class_name_or_partial, | 162 'cpp_class_or_partial': cpp_class_name_or_partial, |
165 'event_target_inheritance': 'InheritFromEventTarget' if is_event_target
else 'NotInheritFromEventTarget', | 163 'event_target_inheritance': 'InheritFromEventTarget' if is_event_target
else 'NotInheritFromEventTarget', |
166 'gc_type': this_gc_type, | 164 'is_gc_type': True, |
167 # FIXME: Remove 'EventTarget' special handling, http://crbug.com/383699 | 165 # FIXME: Remove 'EventTarget' special handling, http://crbug.com/383699 |
168 'has_access_check_callbacks': (is_check_security and | 166 'has_access_check_callbacks': (is_check_security and |
169 interface.name != 'Window' and | 167 interface.name != 'Window' and |
170 interface.name != 'EventTarget'), | 168 interface.name != 'EventTarget'), |
171 'has_custom_legacy_call_as_function': has_extended_attribute_value(inter
face, 'Custom', 'LegacyCallAsFunction'), # [Custom=LegacyCallAsFunction] | 169 'has_custom_legacy_call_as_function': has_extended_attribute_value(inter
face, 'Custom', 'LegacyCallAsFunction'), # [Custom=LegacyCallAsFunction] |
172 'has_partial_interface': len(interface.partial_interfaces) > 0, | 170 'has_partial_interface': len(interface.partial_interfaces) > 0, |
173 'has_visit_dom_wrapper': has_visit_dom_wrapper, | 171 'has_visit_dom_wrapper': has_visit_dom_wrapper, |
174 'header_includes': header_includes, | 172 'header_includes': header_includes, |
175 'interface_name': interface.name, | 173 'interface_name': interface.name, |
176 'is_array_buffer_or_view': is_array_buffer_or_view, | 174 'is_array_buffer_or_view': is_array_buffer_or_view, |
177 'is_check_security': is_check_security, | 175 'is_check_security': is_check_security, |
178 'is_event_target': is_event_target, | 176 'is_event_target': is_event_target, |
179 'is_exception': interface.is_exception, | 177 'is_exception': interface.is_exception, |
180 'is_global': is_global, | 178 'is_global': is_global, |
181 'is_node': inherits_interface(interface.name, 'Node'), | 179 'is_node': inherits_interface(interface.name, 'Node'), |
182 'is_partial': interface.is_partial, | 180 'is_partial': interface.is_partial, |
183 'is_typed_array_type': is_typed_array_type, | 181 'is_typed_array_type': is_typed_array_type, |
184 'lifetime': 'Dependent' if (has_visit_dom_wrapper or is_dependent_lifeti
me) else 'Independent', | 182 'lifetime': 'Dependent' if (has_visit_dom_wrapper or is_dependent_lifeti
me) else 'Independent', |
185 'measure_as': v8_utilities.measure_as(interface, None), # [MeasureAs] | 183 'measure_as': v8_utilities.measure_as(interface, None), # [MeasureAs] |
186 'origin_trial_enabled_function': v8_utilities.origin_trial_enabled_funct
ion_name(interface, None), | 184 'origin_trial_enabled_function': v8_utilities.origin_trial_enabled_funct
ion_name(interface, None), |
187 'parent_interface': parent_interface, | 185 'parent_interface': parent_interface, |
188 'pass_cpp_type': cpp_template_type( | 186 'pass_cpp_type': cpp_name(interface) + '*', |
189 cpp_ptr_type('PassRefPtr', 'RawPtr', this_gc_type), | |
190 cpp_name(interface)), | |
191 'active_scriptwrappable': active_scriptwrappable, | 187 'active_scriptwrappable': active_scriptwrappable, |
192 'runtime_enabled_function': runtime_enabled_function_name(interface), #
[RuntimeEnabled] | 188 'runtime_enabled_function': runtime_enabled_function_name(interface), #
[RuntimeEnabled] |
193 'set_wrapper_reference_from': set_wrapper_reference_from, | 189 'set_wrapper_reference_from': set_wrapper_reference_from, |
194 'set_wrapper_reference_to': set_wrapper_reference_to, | 190 'set_wrapper_reference_to': set_wrapper_reference_to, |
195 'v8_class': v8_class_name, | 191 'v8_class': v8_class_name, |
196 'v8_class_or_partial': v8_class_name_or_partial, | 192 'v8_class_or_partial': v8_class_name_or_partial, |
197 'wrapper_class_id': wrapper_class_id, | 193 'wrapper_class_id': wrapper_class_id, |
198 } | 194 } |
199 | 195 |
200 # Constructors | 196 # Constructors |
(...skipping 1016 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1217 # [RaisesException=Constructor] | 1213 # [RaisesException=Constructor] |
1218 is_constructor_raises_exception = \ | 1214 is_constructor_raises_exception = \ |
1219 interface.extended_attributes.get('RaisesException') == 'Constructor' | 1215 interface.extended_attributes.get('RaisesException') == 'Constructor' |
1220 | 1216 |
1221 argument_contexts = [ | 1217 argument_contexts = [ |
1222 v8_methods.argument_context(interface, constructor, argument, index) | 1218 v8_methods.argument_context(interface, constructor, argument, index) |
1223 for index, argument in enumerate(constructor.arguments)] | 1219 for index, argument in enumerate(constructor.arguments)] |
1224 | 1220 |
1225 return { | 1221 return { |
1226 'arguments': argument_contexts, | 1222 'arguments': argument_contexts, |
1227 'cpp_type': cpp_template_type( | 1223 'cpp_type': cpp_name(interface) + '*', |
1228 cpp_ptr_type('RefPtr', 'RawPtr', gc_type(interface)), | |
1229 cpp_name(interface)), | |
1230 'cpp_value': v8_methods.cpp_value( | 1224 'cpp_value': v8_methods.cpp_value( |
1231 interface, constructor, len(constructor.arguments)), | 1225 interface, constructor, len(constructor.arguments)), |
1232 'has_exception_state': | 1226 'has_exception_state': |
1233 is_constructor_raises_exception or | 1227 is_constructor_raises_exception or |
1234 any(argument for argument in constructor.arguments | 1228 any(argument for argument in constructor.arguments |
1235 if argument.idl_type.name == 'SerializedScriptValue' or | 1229 if argument.idl_type.name == 'SerializedScriptValue' or |
1236 argument.idl_type.v8_conversion_needs_exception_state), | 1230 argument.idl_type.v8_conversion_needs_exception_state), |
1237 'has_optional_argument_without_default_value': | 1231 'has_optional_argument_without_default_value': |
1238 any(True for argument_context in argument_contexts | 1232 any(True for argument_context in argument_contexts |
1239 if argument_context['is_optional_without_default_value']), | 1233 if argument_context['is_optional_without_default_value']), |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1338 has_extended_attribute_value(getter, 'Custom', 'PropertyGetter')), | 1332 has_extended_attribute_value(getter, 'Custom', 'PropertyGetter')), |
1339 'is_custom_property_enumerator': has_extended_attribute_value( | 1333 'is_custom_property_enumerator': has_extended_attribute_value( |
1340 getter, 'Custom', 'PropertyEnumerator'), | 1334 getter, 'Custom', 'PropertyEnumerator'), |
1341 'is_custom_property_query': has_extended_attribute_value( | 1335 'is_custom_property_query': has_extended_attribute_value( |
1342 getter, 'Custom', 'PropertyQuery'), | 1336 getter, 'Custom', 'PropertyQuery'), |
1343 'is_enumerable': 'NotEnumerable' not in extended_attributes, | 1337 'is_enumerable': 'NotEnumerable' not in extended_attributes, |
1344 'is_null_expression': is_null_expression(idl_type), | 1338 'is_null_expression': is_null_expression(idl_type), |
1345 'is_raises_exception': is_raises_exception, | 1339 'is_raises_exception': is_raises_exception, |
1346 'name': cpp_name(getter), | 1340 'name': cpp_name(getter), |
1347 'use_output_parameter_for_result': use_output_parameter_for_result, | 1341 'use_output_parameter_for_result': use_output_parameter_for_result, |
1348 'v8_set_return_value': idl_type.v8_set_return_value('result', extended_a
ttributes=extended_attributes, script_wrappable='impl', release=idl_type.release
), | 1342 'v8_set_return_value': idl_type.v8_set_return_value('result', extended_a
ttributes=extended_attributes, script_wrappable='impl'), |
1349 } | 1343 } |
1350 | 1344 |
1351 | 1345 |
1352 def property_setter(setter, interface): | 1346 def property_setter(setter, interface): |
1353 if not setter: | 1347 if not setter: |
1354 return None | 1348 return None |
1355 | 1349 |
1356 extended_attributes = setter.extended_attributes | 1350 extended_attributes = setter.extended_attributes |
1357 idl_type = setter.arguments[1].idl_type | 1351 idl_type = setter.arguments[1].idl_type |
1358 idl_type.add_includes_for_type(extended_attributes) | 1352 idl_type.add_includes_for_type(extended_attributes) |
(...skipping 26 matching lines...) Expand all Loading... |
1385 | 1379 |
1386 extended_attributes = deleter.extended_attributes | 1380 extended_attributes = deleter.extended_attributes |
1387 idl_type = deleter.idl_type | 1381 idl_type = deleter.idl_type |
1388 is_call_with_script_state = v8_utilities.has_extended_attribute_value(delete
r, 'CallWith', 'ScriptState') | 1382 is_call_with_script_state = v8_utilities.has_extended_attribute_value(delete
r, 'CallWith', 'ScriptState') |
1389 return { | 1383 return { |
1390 'is_call_with_script_state': is_call_with_script_state, | 1384 'is_call_with_script_state': is_call_with_script_state, |
1391 'is_custom': 'Custom' in extended_attributes, | 1385 'is_custom': 'Custom' in extended_attributes, |
1392 'is_raises_exception': 'RaisesException' in extended_attributes, | 1386 'is_raises_exception': 'RaisesException' in extended_attributes, |
1393 'name': cpp_name(deleter), | 1387 'name': cpp_name(deleter), |
1394 } | 1388 } |
OLD | NEW |