| 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 6edff37f91e42c40b8a3471c3ef07e462840144b..ebd8d171deb4931d9a2aeb6a1cc073abe6616fbe 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -237,7 +237,9 @@ LayerTreeHostImpl::LayerTreeHostImpl(
|
| requires_high_res_to_draw_(false),
|
| is_likely_to_require_a_draw_(false),
|
| has_valid_compositor_frame_sink_(false),
|
| - mutator_(nullptr) {
|
| + mutator_(nullptr),
|
| + has_scrolled_by_wheel_(false),
|
| + has_scrolled_by_touch_(false) {
|
| DCHECK(mutator_host_);
|
| mutator_host_->SetMutatorHostClient(this);
|
|
|
| @@ -2695,6 +2697,8 @@ InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBeginImpl(
|
| client_->RenewTreePriority();
|
| RecordCompositorSlowScrollMetric(type, CC_THREAD);
|
|
|
| + UpdateScrollSourceInfo(wheel_scrolling_);
|
| +
|
| return scroll_status;
|
| }
|
|
|
| @@ -3515,6 +3519,11 @@ std::unique_ptr<ScrollAndScaleSet> LayerTreeHostImpl::ProcessScrollDeltas() {
|
| active_tree_->elastic_overscroll()->PullDeltaForMainThread();
|
| scroll_info->swap_promises.swap(swap_promises_for_main_thread_scroll_update_);
|
|
|
| + // Record and reset scroll source flags.
|
| + scroll_info->has_scrolled_by_wheel = has_scrolled_by_wheel_;
|
| + scroll_info->has_scrolled_by_touch = has_scrolled_by_touch_;
|
| + has_scrolled_by_wheel_ = has_scrolled_by_touch_ = false;
|
| +
|
| return scroll_info;
|
| }
|
|
|
| @@ -4217,4 +4226,11 @@ void LayerTreeHostImpl::SetContextVisibility(bool is_visible) {
|
| }
|
| }
|
|
|
| +void LayerTreeHostImpl::UpdateScrollSourceInfo(bool is_wheel_scroll) {
|
| + if (is_wheel_scroll)
|
| + has_scrolled_by_wheel_ = true;
|
| + else
|
| + has_scrolled_by_touch_ = true;
|
| +}
|
| +
|
| } // namespace cc
|
|
|