<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Force mouse events should go through normal mouse event handling code paths"
   href="https://bugs.webkit.org/show_bug.cgi?id=143749#c3">Comment # 3</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Force mouse events should go through normal mouse event handling code paths"
   href="https://bugs.webkit.org/show_bug.cgi?id=143749">bug 143749</a>
              from <span class="vcard"><a class="email" href="mailto:simon.fraser&#64;apple.com" title="Simon Fraser (smfr) &lt;simon.fraser&#64;apple.com&gt;"> <span class="fn">Simon Fraser (smfr)</span></a>
</span></b>
        <pre>Comment on <span class=""><a href="attachment.cgi?id=250777&amp;action=diff" name="attach_250777" title="Patch">attachment 250777</a> <a href="attachment.cgi?id=250777&amp;action=edit" title="Patch">[details]</a></span>
Patch

View in context: <a href="https://bugs.webkit.org/attachment.cgi?id=250777&amp;action=review">https://bugs.webkit.org/attachment.cgi?id=250777&amp;action=review</a>

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.

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

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

<span class="quote">&gt; Source/WebCore/page/EventHandler.cpp:2116
&gt; +    if (m_frameSetBeingResized)
&gt; +        return !dispatchMouseEvent(eventNames().webkitmouseforcechangedEvent, m_frameSetBeingResized.get(), false, 0, event, false);</span >

Weird. What's this about?

<span class="quote">&gt; Source/WebCore/page/EventHandler.cpp:2135
&gt; +    if (m_frameSetBeingResized) {
&gt; +        dispatchMouseEvent(eventNames().webkitmouseforcechangedEvent, m_frameSetBeingResized.get(), false, 0, event, false);
&gt; +        return !dispatchMouseEvent(eventNames().webkitmouseforcedownEvent, m_frameSetBeingResized.get(), false, 0, event, false);
&gt; +    }</span >

Same.

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

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

<span class="quote">&gt; Source/WebCore/page/EventHandler.cpp:2178
&gt; +bool EventHandler::handleMouseForceChangedEvent(const PlatformMouseEvent&amp; )
&gt; +{
&gt; +}
&gt; +
&gt; +bool EventHandler::handleMouseForceDownEvent(const PlatformMouseEvent&amp;)
&gt; +{
&gt; +}
&gt; +
&gt; +bool EventHandler::handleMouseForceUpEvent(const PlatformMouseEvent&amp;)
&gt; +{
&gt; +}</span >

These need to return false.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>