Bug 916685, no need to store empty event handlers, r=bz

--HG--
extra : rebase_source : 4a1b7e5e177744438f6bb59d58b0e2f6e2fe3b5c
This commit is contained in:
Olli Pettay 2013-09-26 23:01:19 +03:00
parent 131d1d31a7
commit e9d1e76549
2 changed files with 8 additions and 1 deletions

View File

@ -900,7 +900,9 @@ nsEventListenerManager::CompileEventHandlerInternal(nsListenerStruct *aListenerS
JS::Rooted<JSObject*> boundHandler(cx);
JS::Rooted<JSObject*> scope(cx, listener->GetEventScope());
context->BindCompiledEventHandler(mTarget, scope, handler, &boundHandler);
if (listener->EventName() == nsGkAtoms::onerror && win) {
if (!boundHandler) {
listener->ForgetHandler();
} else if (listener->EventName() == nsGkAtoms::onerror && win) {
nsRefPtr<OnErrorEventHandlerNonNull> handlerCallback =
new OnErrorEventHandlerNonNull(boundHandler);
listener->SetHandler(handlerCallback);

View File

@ -214,6 +214,11 @@ public:
return mHandler;
}
void ForgetHandler()
{
mHandler.ForgetHandler();
}
nsIAtom* EventName() const
{
return mEventName;