| 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 | 
|  |