Index: Source/bindings/scripts/v8_methods.py |
diff --git a/Source/bindings/scripts/v8_methods.py b/Source/bindings/scripts/v8_methods.py |
index 2a7fc9fac1ef359caf2f05ad2d60ac45a8913c3a..7f7b83b348f2525957d2cc759bf2e2329044ffc3 100644 |
--- a/Source/bindings/scripts/v8_methods.py |
+++ b/Source/bindings/scripts/v8_methods.py |
@@ -40,6 +40,17 @@ import v8_utilities |
from v8_utilities import has_extended_attribute_value |
+# Methods with any of these require custom method registration code in the |
+# interface's configure*Template() function. |
+CUSTOM_REGISTRATION_EXTENDED_ATTRIBUTES = frozenset([ |
+ 'DoNotCheckSecurity', |
+ 'DoNotCheckSignature', |
+ 'NotEnumerable', |
+ 'ReadOnly', |
+ 'Unforgeable', |
+]) |
+ |
+ |
def argument_needs_try_catch(argument): |
idl_type = argument.idl_type |
base_type = not idl_type.array_or_sequence_type and idl_type.base_type |
@@ -106,13 +117,14 @@ def generate_method(interface, method): |
'conditional_string': v8_utilities.conditional_string(method), |
'cpp_type': idl_type.cpp_type, |
'cpp_value': this_cpp_value, |
+ 'custom_registration_extended_attributes': |
+ CUSTOM_REGISTRATION_EXTENDED_ATTRIBUTES.intersection( |
+ extended_attributes.iterkeys()), |
'deprecate_as': v8_utilities.deprecate_as(method), # [DeprecateAs] |
- 'do_not_check_signature': not(is_static or |
- v8_utilities.has_extended_attribute(method, |
- ['DoNotCheckSecurity', 'DoNotCheckSignature', 'NotEnumerable', |
- 'ReadOnly', 'RuntimeEnabled', 'Unforgeable'])), |
'function_template': function_template(), |
- 'idl_type': idl_type.base_type, |
+ 'has_custom_registration': is_static or |
+ v8_utilities.has_extended_attribute( |
+ method, CUSTOM_REGISTRATION_EXTENDED_ATTRIBUTES), |
'has_event_listener_argument': has_event_listener_argument, |
'has_exception_state': |
has_event_listener_argument or |
@@ -121,6 +133,7 @@ def generate_method(interface, method): |
any(argument for argument in arguments |
if argument.idl_type.name in ('ByteString', 'SerializedScriptValue') or |
argument.idl_type.is_integer_type), |
+ 'idl_type': idl_type.base_type, |
'is_call_with_execution_context': has_extended_attribute_value(method, 'CallWith', 'ExecutionContext'), |
'is_call_with_script_arguments': is_call_with_script_arguments, |
'is_call_with_script_state': is_call_with_script_state, |