Open Bug 1857912 Opened 7 months ago Updated 5 months ago

With async (widget level) touch events enabled no `pointermove` event is emitted if delta is too low

Categories

(Core :: DOM: Events, defect)

defect

Tracking

()

People

(Reporter: whimboo, Unassigned)

References

(Blocks 1 open bug)

Details

As seen while working on wpt metadata updates on bug 1857454, there is a regression in the test infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html since async touch events got enabled via bug 1852243.

The reason here is the delta between the current position and the target position. In this case it's 5px vertically. I have to increase the delta to 31px (30px still fails) to make the test passing and the pointermove event emitted.

To circumvent this problem I'm going to change the test to use 50px for now. But we should clearly fix that problem. It might be the reason why quite a lot of other wpt tests currently fail or timeout due to a missing event.

Hiro or Masayuki, could one of you please check that? Thanks!

Flags: needinfo?(masayuki)
Flags: needinfo?(hikezoe.birchill)
See Also: → 1857454
Blocks: 1857966

Henrik, could you please post a link to the failure? Did the failure happen on Android only? At first glance the test HTML doesn't have meta viewport tag so that it gets rendered at < 1.0 zoom level so that the original 5px could be 1.25px on the screen if the HTML gets rendered at 0.25 zoom level. That being said, if it's the reason 30px should just work though.

Flags: needinfo?(hikezoe.birchill) → needinfo?(hskupin)

Never mind, I found a link in bug 1857966. The failure happens on Linux, FWIW.

And now I realized the test looks odd. It starts with touchmove without touchstart events. I'd say the test should drop the initial touchmoves.

Flags: needinfo?(hskupin)

Well, the redundant touchmove does not cause pointermove because if the touch device is not captured by any element and the coming event is not touchstart, the event handler stops dispatching pointermove. However, finally, the legacy event will be fired as-is. So, it might affect some elements, but I guess that it's not related to this because eTouchMove is not usually handled directly.

On the other hand, I don't find any discarding/coalescing code of touchmove events around DOM event dispatcher.

Flags: needinfo?(masayuki)
Blocks: 1858085

Even with my async event patch backed out this can be reproduced when adding prefs: [test.events.async.enabled:true] at the top of the ini file, and using a value smaller than 31px for the pointermove after pointerdown.

Blocks: 1866500
No longer blocks: 1852243, 1857966, 1858085
No longer blocks: 1866500
You need to log in before you can comment on or make changes to this bug.