| Index: Source/bindings/templates/methods.cpp
|
| diff --git a/Source/bindings/templates/methods.cpp b/Source/bindings/templates/methods.cpp
|
| index def2f99083fc59a5877144db64ea2e29c93dcbab..c6eb5cf1ff99235b255b85baec627569df57fe8a 100644
|
| --- a/Source/bindings/templates/methods.cpp
|
| +++ b/Source/bindings/templates/methods.cpp
|
| @@ -6,8 +6,12 @@ static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const
|
| {% if method.has_exception_state %}
|
| ExceptionState exceptionState(ExceptionState::ExecutionContext, "{{method.name}}", "{{interface_name}}", info.Holder(), info.GetIsolate());
|
| {% endif %}
|
| + {% if method.name in ['addEventListener', 'removeEventListener',
|
| + 'dispatchEvent'] %}
|
| + {{add_event_listener_remove_event_listener_dispatch_event() | indent}}
|
| + {% endif %}
|
| {% if method.name in ['addEventListener', 'removeEventListener'] %}
|
| - {{add_remove_event_listener_method(method.name) | indent}}
|
| + {{add_event_listener_remove_event_listener_method(method.name) | indent}}
|
| {% else %}
|
| {% if method.number_of_required_arguments %}
|
| if (UNLIKELY(info.Length() < {{method.number_of_required_arguments}})) {
|
| @@ -51,13 +55,9 @@ static void {{method.name}}{{method.overload_index}}Method{{world_suffix}}(const
|
|
|
|
|
| {######################################}
|
| -{% macro add_remove_event_listener_method(method_name) %}
|
| -{# Set template values for addEventListener vs. removeEventListener #}
|
| -{% set listener_lookup_type, listener, hidden_dependency_action =
|
| - ('ListenerFindOrCreate', 'listener', 'addHiddenValueToArray')
|
| - if method_name == 'addEventListener' else
|
| - ('ListenerFindOnly', 'listener.get()', 'removeHiddenValueFromArray')
|
| -%}
|
| +{% macro add_event_listener_remove_event_listener_dispatch_event() %}
|
| +{# FIXME: Clean up: use the normal |imp| above,
|
| + use the existing shouldAllowAccessToFrame check if possible. #}
|
| EventTarget* impl = {{v8_class}}::toNative(info.Holder());
|
| if (DOMWindow* window = impl->toDOMWindow()) {
|
| if (!BindingSecurity::shouldAllowAccessToFrame(info.GetIsolate(), window->frame(), exceptionState)) {
|
| @@ -67,6 +67,17 @@ if (DOMWindow* window = impl->toDOMWindow()) {
|
| if (!window->document())
|
| return;
|
| }
|
| +{% endmacro %}
|
| +
|
| +
|
| +{######################################}
|
| +{% macro add_event_listener_remove_event_listener_method(method_name) %}
|
| +{# Set template values for addEventListener vs. removeEventListener #}
|
| +{% set listener_lookup_type, listener, hidden_dependency_action =
|
| + ('ListenerFindOrCreate', 'listener', 'addHiddenValueToArray')
|
| + if method_name == 'addEventListener' else
|
| + ('ListenerFindOnly', 'listener.get()', 'removeHiddenValueFromArray')
|
| +%}
|
| RefPtr<EventListener> listener = V8EventListenerList::getEventListener(info[1], false, {{listener_lookup_type}});
|
| if (listener) {
|
| V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<WithNullCheck>, eventName, info[0]);
|
|
|