Index: Source/bindings/scripts/code_generator_v8.pm |
diff --git a/Source/bindings/scripts/code_generator_v8.pm b/Source/bindings/scripts/code_generator_v8.pm |
index 1207addbfb84546e62149957d31408972b2356ce..697cdff44c0ed7252dfb820d64d8273ae8826e2b 100644 |
--- a/Source/bindings/scripts/code_generator_v8.pm |
+++ b/Source/bindings/scripts/code_generator_v8.pm |
@@ -2468,6 +2468,7 @@ sub GenerateFunction |
# - takes a parameter that might raise an exception on conversion. |
# |
my $isEventListener = $name eq "addEventListener" || $name eq "removeEventListener"; |
+ my $isEventDispatcher = $name eq "dispatchEvent"; |
my $isSecurityCheckNecessary = $interface->extendedAttributes->{"CheckSecurity"} && !$function->extendedAttributes->{"DoNotCheckSecurity"}; |
my $raisesExceptions = $function->extendedAttributes->{"RaisesException"}; |
my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($interfaceName); |
@@ -2478,11 +2479,7 @@ sub GenerateFunction |
$code .= " ExceptionState exceptionState(ExceptionState::ExecutionContext, \"${unoverloadedName}\", \"${interfaceName}\", info.Holder(), info.GetIsolate());\n"; |
} |
- if ($isEventListener) { |
- my $lookupType = ($name eq "addEventListener") ? "OrCreate" : "Only"; |
- my $passRefPtrHandling = ($name eq "addEventListener") ? "" : ".get()"; |
- my $hiddenValueAction = ($name eq "addEventListener") ? "addHiddenValueToArray" : "removeHiddenValueFromArray"; |
- |
+ if ($isEventListener || $isEventDispatcher) { |
AddToImplIncludes("bindings/v8/BindingSecurity.h"); |
AddToImplIncludes("bindings/v8/V8EventListenerList.h"); |
AddToImplIncludes("core/frame/DOMWindow.h"); |
@@ -2496,6 +2493,14 @@ sub GenerateFunction |
if (!window->document()) |
return; |
} |
+END |
+ } |
+ if ($isEventListener) { |
+ my $lookupType = ($name eq "addEventListener") ? "OrCreate" : "Only"; |
+ my $passRefPtrHandling = ($name eq "addEventListener") ? "" : ".get()"; |
+ my $hiddenValueAction = ($name eq "addEventListener") ? "addHiddenValueToArray" : "removeHiddenValueFromArray"; |
+ |
+ $code .= <<END; |
RefPtr<EventListener> listener = V8EventListenerList::getEventListener(info[1], false, ListenerFind${lookupType}); |
if (listener) { |
V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<WithNullCheck>, eventName, info[0]); |