Index: Source/core/dom/Node.cpp |
diff --git a/Source/core/dom/Node.cpp b/Source/core/dom/Node.cpp |
index 59a60dc30368c59a007a4977c004225c0132f7e4..63acabe064296b0230b8fa0ba63b82e5fc0e89d0 100644 |
--- a/Source/core/dom/Node.cpp |
+++ b/Source/core/dom/Node.cpp |
@@ -49,6 +49,7 @@ |
#include "core/dom/NodeTraversal.h" |
#include "core/dom/ProcessingInstruction.h" |
#include "core/dom/Range.h" |
+#include "core/dom/ScrollEventHandlerController.h" |
#include "core/dom/StaticNodeList.h" |
#include "core/dom/TemplateContentDocumentFragment.h" |
#include "core/dom/Text.h" |
@@ -1919,17 +1920,25 @@ void Node::didMoveToNewDocument(Document& oldDocument) |
} |
const EventListenerVector& mousewheelListeners = getEventListeners(EventTypeNames::mousewheel); |
- WheelController* oldController = WheelController::from(oldDocument); |
- WheelController* newController = WheelController::from(document()); |
+ WheelController* oldWheelController = WheelController::from(oldDocument); |
+ WheelController* newWheelController = WheelController::from(document()); |
for (size_t i = 0; i < mousewheelListeners.size(); ++i) { |
- oldController->didRemoveWheelEventHandler(oldDocument); |
- newController->didAddWheelEventHandler(document()); |
+ oldWheelController->didRemoveWheelEventHandler(oldDocument); |
+ newWheelController->didAddWheelEventHandler(document()); |
} |
const EventListenerVector& wheelListeners = getEventListeners(EventTypeNames::wheel); |
for (size_t i = 0; i < wheelListeners.size(); ++i) { |
- oldController->didRemoveWheelEventHandler(oldDocument); |
- newController->didAddWheelEventHandler(document()); |
+ oldWheelController->didRemoveWheelEventHandler(oldDocument); |
+ newWheelController->didAddWheelEventHandler(document()); |
+ } |
+ |
+ const EventListenerVector& scrollListeners = getEventListeners(EventTypeNames::scroll); |
+ ScrollEventHandlerController* oldScrollController = ScrollEventHandlerController::from(oldDocument); |
+ ScrollEventHandlerController* newScrollController = ScrollEventHandlerController::from(document()); |
+ for (size_t i = 0; i < scrollListeners.size(); ++i) { |
+ oldScrollController->didRemoveScrollEventHandler(oldDocument); |
+ newScrollController->didAddScrollEventHandler(document()); |
} |
if (const TouchEventTargetSet* touchHandlers = oldDocument.touchEventTargets()) { |
@@ -1961,6 +1970,8 @@ static inline bool tryAddEventListener(Node* targetNode, const AtomicString& eve |
document.addListenerTypeIfNeeded(eventType); |
if (eventType == EventTypeNames::wheel || eventType == EventTypeNames::mousewheel) |
WheelController::from(document)->didAddWheelEventHandler(document); |
+ else if (eventType == EventTypeNames::scroll) |
+ ScrollEventHandlerController::from(document)->didAddScrollEventHandler(document); |
else if (isTouchEventType(eventType)) |
document.didAddTouchEventHandler(targetNode); |
@@ -1982,6 +1993,8 @@ static inline bool tryRemoveEventListener(Node* targetNode, const AtomicString& |
Document& document = targetNode->document(); |
if (eventType == EventTypeNames::wheel || eventType == EventTypeNames::mousewheel) |
WheelController::from(document)->didRemoveWheelEventHandler(document); |
+ else if (eventType == EventTypeNames::scroll) |
+ ScrollEventHandlerController::from(document)->didRemoveScrollEventHandler(document); |
else if (isTouchEventType(eventType)) |
document.didRemoveTouchEventHandler(targetNode); |