Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index b6b4f3c0650cb55343c1da60f85d25a56f0fd376..e456a6ea93b6fb86843adc3f0e5c91b81455b21d 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -3189,8 +3189,10 @@ InputHandler::ScrollStatus LayerTreeHostImpl::ScrollAnimated( |
pending_delta -= scroll_delta; |
- if (!CanPropagate(scroll_node, pending_delta.x(), pending_delta.y())) |
+ if (!CanPropagate(scroll_node, pending_delta.x(), pending_delta.y())) { |
+ scroll_state.set_scroll_chain_cut(true); |
break; |
+ } |
} |
} |
scroll_state.set_is_ending(true); |
@@ -3453,8 +3455,10 @@ void LayerTreeHostImpl::DistributeScrollDelta(ScrollState* scroll_state) { |
? scroll_state->delta_y_hint() |
: scroll_state->delta_y(); |
- if (!CanPropagate(scroll_node, delta_x, delta_y)) |
+ if (!CanPropagate(scroll_node, delta_x, delta_y)) { |
+ scroll_state->set_scroll_chain_cut(true); |
break; |
+ } |
} |
} |
active_tree_->SetCurrentlyScrollingNode( |
@@ -3573,6 +3577,12 @@ InputHandlerScrollResult LayerTreeHostImpl::ScrollBy( |
scroll_result.did_overscroll_root = !unused_root_delta.IsZero(); |
scroll_result.accumulated_root_overscroll = accumulated_root_overscroll_; |
scroll_result.unused_scroll_delta = unused_root_delta; |
+ scroll_result.scroll_boundary_behavior = |
+ scroll_state->is_scroll_chain_cut() |
+ ? ScrollBoundaryBehavior( |
+ ScrollBoundaryBehavior::ScrollBoundaryBehaviorType:: |
+ kScrollBoundaryBehaviorTypeNone) |
+ : active_tree()->scroll_boundary_behavior(); |
if (scroll_result.did_scroll) { |
// Scrolling can change the root scroll offset, so inform the synchronous |