| Index: third_party/WebKit/Source/core/input/MouseEventManager.cpp
|
| diff --git a/third_party/WebKit/Source/core/input/MouseEventManager.cpp b/third_party/WebKit/Source/core/input/MouseEventManager.cpp
|
| index ea204d0016d5ff04befd546cf3e5d6fee1e68c65..1549400dd8a0f822789d5d3d4de49ea98b22db8b 100644
|
| --- a/third_party/WebKit/Source/core/input/MouseEventManager.cpp
|
| +++ b/third_party/WebKit/Source/core/input/MouseEventManager.cpp
|
| @@ -232,7 +232,8 @@ WebInputEventResult MouseEventManager::SetMousePositionAndDispatchMouseEvent(
|
| }
|
|
|
| WebInputEventResult MouseEventManager::DispatchMouseClickIfNeeded(
|
| - const MouseEventWithHitTestResults& mev) {
|
| + const MouseEventWithHitTestResults& mev,
|
| + Node* release_node) {
|
| // We only prevent click event when the click may cause contextmenu to popup.
|
| // However, we always send auxclick.
|
| bool context_menu_event =
|
| @@ -249,8 +250,8 @@ WebInputEventResult MouseEventManager::DispatchMouseClickIfNeeded(
|
|
|
| WebInputEventResult click_event_result = WebInputEventResult::kNotHandled;
|
| const bool should_dispatch_click_event =
|
| - click_count_ > 0 && !context_menu_event && mev.InnerNode() &&
|
| - click_node_ && mev.InnerNode()->CanParticipateInFlatTree() &&
|
| + click_count_ > 0 && !context_menu_event && release_node && click_node_ &&
|
| + release_node->CanParticipateInFlatTree() &&
|
| click_node_->CanParticipateInFlatTree() &&
|
| !(frame_->GetEventHandler()
|
| .GetSelectionController()
|
| @@ -258,16 +259,15 @@ WebInputEventResult MouseEventManager::DispatchMouseClickIfNeeded(
|
| IsLinkSelection(mev));
|
| if (should_dispatch_click_event) {
|
| Node* click_target_node = nullptr;
|
| - // Updates distribution because a 'mouseup' event listener can make the
|
| - // tree dirty at dispatchMouseEvent() invocation above.
|
| - // Unless distribution is updated, commonAncestor would hit ASSERT.
|
| - if (click_node_ == mev.InnerNode()) {
|
| + if (click_node_ == release_node) {
|
| click_target_node = click_node_;
|
| - click_target_node->UpdateDistribution();
|
| - } else if (click_node_->GetDocument() == mev.InnerNode()->GetDocument()) {
|
| + } else if (click_node_->GetDocument() == release_node->GetDocument()) {
|
| + // Updates distribution because a 'mouseup' event listener can make the
|
| + // tree dirty at dispatchMouseEvent() invocation above.
|
| + // Unless distribution is updated, commonAncestor would hit ASSERT.
|
| click_node_->UpdateDistribution();
|
| - mev.InnerNode()->UpdateDistribution();
|
| - click_target_node = mev.InnerNode()->CommonAncestor(
|
| + release_node->UpdateDistribution();
|
| + click_target_node = release_node->CommonAncestor(
|
| *click_node_, EventHandlingUtil::ParentForClickEvent);
|
| }
|
| if (click_target_node) {
|
|
|