| Index: third_party/WebKit/Source/core/input/BoundaryEventDispatcher.cpp
|
| diff --git a/third_party/WebKit/Source/core/input/BoundaryEventDispatcher.cpp b/third_party/WebKit/Source/core/input/BoundaryEventDispatcher.cpp
|
| index 126c8ad827718a9d64a82586b57c3d074e06ac53..c1cd91a7b3b8ea8ed08326a216adce6b06764ac8 100644
|
| --- a/third_party/WebKit/Source/core/input/BoundaryEventDispatcher.cpp
|
| +++ b/third_party/WebKit/Source/core/input/BoundaryEventDispatcher.cpp
|
| @@ -74,17 +74,22 @@ void BoundaryEventDispatcher::sendBoundaryEvents(EventTarget* exitedTarget,
|
| size_t exitedAncestorsCommonParentIndex = 0;
|
| size_t enteredAncestorsCommonParentIndex = 0;
|
|
|
| - // A note on mouseenter and mouseleave: These are non-bubbling events, and they are dispatched if there
|
| - // is a capturing event handler on an ancestor or a normal event handler on the element itself. This special
|
| - // handling is necessary to avoid O(n^2) capturing event handler checks.
|
| + // A note on mouseenter and mouseleave: These are non-bubbling events, and
|
| + // they are dispatched if there is a capturing event handler on an ancestor or
|
| + // a normal event handler on the element itself. This special handling is
|
| + // necessary to avoid O(n^2) capturing event handler checks.
|
| //
|
| - // Note, however, that this optimization can possibly cause some unanswered/missing/redundant mouseenter or
|
| - // mouseleave events in certain contrived eventhandling scenarios, e.g., when:
|
| - // - the mouseleave handler for a node sets the only capturing-mouseleave-listener in its ancestor, or
|
| - // - DOM mods in any mouseenter/mouseleave handler changes the common ancestor of exited & entered nodes, etc.
|
| - // We think the spec specifies a "frozen" state to avoid such corner cases (check the discussion on "candidate event
|
| - // listeners" at http://www.w3.org/TR/uievents), but our code below preserves one such behavior from past only to
|
| - // match Firefox and IE behavior.
|
| + // Note, however, that this optimization can possibly cause some
|
| + // unanswered/missing/redundant mouseenter or mouseleave events in certain
|
| + // contrived eventhandling scenarios, e.g., when:
|
| + // - the mouseleave handler for a node sets the only
|
| + // capturing-mouseleave-listener in its ancestor, or
|
| + // - DOM mods in any mouseenter/mouseleave handler changes the common ancestor
|
| + // of exited & entered nodes, etc.
|
| + // We think the spec specifies a "frozen" state to avoid such corner cases
|
| + // (check the discussion on "candidate event listeners" at
|
| + // http://www.w3.org/TR/uievents), but our code below preserves one such
|
| + // behavior from past only to match Firefox and IE behavior.
|
| //
|
| // TODO(mustaq): Confirm spec conformance, double-check with other browsers.
|
|
|
| @@ -110,8 +115,8 @@ void BoundaryEventDispatcher::sendBoundaryEvents(EventTarget* exitedTarget,
|
| if (isInDocument(enteredTarget))
|
| dispatchOver(enteredTarget, exitedTarget);
|
|
|
| - // Defer locating capturing enter listener until /after/ dispatching the leave events because
|
| - // the leave handlers might set a capturing enter handler.
|
| + // Defer locating capturing enter listener until /after/ dispatching the leave
|
| + // events because the leave handlers might set a capturing enter handler.
|
| bool enteredNodeHasCapturingAncestor = false;
|
| const AtomicString& enterEvent = getEnterEvent();
|
| for (size_t i = 0; i < enteredAncestors.size(); i++) {
|
|
|