| Index: Source/core/input/EventHandler.cpp
|
| diff --git a/Source/core/input/EventHandler.cpp b/Source/core/input/EventHandler.cpp
|
| index c66e5f02b6f1e0f58f7b3f1b30dacd77b3fc7a9b..6f13bfca44fe136e6d25238d1a68f4823ea6ed14 100644
|
| --- a/Source/core/input/EventHandler.cpp
|
| +++ b/Source/core/input/EventHandler.cpp
|
| @@ -98,6 +98,15 @@
|
|
|
| namespace blink {
|
|
|
| +namespace {
|
| +
|
| +bool isNodeInDocument(Node* n)
|
| +{
|
| + return n && n->inDocument();
|
| +}
|
| +
|
| +}
|
| +
|
| using namespace HTMLNames;
|
|
|
| // The link drag hysteresis is much larger than the others because there
|
| @@ -1526,7 +1535,7 @@ void EventHandler::sendMouseEventsForNodeTransition(Node* exitedNode, Node* ente
|
| ASSERT(exitedNode != enteredNode);
|
|
|
| // First, dispatch mouseout event (which bubbles to ancestors)
|
| - if (exitedNode)
|
| + if (isNodeInDocument(exitedNode))
|
| exitedNode->dispatchMouseEvent(mouseEvent, EventTypeNames::mouseout, 0, enteredNode);
|
|
|
| // A note on mouseenter and mouseleave: These are non-bubbling events, and they are dispatched if there
|
| @@ -1546,13 +1555,13 @@ void EventHandler::sendMouseEventsForNodeTransition(Node* exitedNode, Node* ente
|
| // Create lists of all exited/entered ancestors.
|
| WillBeHeapVector<RefPtrWillBeMember<Node>, 32> exitedAncestors;
|
| WillBeHeapVector<RefPtrWillBeMember<Node>, 32> enteredAncestors;
|
| - if (exitedNode) {
|
| + if (isNodeInDocument(exitedNode)) {
|
| exitedNode->updateDistribution();
|
| for (Node* node = exitedNode; node; node = ComposedTreeTraversal::parent(*node)) {
|
| exitedAncestors.append(node);
|
| }
|
| }
|
| - if (enteredNode) {
|
| + if (isNodeInDocument(enteredNode)) {
|
| enteredNode->updateDistribution();
|
| for (Node* node = enteredNode; node; node = ComposedTreeTraversal::parent(*node)) {
|
| enteredAncestors.append(node);
|
| @@ -1591,7 +1600,7 @@ void EventHandler::sendMouseEventsForNodeTransition(Node* exitedNode, Node* ente
|
| }
|
|
|
| // Dispatch mouseover event (which bubbles to ancestors) after the mouseleave events are sent.
|
| - if (enteredNode)
|
| + if (isNodeInDocument(enteredNode))
|
| enteredNode->dispatchMouseEvent(mouseEvent, EventTypeNames::mouseover, 0, exitedNode);
|
|
|
| // Determine if there is a capturing mouseenter listener in an ancestor. This must be done /after/ dispatching the
|
|
|