mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 938341. r=smaug
This commit is contained in:
parent
73cd62cbb6
commit
15e9e305b5
@ -908,6 +908,7 @@ nsEventListenerManager::CompileEventHandlerInternal(nsListenerStruct *aListenerS
|
||||
JS::Rooted<JSObject*> boundHandler(cx);
|
||||
JS::Rooted<JSObject*> scope(cx, listener->GetEventScope());
|
||||
context->BindCompiledEventHandler(mTarget, scope, handler, &boundHandler);
|
||||
aListenerStruct = nullptr;
|
||||
if (!boundHandler) {
|
||||
listener->ForgetHandler();
|
||||
} else if (listener->EventName() == nsGkAtoms::onerror && win) {
|
||||
@ -930,12 +931,12 @@ nsEventListenerManager::CompileEventHandlerInternal(nsListenerStruct *aListenerS
|
||||
|
||||
nsresult
|
||||
nsEventListenerManager::HandleEventSubType(nsListenerStruct* aListenerStruct,
|
||||
const EventListenerHolder& aListener,
|
||||
nsIDOMEvent* aDOMEvent,
|
||||
EventTarget* aCurrentTarget,
|
||||
nsCxPusher* aPusher)
|
||||
{
|
||||
nsresult result = NS_OK;
|
||||
EventListenerHolder listener(aListenerStruct->mListener); // strong ref
|
||||
|
||||
// If this is a script handler and we haven't yet
|
||||
// compiled the event handler itself
|
||||
@ -946,6 +947,7 @@ nsEventListenerManager::HandleEventSubType(nsListenerStruct* aListenerStruct,
|
||||
jslistener->GetEventContext() !=
|
||||
aPusher->GetCurrentScriptContext(),
|
||||
nullptr);
|
||||
aListenerStruct = nullptr;
|
||||
}
|
||||
|
||||
if (NS_SUCCEEDED(result)) {
|
||||
@ -953,13 +955,13 @@ nsEventListenerManager::HandleEventSubType(nsListenerStruct* aListenerStruct,
|
||||
nsContentUtils::EnterMicroTask();
|
||||
}
|
||||
// nsIDOMEvent::currentTarget is set in nsEventDispatcher.
|
||||
if (aListener.HasWebIDLCallback()) {
|
||||
if (listener.HasWebIDLCallback()) {
|
||||
ErrorResult rv;
|
||||
aListener.GetWebIDLCallback()->
|
||||
listener.GetWebIDLCallback()->
|
||||
HandleEvent(aCurrentTarget, *(aDOMEvent->InternalDOMEvent()), rv);
|
||||
result = rv.ErrorCode();
|
||||
} else {
|
||||
result = aListener.GetXPCOMCallback()->HandleEvent(aDOMEvent);
|
||||
result = listener.GetXPCOMCallback()->HandleEvent(aDOMEvent);
|
||||
}
|
||||
if (mIsMainThreadELM) {
|
||||
nsContentUtils::LeaveMicroTask();
|
||||
@ -1036,9 +1038,8 @@ nsEventListenerManager::HandleEventInternal(nsPresContext* aPresContext,
|
||||
continue;
|
||||
}
|
||||
|
||||
EventListenerHolder kungFuDeathGrip(ls->mListener);
|
||||
if (NS_FAILED(HandleEventSubType(ls, ls->mListener, *aDOMEvent,
|
||||
aCurrentTarget, aPusher))) {
|
||||
if (NS_FAILED(HandleEventSubType(ls, *aDOMEvent, aCurrentTarget,
|
||||
aPusher))) {
|
||||
aEvent->mFlags.mExceptionHasBeenRisen = true;
|
||||
}
|
||||
}
|
||||
|
@ -417,7 +417,6 @@ protected:
|
||||
nsCxPusher* aPusher);
|
||||
|
||||
nsresult HandleEventSubType(nsListenerStruct* aListenerStruct,
|
||||
const mozilla::dom::EventListenerHolder& aListener,
|
||||
nsIDOMEvent* aDOMEvent,
|
||||
mozilla::dom::EventTarget* aCurrentTarget,
|
||||
nsCxPusher* aPusher);
|
||||
|
Loading…
Reference in New Issue
Block a user