| 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 524f298cea7f49e43ac6efd4c6e3ae32d1b9f5b7..d33f5a8dc33fe7f4338ccb60dc166e21f75a4317 100644
 | 
| --- a/third_party/WebKit/Source/core/input/MouseEventManager.cpp
 | 
| +++ b/third_party/WebKit/Source/core/input/MouseEventManager.cpp
 | 
| @@ -230,50 +230,50 @@ WebInputEventResult MouseEventManager::setMousePositionAndDispatchMouseEvent(
 | 
|  }
 | 
|  
 | 
|  WebInputEventResult MouseEventManager::dispatchMouseClickIfNeeded(
 | 
| -    const MouseEventWithHitTestResults& mev) {
 | 
| +    Node* target,
 | 
| +    const WebMouseEvent& mouseEvent,
 | 
| +    const String& canvasRegionId) {
 | 
|    // We only prevent click event when the click may cause contextmenu to popup.
 | 
|    // However, we always send auxclick.
 | 
|    bool contextMenuEvent =
 | 
|        !RuntimeEnabledFeatures::auxclickEnabled() &&
 | 
| -      mev.event().button == WebPointerProperties::Button::Right;
 | 
| +      mouseEvent.button == WebPointerProperties::Button::Right;
 | 
|  #if OS(MACOSX)
 | 
|    // FIXME: The Mac port achieves the same behavior by checking whether the
 | 
|    // context menu is currently open in WebPage::mouseEvent(). Consider merging
 | 
|    // the implementations.
 | 
| -  if (mev.event().button == WebPointerProperties::Button::Left &&
 | 
| -      mev.event().modifiers() & WebInputEvent::Modifiers::ControlKey)
 | 
| +  if (mouseEvent.button == WebPointerProperties::Button::Left &&
 | 
| +      mouseEvent.modifiers() & WebInputEvent::Modifiers::ControlKey)
 | 
|      contextMenuEvent = true;
 | 
|  #endif
 | 
|  
 | 
|    WebInputEventResult clickEventResult = WebInputEventResult::NotHandled;
 | 
| -  const bool shouldDispatchClickEvent =
 | 
| -      m_clickCount > 0 && !contextMenuEvent && mev.innerNode() && m_clickNode &&
 | 
| -      mev.innerNode()->canParticipateInFlatTree() &&
 | 
| -      m_clickNode->canParticipateInFlatTree() &&
 | 
| -      !(m_frame->eventHandler().selectionController().hasExtendedSelection() &&
 | 
| -        isLinkSelection(mev));
 | 
| +  const bool shouldDispatchClickEvent = m_clickCount > 0 && !contextMenuEvent &&
 | 
| +                                        target && m_clickNode &&
 | 
| +                                        target->canParticipateInFlatTree() &&
 | 
| +                                        m_clickNode->canParticipateInFlatTree();
 | 
|    if (shouldDispatchClickEvent) {
 | 
|      Node* clickTargetNode = 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 (m_clickNode == mev.innerNode()) {
 | 
| +    if (m_clickNode == target) {
 | 
|        clickTargetNode = m_clickNode;
 | 
|        clickTargetNode->updateDistribution();
 | 
| -    } else if (m_clickNode->document() == mev.innerNode()->document()) {
 | 
| +    } else if (m_clickNode->document() == target->document()) {
 | 
|        m_clickNode->updateDistribution();
 | 
| -      mev.innerNode()->updateDistribution();
 | 
| -      clickTargetNode = mev.innerNode()->commonAncestor(
 | 
| +      target->updateDistribution();
 | 
| +      clickTargetNode = target->commonAncestor(
 | 
|            *m_clickNode, EventHandlingUtil::parentForClickEvent);
 | 
|      }
 | 
|      if (clickTargetNode) {
 | 
|        clickEventResult = dispatchMouseEvent(
 | 
|            clickTargetNode,
 | 
|            !RuntimeEnabledFeatures::auxclickEnabled() ||
 | 
| -                  (mev.event().button == WebPointerProperties::Button::Left)
 | 
| +                  (mouseEvent.button == WebPointerProperties::Button::Left)
 | 
|                ? EventTypeNames::click
 | 
|                : EventTypeNames::auxclick,
 | 
| -          mev.event(), mev.canvasRegionId(), nullptr);
 | 
| +          mouseEvent, canvasRegionId, nullptr);
 | 
|      }
 | 
|    }
 | 
|    return clickEventResult;
 | 
| @@ -573,8 +573,8 @@ WebInputEventResult MouseEventManager::handleMousePressEvent(
 | 
|  
 | 
|    bool singleClick = event.event().clickCount <= 1;
 | 
|  
 | 
| -  m_mouseDownMayStartDrag =
 | 
| -      singleClick && !isLinkSelection(event) && !isExtendingSelection(event);
 | 
| +  m_mouseDownMayStartDrag = singleClick && !isSelectionOverLink(event) &&
 | 
| +                            !isExtendingSelection(event);
 | 
|  
 | 
|    m_frame->eventHandler().selectionController().handleMousePressEvent(event);
 | 
|  
 | 
| 
 |