[Webkit-unassigned] [Bug 143749] Force mouse events should go through normal mouse event handling code paths

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Apr 15 09:13:34 PDT 2015


https://bugs.webkit.org/show_bug.cgi?id=143749

--- Comment #3 from Simon Fraser (smfr) <simon.fraser at apple.com> ---
Comment on attachment 250777
  --> https://bugs.webkit.org/attachment.cgi?id=250777
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=250777&action=review

I would love to see some testing added in this page. I worry that if we don't add testing now, we'll never add it.

> Source/WebCore/dom/Element.cpp:257
> +    if (platformEvent.type() == PlatformEvent::MouseForceChanged && !document().hasListenerType(Document::FORCECHANGED_LISTENER))
> +        return false;
> +    if (platformEvent.type() == PlatformEvent::MouseForceDown && !document().hasListenerType(Document::FORCEDOWN_LISTENER))
> +        return false;
> +    if (platformEvent.type() == PlatformEvent::MouseForceUp && !document().hasListenerType(Document::FORCEUP_LISTENER))
> +        return false;

A little helper that maps Document::*_LISTENER to PlatformEvent::Mouse* types would make this cleaner.

> Source/WebCore/page/EventHandler.cpp:2116
> +    if (m_frameSetBeingResized)
> +        return !dispatchMouseEvent(eventNames().webkitmouseforcechangedEvent, m_frameSetBeingResized.get(), false, 0, event, false);

Weird. What's this about?

> Source/WebCore/page/EventHandler.cpp:2135
> +    if (m_frameSetBeingResized) {
> +        dispatchMouseEvent(eventNames().webkitmouseforcechangedEvent, m_frameSetBeingResized.get(), false, 0, event, false);
> +        return !dispatchMouseEvent(eventNames().webkitmouseforcedownEvent, m_frameSetBeingResized.get(), false, 0, event, false);
> +    }

Same.

> Source/WebCore/page/EventHandler.cpp:2164
> +bool EventHandler::handleMouseForceUpEvent(const PlatformMouseEvent& event)
> +{
> +    RefPtr<FrameView> protector(m_frame.view());
> +
> +    setLastKnownMousePosition(event);
> +
> +    if (m_frameSetBeingResized) {
> +        dispatchMouseEvent(eventNames().webkitmouseforcechangedEvent, m_frameSetBeingResized.get(), false, 0, event, false);
> +        return !dispatchMouseEvent(eventNames().webkitmouseforceupEvent, m_frameSetBeingResized.get(), false, 0, event, false);
> +    }
> +
> +    HitTestRequest::HitTestRequestType hitType = HitTestRequest::DisallowShadowContent | HitTestRequest::Active;
> +
> +    HitTestRequest request(hitType);
> +    MouseEventWithHitTestResults mouseEvent = prepareMouseEvent(request, event);
> +
> +    dispatchMouseEvent(eventNames().webkitmouseforcechangedEvent, mouseEvent.targetNode(), false, 0, event, false);
> +    return !dispatchMouseEvent(eventNames().webkitmouseforceupEvent, mouseEvent.targetNode(), false, 0, event, false);
> +}

Lots of very similar-looking code here. Can it be shared?

> Source/WebCore/page/EventHandler.cpp:2178
> +bool EventHandler::handleMouseForceChangedEvent(const PlatformMouseEvent& )
> +{
> +}
> +
> +bool EventHandler::handleMouseForceDownEvent(const PlatformMouseEvent&)
> +{
> +}
> +
> +bool EventHandler::handleMouseForceUpEvent(const PlatformMouseEvent&)
> +{
> +}

These need to return false.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20150415/06d7a8b9/attachment.html>


More information about the webkit-unassigned mailing list