Subsequent upward scroll events end up blocked on pages with active touchmove or touchstart handlers
Categories
(Fenix :: Browser Engine, defect, P2)
Tracking
(firefox122 verified)
Tracking | Status | |
---|---|---|
firefox122 | --- | verified |
People
(Reporter: bas.schouten, Assigned: jonalmeida)
References
()
Details
Attachments
(1 file)
When scrolling up on pages that have a touchmove or touchstart handler, every motion scrolling up following a subsequent successful scroll motion is ignored, this is quite frustrating when moving upward deliberately. I've included a minimal testcase.
STR:
- Scroll down on the page
- Make any scrolling motion on the page
- Scroll up again, make sure your finger begins moving down when it touches the screen
The bug may seem more randomly intermittent due to accidentally scrolling down very briefly before scrolling up, in which case it will work. It is important to ensure the touch motion begins in a downward direction (i.e. for scrolling up).
This issue does not occur when pull-to-refresh is disabled.
Reporter | ||
Updated•1 year ago
|
Comment 1•1 year ago
•
|
||
Adding one detail: it's important for the touchmove/touchstart listener to be passive: false
to trigger the bug.
I did rule out issues on the APZ side. (The passive: false
event listener means that APZ provides the InputResult
to GeckoView using the "delayed result" codepath rather than the "eager result" codepath, but the provided value is correct.)
The mechanism of failure is that for the scroll gestures that have no effect, APZ receives a touch-cancel event from GeckoView which cancels the gesture. (This is the same thing I observed in bug 1807075 comment 6, though in that case the touch-cancel events were related to Android's "tap to magnify" feature; that's not the case here, the issue occurs with "tap to magnify" disabled as well.)
An example of a production website affected by this bug is https://diverace.com/. This is likely to affect a variety of sites because the condition for triggering the bug (having a passive: false
touchstart/touchmove event listener) is a common pattern.
Comment 2•1 year ago
•
|
||
I would suggest a severity of S2 for this; even though there is technically a workaround (try the scroll gesture again and it works the second time), the issue is quite noticeable (basically every other upwards scroll gesture fails), affects a core interaction mechanism (scrolling), and is triggered by a common code pattern used on a variety of websites.
Comment 3•1 year ago
|
||
The symptoms are very similar to bug 1830805, which Hiro has identified (in bug 1830805 comment 3) as being fixed by a workaround for bug 1724755, making me wonder if this is also related to bug 1724755.
Comment 4•1 year ago
|
||
The severity field is not set for this bug.
:jonalmeida, could you have a look please?
For more information, please visit BugBot documentation.
Assignee | ||
Updated•1 year ago
|
Assignee | ||
Comment 5•1 year ago
|
||
Hiro's investigation and patch in bug 1832880 are quite similar to my own (limited) investigation and will possibly solve this bug. Taking this on to work on it and verify if that's the case.
I suspect the changes in the 1.1.0 of the SwipeRefreshLayout have changed the behaviour of how we are handling touch events and using SwipeRefreshLayout#setLegacyRequestDisallowInterceptTouchEventEnabled(boolean)
may work in this reduced test case, but is not a solution at the same time.
Comment 6•10 months ago
|
||
Comment 7•10 months ago
|
||
Authored by https://github.com/hiikezoe
https://github.com/mozilla-mobile/firefox-android/commit/0b098b8443319bd179e746c6653b9c1d3f2d7469
[main] Bug 1847305 - Re-initialize inputResultDetail at the right time.
Authored by https://github.com/jonalmeida
https://github.com/mozilla-mobile/firefox-android/commit/f679cc67157d8a277aec6828e8e6c44a5fd007c9
[main] Bug 1847305 - Enabled nested scrolling for GeckoEngineView
Authored by https://github.com/jonalmeida
https://github.com/mozilla-mobile/firefox-android/commit/d806e9872d49e205eea163649124863145125de6
[main] Bug 1847305 - Fix tests for NestedGeckoView
Comment 8•10 months ago
|
||
\o/
Comment 9•10 months ago
|
||
Verified on the latest Fenix Nightly 122.0a1 from 12/8 with Samsung Galaxy Note 8 (Android 9), and Google Pixel 6 (Android 14).
The scrolling on https://diverace.com/, and text https://faraday.basschouten.com/mozilla/scrollingtest.html work as expected.
Description
•