Description[exp] Browser-side fling.
When a FlingStart event comes in, start generating a sequence of ScrollUpdate
events, and send those to the renderer instead of the FlingStart event. This
moves the control of the fling scroll entirely in the browser process.
Details:
. The FlingStart event reaches InputRouterImpl. Instead of forwarding this
event to the renderer, the input router replaces it with a sequence of
ScrollUpdate[WithoutPropagation] events. The first ScrollUpdate event is
generated and dispatched immediately.
. The subsequent ScrollUpdate events are generated hen the ACK for a previous
ScrollUpdate[WithoutPropagation] event is received.
. The location of all the ScrollUpdate[WithoutPropagation] events are the same
as the location of the FlingStart event.
. The fling is cancelled when a FlingCancel is dispatched, or when the fling
velocity slows down to zero.
. The fling is cancelled when an overscroll notification comes in from the
renderer.
. The fling is cancelled when a ScrollUpdate[WithoutPropagation] comes in as
un-consumed (and the scroll-update was sufficiently large, since towards the
end of the fling, individual scroll-updates can be too small to cause any
scrolls, and can thus be erroneously acked as un-consumed).
TODO:
. Make sure the fling is stopped at the right times:
- when sending a key event,
. Flywheel
. Aura overscroll
. WebView sync
BUG=TBD
Patch Set 1 #Patch Set 2 : tot-merge #Patch Set 3 : . #Patch Set 4 : . #Patch Set 5 : . #Patch Set 6 : . #Patch Set 7 : . #Patch Set 8 : . #Patch Set 9 : . #
Messages
Total messages: 1 (1 generated)
|