Overscroll effect not gone on Android 12+ if finger is released
Categories
(GeckoView :: General, defect, P1)
Tracking
(firefox104 wontfix, firefox105 wontfix, firefox106 fixed)
People
(Reporter: m_kato, Assigned: botond)
References
Details
(Whiteboard: [geckoview:m106])
Attachments
(5 files)
This is moved from bug 1710708.
Android 12+ uses stretch animation for overscroll animation, instead of glow drawing. But when using stretch animation, animation isn't sometimes finished. So Overscroll effect is kept even if user release finger on screen.
The APZ call sequences are the following
AndroidContentController::UpdateOverscrollOffset
AndroidContentController::UpdateOverscrollVelocity
UpdateOverscrollVelocity
calls EdgeEffect.onRelease
in OverscrollEdgeEffect.setVelocity
, So animation is finished.
But when this occurs, the APZ call sequences are the following
AndroidContentController::UpdateOverscrollOffset
AndroidContentController::UpdateOverscrollVelocity
AndroidContentController::UpdateOverscrollOffset
... (repeat 3. since we keep finger on screen)
n.AndroidContentController::UpdateOverscrollOffset
.
So since UpdateOverscrollOffset
doesn't call EdgeEffect.onRelease
, animation isn't finished. When using glow drawing, I am not sure that EdgeEffect
seems to finish animation even if not calling EdgeEffect.onRelease
...
Reporter | ||
Updated•2 years ago
|
Updated•2 years ago
|
Reporter | ||
Comment 1•2 years ago
|
||
Reporter | ||
Comment 2•2 years ago
|
||
GeckoView's overscroll is implemented by OS side using
WidgetOverscrollEffect
.
When not releasing finger during overscroll, stretched animation is kept on
Android 12+ since EdgeEffect.onRelease
isn't called. Then, when releasing
finger, this animation isn't finished on GeckoView with Android 12+.
When this situation, APZ doesn't call
WidgetOverscrollEffect::HandleFlingOverscroll
by releasing finger due to too
small velocity value in AsyncPanZoomController::HandleEndOfPan
. So there is
no way to detect whether releasing finger on GeckoView side.
I think We should notify GeckoView of releasing finger to finish animation.
This won't occurs on GenericOverscollEffect
on macOS since overscoll
animation is managed by APZ and this animation will be finished by
UpdateAnimation
.
Updated•2 years ago
|
Updated•2 years ago
|
Assignee | ||
Comment 3•2 years ago
|
||
Assignee | ||
Comment 4•2 years ago
|
||
The function is used in some scenarios unrelated to fling animation.
Assignee | ||
Comment 5•2 years ago
|
||
A couple of call sites, which are only interested in overscrolling that
induces a transform, are changed to call IsPhysicallyOverscrolled(),
the GenericOverscrollEffect implementation, directly.
Depends on D157004
Assignee | ||
Comment 6•2 years ago
|
||
Depends on D157005
Updated•2 years ago
|
Comment 8•2 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/9918193202b5
https://hg.mozilla.org/mozilla-central/rev/d76ddc2e3c58
https://hg.mozilla.org/mozilla-central/rev/6f111e745189
https://hg.mozilla.org/mozilla-central/rev/b584463ec5b6
https://hg.mozilla.org/mozilla-central/rev/0bdbe3eb11f6
Updated•2 years ago
|
Reporter | ||
Updated•1 year ago
|
Updated•9 months ago
|
Description
•