| Index: third_party/WebKit/Source/core/input/EventHandler.cpp
|
| diff --git a/third_party/WebKit/Source/core/input/EventHandler.cpp b/third_party/WebKit/Source/core/input/EventHandler.cpp
|
| index b56a0c0421ff4c2eae73ac5a5f62d95792904c15..55c69d316f98132d68ecf51889727f8b9d4ef6f6 100644
|
| --- a/third_party/WebKit/Source/core/input/EventHandler.cpp
|
| +++ b/third_party/WebKit/Source/core/input/EventHandler.cpp
|
| @@ -119,21 +119,6 @@ WebInputEventResult mergeEventResult(WebInputEventResult responseA, WebInputEven
|
| return static_cast<WebInputEventResult>(max(static_cast<int>(responseA), static_cast<int>(responseB)));
|
| }
|
|
|
| -WebInputEventResult eventToEventResult(PassRefPtrWillBeRawPtr<Event> event, bool res)
|
| -{
|
| - if (event->defaultPrevented())
|
| - return WebInputEventResult::HandledApplication;
|
| - if (event->defaultHandled())
|
| - return WebInputEventResult::HandledSystem;
|
| -
|
| - // TODO(dtapuska): There are cases in the code where dispatchEvent
|
| - // returns false (indicated handled) but event is not marked
|
| - // as default handled or default prevented. crbug.com/560355
|
| - if (!res)
|
| - return WebInputEventResult::HandledSuppressed;
|
| - return WebInputEventResult::NotHandled;
|
| -}
|
| -
|
| bool isNodeInDocument(Node* n)
|
| {
|
| return n && n->inDocument();
|
| @@ -1381,10 +1366,8 @@ WebInputEventResult EventHandler::handleMouseReleaseEvent(const PlatformMouseEve
|
| // because the mouseup dispatch above has already updated it
|
| // correctly. Moreover, clickTargetNode is different from
|
| // mev.innerNode at drag-release.
|
| - if (clickTargetNode->dispatchMouseEvent(mouseEvent,
|
| - EventTypeNames::click, m_clickCount)) {
|
| - clickEventResult = WebInputEventResult::HandledApplication;
|
| - }
|
| + clickEventResult = clickTargetNode->dispatchMouseEvent(mouseEvent,
|
| + EventTypeNames::click, m_clickCount);
|
| }
|
| }
|
|
|
| @@ -1416,8 +1399,7 @@ WebInputEventResult EventHandler::dispatchDragEvent(const AtomicString& eventTyp
|
| event.modifiers(),
|
| 0, MouseEvent::platformModifiersToButtons(event.modifiers()), nullptr, event.timestamp(), dataTransfer, event.syntheticEventType());
|
|
|
| - bool dispatchResult = dragTarget->dispatchEvent(me.get());
|
| - return eventToEventResult(me, dispatchResult);
|
| + return dragTarget->dispatchEvent(me.get());
|
| }
|
|
|
| static bool targetIsFrame(Node* target, LocalFrame*& frame)
|
| @@ -1656,8 +1638,7 @@ WebInputEventResult EventHandler::dispatchPointerEvent(Node* target, const Atomi
|
| RefPtrWillBeRawPtr<PointerEvent> pointerEvent = PointerEvent::create(eventType, true,
|
| mouseEvent, relatedTarget, m_frame->document()->domWindow());
|
|
|
| - bool dispatchResult = target->dispatchEvent(pointerEvent.get());
|
| - return eventToEventResult(pointerEvent, dispatchResult);
|
| + return target->dispatchEvent(pointerEvent.get());
|
| }
|
|
|
| void EventHandler::sendMouseEventsForNodeTransition(Node* exitedNode, Node* enteredNode,
|
| @@ -1770,8 +1751,7 @@ WebInputEventResult EventHandler::dispatchMouseEvent(const AtomicString& eventTy
|
| return WebInputEventResult::NotHandled;
|
|
|
| RefPtrWillBeRawPtr<MouseEvent> event = MouseEvent::create(eventType, m_nodeUnderMouse->document().domWindow(), mouseEvent, clickCount, nullptr);
|
| - bool dispatchResult = m_nodeUnderMouse->dispatchEvent(event);
|
| - return eventToEventResult(event, dispatchResult);
|
| + return m_nodeUnderMouse->dispatchEvent(event);
|
| }
|
|
|
| // TODO(mustaq): Make PE drive ME dispatch & bookkeeping in EventHandler.
|
| @@ -1795,8 +1775,7 @@ WebInputEventResult EventHandler::updatePointerTargetAndDispatchEvents(const Ato
|
|
|
| if (!m_preventMouseEventForPointerTypeMouse) {
|
| RefPtrWillBeRawPtr<MouseEvent> event = MouseEvent::create(mouseEventType, m_nodeUnderMouse->document().domWindow(), mouseEvent, clickCount, nullptr);
|
| - bool dispatchResult = m_nodeUnderMouse->dispatchEvent(event);
|
| - result = mergeEventResult(result, eventToEventResult(event, dispatchResult));
|
| + result = mergeEventResult(result, m_nodeUnderMouse->dispatchEvent(event));
|
| }
|
|
|
| return result;
|
| @@ -1967,9 +1946,10 @@ WebInputEventResult EventHandler::handleWheelEvent(const PlatformWheelEvent& eve
|
| }
|
|
|
| RefPtrWillBeRawPtr<Event> domEvent = WheelEvent::create(event, node->document().domWindow());
|
| - if (!node->dispatchEvent(domEvent)) {
|
| + WebInputEventResult domEventResult = node->dispatchEvent(domEvent);
|
| + if (domEventResult != WebInputEventResult::NotHandled) {
|
| setFrameWasScrolledByUser();
|
| - return eventToEventResult(domEvent, false);
|
| + return domEventResult;
|
| }
|
| }
|
|
|
| @@ -2100,10 +2080,11 @@ WebInputEventResult EventHandler::handleGestureEventInFrame(const GestureEventWi
|
|
|
| if (eventTarget) {
|
| RefPtrWillBeRawPtr<GestureEvent> gestureDomEvent = GestureEvent::create(eventTarget->document().domWindow(), gestureEvent);
|
| - // TODO(dtapuska): dispatchEvent is inverted for Gesture Events
|
| - // crbug.com/560357
|
| - if (gestureDomEvent.get() && eventTarget->dispatchEvent(gestureDomEvent))
|
| - return eventToEventResult(gestureDomEvent, false);
|
| + if (gestureDomEvent.get()) {
|
| + WebInputEventResult gestureDomEventResult = eventTarget->dispatchEvent(gestureDomEvent);
|
| + if (gestureDomEventResult != WebInputEventResult::NotHandled)
|
| + return gestureDomEventResult;
|
| + }
|
| }
|
|
|
| switch (gestureEvent.type()) {
|
| @@ -2179,10 +2160,11 @@ WebInputEventResult EventHandler::handleGestureScrollEvent(const PlatformGesture
|
| return WebInputEventResult::HandledSuppressed;
|
|
|
| RefPtrWillBeRawPtr<GestureEvent> gestureDomEvent = GestureEvent::create(eventTarget->document().domWindow(), gestureEvent);
|
| - // TODO(dtapuska): dispatchEvent is inverted for Gesture Events
|
| - // crbug.com/560357
|
| - if (gestureDomEvent.get() && eventTarget->dispatchEvent(gestureDomEvent))
|
| - return eventToEventResult(gestureDomEvent, false);
|
| + if (gestureDomEvent.get()) {
|
| + WebInputEventResult gestureDomEventResult = eventTarget->dispatchEvent(gestureDomEvent);
|
| + if (gestureDomEventResult != WebInputEventResult::NotHandled)
|
| + return gestureDomEventResult;
|
| + }
|
| }
|
|
|
| switch (gestureEvent.type()) {
|
| @@ -3239,8 +3221,7 @@ WebInputEventResult EventHandler::keyEvent(const PlatformKeyboardEvent& initialK
|
| if (initialKeyEvent.type() == PlatformEvent::KeyUp || initialKeyEvent.type() == PlatformEvent::Char) {
|
| RefPtrWillBeRawPtr<KeyboardEvent> domEvent = KeyboardEvent::create(initialKeyEvent, m_frame->document()->domWindow());
|
|
|
| - bool dispatchResult = node->dispatchEvent(domEvent);
|
| - return eventToEventResult(domEvent, dispatchResult);
|
| + return node->dispatchEvent(domEvent);
|
| }
|
|
|
| PlatformKeyboardEvent keyDownEvent = initialKeyEvent;
|
| @@ -3251,23 +3232,17 @@ WebInputEventResult EventHandler::keyEvent(const PlatformKeyboardEvent& initialK
|
| keydown->setDefaultPrevented(true);
|
| keydown->setTarget(node);
|
|
|
| - if (initialKeyEvent.type() == PlatformEvent::RawKeyDown) {
|
| - if (!node->dispatchEvent(keydown))
|
| - return eventToEventResult(keydown, false);
|
| - // If frame changed as a result of keydown dispatch, then return true to avoid sending a subsequent keypress message to the new frame.
|
| - bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()->focusController().focusedOrMainFrame();
|
| - if (changedFocusedFrame)
|
| - return WebInputEventResult::HandledSystem;
|
| - return WebInputEventResult::NotHandled;
|
| - }
|
| -
|
| - if (!node->dispatchEvent(keydown))
|
| - return eventToEventResult(keydown, false);
|
| + WebInputEventResult dispatchResult = node->dispatchEvent(keydown);
|
| + if (dispatchResult != WebInputEventResult::NotHandled)
|
| + return dispatchResult;
|
| // If frame changed as a result of keydown dispatch, then return early to avoid sending a subsequent keypress message to the new frame.
|
| bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()->focusController().focusedOrMainFrame();
|
| if (changedFocusedFrame)
|
| return WebInputEventResult::HandledSystem;
|
|
|
| + if (initialKeyEvent.type() == PlatformEvent::RawKeyDown)
|
| + return WebInputEventResult::NotHandled;
|
| +
|
| // Focus may have changed during keydown handling, so refetch node.
|
| // But if we are dispatching a fake backward compatibility keypress, then we pretend that the keypress happened on the original node.
|
| node = eventTargetNodeForDocument(m_frame->document());
|
| @@ -3280,8 +3255,7 @@ WebInputEventResult EventHandler::keyEvent(const PlatformKeyboardEvent& initialK
|
| return WebInputEventResult::NotHandled;
|
| RefPtrWillBeRawPtr<KeyboardEvent> keypress = KeyboardEvent::create(keyPressEvent, m_frame->document()->domWindow());
|
| keypress->setTarget(node);
|
| - bool dispatchResult = node->dispatchEvent(keypress);
|
| - return eventToEventResult(keypress, dispatchResult);
|
| + return node->dispatchEvent(keypress);
|
| }
|
|
|
| static WebFocusType focusDirectionForKey(const AtomicString& keyIdentifier)
|
| @@ -3877,8 +3851,7 @@ WebInputEventResult EventHandler::dispatchTouchEvents(const PlatformTouchEvent&
|
| eventName, touchEventTarget->toNode()->document().domWindow(),
|
| event.modifiers(), event.cancelable(), event.causesScrollingIfUncanceled(), event.timestamp());
|
|
|
| - bool dispatchResult = touchEventTarget->dispatchEvent(touchEvent.get());
|
| - eventResult = mergeEventResult(eventResult, eventToEventResult(touchEvent, dispatchResult));
|
| + eventResult = mergeEventResult(eventResult, touchEventTarget->dispatchEvent(touchEvent.get()));
|
| }
|
| }
|
|
|
|
|