Index: Source/core/frame/DOMWindow.cpp |
diff --git a/Source/core/frame/DOMWindow.cpp b/Source/core/frame/DOMWindow.cpp |
index 27f4ff25fc4e83acd71e25504d6bb67a3eb10c5c..819487f7916d963f0b7202d821aae4ac8aad221b 100644 |
--- a/Source/core/frame/DOMWindow.cpp |
+++ b/Source/core/frame/DOMWindow.cpp |
@@ -59,6 +59,7 @@ |
#include "core/frame/Console.h" |
#include "core/frame/DOMPoint.h" |
#include "core/frame/DOMWindowLifecycleNotifier.h" |
+#include "core/frame/EventHandlerRegistry.h" |
#include "core/frame/FrameConsole.h" |
#include "core/frame/FrameHost.h" |
#include "core/frame/FrameView.h" |
@@ -528,6 +529,7 @@ void DOMWindow::frameDestroyed() |
void DOMWindow::willDetachFrameHost() |
{ |
+ m_frame->host()->eventHandlerRegistry().didRemoveAllEventHandlers(*this); |
InspectorInstrumentation::frameWindowDiscarded(m_frame, this); |
} |
@@ -1499,6 +1501,9 @@ bool DOMWindow::addEventListener(const AtomicString& eventType, PassRefPtr<Event |
if (!EventTarget::addEventListener(eventType, listener, useCapture)) |
return false; |
+ if (m_frame && m_frame->host()) |
+ m_frame->host()->eventHandlerRegistry().didAddEventHandler(*this, eventType); |
+ |
if (Document* document = this->document()) { |
document->addListenerTypeIfNeeded(eventType); |
if (isTouchEventType(eventType)) |
@@ -1533,6 +1538,9 @@ bool DOMWindow::removeEventListener(const AtomicString& eventType, EventListener |
if (!EventTarget::removeEventListener(eventType, listener, useCapture)) |
return false; |
+ if (m_frame && m_frame->host()) |
+ m_frame->host()->eventHandlerRegistry().didRemoveEventHandler(*this, eventType); |
+ |
if (Document* document = this->document()) { |
if (isTouchEventType(eventType)) |
document->didRemoveTouchEventHandler(document); |
@@ -1603,6 +1611,9 @@ void DOMWindow::removeAllEventListeners() |
lifecycleNotifier().notifyRemoveAllEventListeners(this); |
+ if (m_frame && m_frame->host()) |
+ m_frame->host()->eventHandlerRegistry().didRemoveAllEventHandlers(*this); |
+ |
if (Document* document = this->document()) |
document->didClearTouchEventHandlers(document); |