It looks like a scroll animation is never created when the event is passed to the compositor. If I break in the for-loop in LayerTreeHostImpl::ScrollAnimated, just after |actual_delta| is calculated:
gfx::ScrollOffset current_offset = layer_impl->CurrentScrollOffset(); gfx::ScrollOffset target_offset = ScrollOffsetWithDelta(current_offset, pending_delta); target_offset.SetToMax(gfx::ScrollOffset()); target_offset.SetToMin(layer_impl->MaxScrollOffset()); gfx::Vector2dF actual_delta = target_offset.DeltaFrom(current_offset);
const float kEpsilon = 0.1f; bool can_layer_scroll = (std::abs(actual_delta.x()) > kEpsilon || std::abs(actual_delta.y()) > kEpsilon);
(gdb) p actual_delta $65 = {x_ = 0, y_ = 0} (gdb) p target_offset $66 = {x_ = 0, y_ = 53.333332061767578} (gdb) p current_offset $67 = {x_ = 0, y_ = 0}
The value of |actual_delta| looks bogus
It looks like a scroll animation is never created when the event is passed to the compositor. If I break in the for-loop in LayerTreeHostIm pl::ScrollAnima ted, just after |actual_delta| is calculated:
gfx: :ScrollOffset current_offset = layer_impl- >CurrentScrollO ffset() ; :ScrollOffset target_offset =
ScrollOffset WithDelta( current_ offset, pending_delta); offset. SetToMax( gfx::ScrollOffs et()); offset. SetToMin( layer_impl- >MaxScrollOffse t()); :Vector2dF actual_delta = target_ offset. DeltaFrom( current_ offset) ;
gfx:
target_
target_
gfx:
const float kEpsilon = 0.1f; actual_ delta.x( )) > kEpsilon ||
std: :abs(actual_ delta.y( )) > kEpsilon);
bool can_layer_scroll = (std::abs(
(gdb) p actual_delta
$65 = {x_ = 0, y_ = 0}
(gdb) p target_offset
$66 = {x_ = 0, y_ = 53.333332061767578}
(gdb) p current_offset
$67 = {x_ = 0, y_ = 0}
The value of |actual_delta| looks bogus