|
[exp] Browser-side fling in aura.
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.
Some details about how this works:
. The replacement of FlingStart event with a sequence of ScrollUpdate happens at
RenderWidgetHostViewAura in this version. It should move somewhere platform neutral,
ideally in InputRouterImpl.
. The ScrollUpdate events are generated from a CompositorAnimationObserver callback,
i.e. a ScrollUpdate[WithoutPropagation] event is generated for every animation-tick
in the compositor (i.e. every frame?). Ideally, we would generate the
ScrollUpdate[WithoutPropagation] event in response to the ScrollUpdate ack from the
renderer instead.
. The location of all the ScrollUpdate[WithoutPropagation] events are the same as the
location of the FlingStart event.
. Any in-progress fling is stopped when a GESTURE_BEGIN event is received (i.e. a new
touch-point becomes active). If the mechanisms are moved into InputRouterImpl, this
should happen upon receiving a FlingCancel event instead.
BUG=TBD
|