| 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);
|
|
|
|
|