[DOM events] Clear event listener.

This commit is contained in:
Peter Van der Beken 2022-02-10 14:14:18 +00:00 • committed by roytam1
commit b8125dbafd

View file

@ -751,6 +751,8 @@ EventListenerManager::SetEventHandler(nsIAtom* aName,
bool aPermitUntrustedEvents, bool aPermitUntrustedEvents,
Element* aElement) Element* aElement)
{ {
auto removeEventHandler = MakeScopeExit([&] { RemoveEventHandler(aName, EmptyString()); });
nsCOMPtr<nsIDocument> doc; nsCOMPtr<nsIDocument> doc;
nsCOMPtr<nsIScriptGlobalObject> global = nsCOMPtr<nsIScriptGlobalObject> global =
GetScriptGlobalAndDocument(getter_AddRefs(doc)); GetScriptGlobalAndDocument(getter_AddRefs(doc));
@ -825,6 +827,8 @@ EventListenerManager::SetEventHandler(nsIAtom* aName,
NS_ENSURE_TRUE(context, NS_ERROR_FAILURE); NS_ENSURE_TRUE(context, NS_ERROR_FAILURE);
NS_ENSURE_STATE(global->GetGlobalJSObject()); NS_ENSURE_STATE(global->GetGlobalJSObject());
removeEventHandler.release();
Listener* listener = SetEventHandlerInternal(aName, Listener* listener = SetEventHandlerInternal(aName,
EmptyString(), EmptyString(),
TypedEventHandler(), TypedEventHandler(),