OLD | NEW |
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 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 # [RaisesException], [RaisesException=Setter] | 319 # [RaisesException], [RaisesException=Setter] |
320 is_setter_raises_exception = ( | 320 is_setter_raises_exception = ( |
321 'RaisesException' in extended_attributes and | 321 'RaisesException' in extended_attributes and |
322 extended_attributes['RaisesException'] in [None, 'Setter']) | 322 extended_attributes['RaisesException'] in [None, 'Setter']) |
323 # [TypeChecking=Interface] | 323 # [TypeChecking=Interface] |
324 has_type_checking_interface = ( | 324 has_type_checking_interface = ( |
325 (has_extended_attribute_value(interface, 'TypeChecking', 'Interface') or | 325 (has_extended_attribute_value(interface, 'TypeChecking', 'Interface') or |
326 has_extended_attribute_value(attribute, 'TypeChecking', 'Interface')) a
nd | 326 has_extended_attribute_value(attribute, 'TypeChecking', 'Interface')) a
nd |
327 idl_type.is_wrapper_type) | 327 idl_type.is_wrapper_type) |
328 | 328 |
329 type_checked = (has_type_checking_interface and | |
330 # These allow null values, so a type-check is still required
. | |
331 not idl_type.is_nullable) | |
332 | |
333 context.update({ | 329 context.update({ |
334 'has_setter_exception_state': | 330 'has_setter_exception_state': |
335 is_setter_raises_exception or has_type_checking_interface or | 331 is_setter_raises_exception or has_type_checking_interface or |
336 context['has_type_checking_unrestricted'] or | 332 context['has_type_checking_unrestricted'] or |
337 idl_type.v8_conversion_needs_exception_state, | 333 idl_type.v8_conversion_needs_exception_state, |
338 'has_type_checking_interface': has_type_checking_interface, | 334 'has_type_checking_interface': has_type_checking_interface, |
339 'is_setter_call_with_execution_context': v8_utilities.has_extended_attri
bute_value( | 335 'is_setter_call_with_execution_context': v8_utilities.has_extended_attri
bute_value( |
340 attribute, 'SetterCallWith', 'ExecutionContext'), | 336 attribute, 'SetterCallWith', 'ExecutionContext'), |
341 'is_setter_raises_exception': is_setter_raises_exception, | 337 'is_setter_raises_exception': is_setter_raises_exception, |
342 'private_script_cpp_value_to_v8_value': idl_type.cpp_value_to_v8_value( | 338 'private_script_cpp_value_to_v8_value': idl_type.cpp_value_to_v8_value( |
343 'cppValue', isolate='scriptState->isolate()', | 339 'cppValue', isolate='scriptState->isolate()', |
344 creation_context='scriptState->context()->Global()'), | 340 creation_context='scriptState->context()->Global()'), |
345 'v8_value_to_local_cpp_value': idl_type.v8_value_to_local_cpp_value( | 341 'v8_value_to_local_cpp_value': idl_type.v8_value_to_local_cpp_value( |
346 extended_attributes, 'v8Value', 'cppValue', | 342 extended_attributes, 'v8Value', 'cppValue'), |
347 needs_type_check=not type_checked), | |
348 }) | 343 }) |
349 | 344 |
350 # setter_expression() depends on context values we set above. | 345 # setter_expression() depends on context values we set above. |
351 context['cpp_setter'] = setter_expression(interface, attribute, context) | 346 context['cpp_setter'] = setter_expression(interface, attribute, context) |
352 | 347 |
353 | 348 |
354 def setter_expression(interface, attribute, context): | 349 def setter_expression(interface, attribute, context): |
355 extended_attributes = attribute.extended_attributes | 350 extended_attributes = attribute.extended_attributes |
356 arguments = v8_utilities.call_with_arguments( | 351 arguments = v8_utilities.call_with_arguments( |
357 extended_attributes.get('SetterCallWith') or | 352 extended_attributes.get('SetterCallWith') or |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 lambda self: strip_suffix(self.base_type, 'Constructor')) | 499 lambda self: strip_suffix(self.base_type, 'Constructor')) |
505 | 500 |
506 | 501 |
507 def is_constructor_attribute(attribute): | 502 def is_constructor_attribute(attribute): |
508 # FIXME: replace this with [ConstructorAttribute] extended attribute | 503 # FIXME: replace this with [ConstructorAttribute] extended attribute |
509 return attribute.idl_type.name.endswith('Constructor') | 504 return attribute.idl_type.name.endswith('Constructor') |
510 | 505 |
511 | 506 |
512 def constructor_getter_context(interface, attribute, context): | 507 def constructor_getter_context(interface, attribute, context): |
513 context['needs_constructor_getter_callback'] = context['measure_as'] or cont
ext['deprecate_as'] | 508 context['needs_constructor_getter_callback'] = context['measure_as'] or cont
ext['deprecate_as'] |
OLD | NEW |