Bug 99756

Summary: [Qt] fast/events/touch/touch-slider.html is failing
Product: WebKit Reporter: Tony Chang <tony>
Component: Tools / TestsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED INVALID    
Severity: Normal CC: allan.jensen, hausmann, rjkroege
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   

Description Tony Chang 2012-10-18 14:02:27 PDT
This started happening after I rewrote RenderSlider to use new flexbox.  After debugging, this is due to a difference between how Chromium and Qt handle eventSender.touch* events.

The problem is that on Qt, calling a eventSender.touch* doesn't send a layout. This matters for fast/events/touch/touch-slider.html because the position of the thumb is set during layout.  If I add document.body.offsetLeft between calls to eventSender.touch*, the test passes.

In Chromium's DRT, we explicitly do a layout before sending the touch event (see bug 49285).  Should we do the same for Qt?

Note that Chromium and Qt are the only ports that have touch events enabled.
Comment 1 Simon Hausmann 2012-10-19 04:28:53 PDT
(In reply to comment #0)
> This started happening after I rewrote RenderSlider to use new flexbox.  After debugging, this is due to a difference between how Chromium and Qt handle eventSender.touch* events.
> 
> The problem is that on Qt, calling a eventSender.touch* doesn't send a layout. This matters for fast/events/touch/touch-slider.html because the position of the thumb is set during layout.  If I add document.body.offsetLeft between calls to eventSender.touch*, the test passes.
> 
> In Chromium's DRT, we explicitly do a layout before sending the touch event (see bug 49285).  Should we do the same for Qt?

Sounds like a good idea. Does this belong into the DRT or into cross-platform WebKit code? Where is it handled in Chromium?
Comment 2 Tony Chang 2012-10-19 09:54:06 PDT
(In reply to comment #1)
> Does this belong into the DRT or into cross-platform WebKit code? Where is it handled in Chromium?

I think for DRT, this needs to happen in port specific code because ports don't share EventSender implementations.

For WTR, it might be possible to put layout calls in InjectedBundle/EventSendingController.cpp.

Here's the code in Chromium's DRT:
http://trac.webkit.org/browser/trunk/Tools/DumpRenderTree/chromium/TestRunner/src/EventSender.cpp#L1006
Comment 3 Jocelyn Turcotte 2014-02-03 03:22:59 PST
=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.