| 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 c61e6bec0d0c99f7f90801f421dd448b928bb9cb..6506a2f00a574941e93ae6464222f08bec93f956 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -1804,11 +1804,21 @@ InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBegin(
|
| // Walk up the hierarchy and look for a scrollable layer.
|
| LayerImpl* potentially_scrolling_layer_impl = 0;
|
| for (; layer_impl; layer_impl = layer_impl->parent()) {
|
| + TRACE_EVENT_INSTANT1(
|
| + "impl-scroll", "LayerTreeHostImpl::ScrollBegin considering layer",
|
| + TRACE_EVENT_SCOPE_THREAD,
|
| + "layer_id", layer_impl->id());
|
| +
|
| // The content layer can also block attempts to scroll outside the main
|
| // thread.
|
| ScrollStatus status = layer_impl->TryScroll(device_viewport_point, type);
|
| if (status == ScrollOnMainThread) {
|
| rendering_stats_instrumentation_->IncrementMainThreadScrolls();
|
| + TRACE_EVENT_INSTANT0(
|
| + "impl-scroll",
|
| + "LayerTreeHostImpl::ScrollBegin return ScrollOnMainThread",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| +
|
| UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", true);
|
| return ScrollOnMainThread;
|
| }
|
| @@ -1817,17 +1827,35 @@ InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBegin(
|
| if (!scroll_layer_impl)
|
| continue;
|
|
|
| + TRACE_EVENT_INSTANT1(
|
| + "impl-scroll",
|
| + "LayerTreeHostImpl::ScrollBegin considering scroll layer",
|
| + TRACE_EVENT_SCOPE_THREAD,
|
| + "layer_id", scroll_layer_impl->id());
|
| +
|
| status = scroll_layer_impl->TryScroll(device_viewport_point, type);
|
|
|
| // If any layer wants to divert the scroll event to the main thread, abort.
|
| if (status == ScrollOnMainThread) {
|
| rendering_stats_instrumentation_->IncrementMainThreadScrolls();
|
| + TRACE_EVENT_INSTANT0(
|
| + "impl-scroll",
|
| + "LayerTreeHostImpl::ScrollBegin return ScrollOnMainThread",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| +
|
| UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", true);
|
| return ScrollOnMainThread;
|
| }
|
|
|
| - if (status == ScrollStarted && !potentially_scrolling_layer_impl)
|
| + if (status == ScrollStarted && !potentially_scrolling_layer_impl) {
|
| potentially_scrolling_layer_impl = scroll_layer_impl;
|
| + TRACE_EVENT_INSTANT1(
|
| + "impl-scroll",
|
| + "LayerTreeHostImpl::ScrollBegin scroll layer is the potentially "
|
| + "scrolling layer",
|
| + TRACE_EVENT_SCOPE_THREAD,
|
| + "layer_id", scroll_layer_impl->id());
|
| + }
|
| }
|
|
|
| // When hiding top controls is enabled and the controls are hidden or
|
| @@ -1846,6 +1874,10 @@ InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBegin(
|
| wheel_scrolling_ = (type == Wheel);
|
| rendering_stats_instrumentation_->IncrementImplThreadScrolls();
|
| client_->RenewTreePriority();
|
| + TRACE_EVENT_ASYNC_BEGIN0(
|
| + "impl-scroll",
|
| + "LayerTreeHostImpl::ScrollBegin",
|
| + this);
|
| UMA_HISTOGRAM_BOOLEAN("TryScroll.SlowScroll", false);
|
| return ScrollStarted;
|
| }
|
| @@ -2110,6 +2142,10 @@ void LayerTreeHostImpl::ClearCurrentlyScrollingLayer() {
|
| void LayerTreeHostImpl::ScrollEnd() {
|
| if (top_controls_manager_)
|
| top_controls_manager_->ScrollEnd();
|
| + TRACE_EVENT_ASYNC_END0(
|
| + "impl-scroll",
|
| + "LayerTreeHostImpl::ScrollBegin",
|
| + this);
|
| ClearCurrentlyScrollingLayer();
|
| StartScrollbarAnimation();
|
| }
|
| @@ -2195,6 +2231,14 @@ scoped_ptr<ScrollAndScaleSet> LayerTreeHostImpl::ProcessScrollDeltas() {
|
| scoped_ptr<ScrollAndScaleSet> scroll_info(new ScrollAndScaleSet());
|
|
|
| CollectScrollDeltas(scroll_info.get(), active_tree_->root_layer());
|
| +
|
| + if (!scroll_info->scrolls.empty()) {
|
| + TRACE_EVENT_INSTANT0(
|
| + "impl-scroll",
|
| + "LayerTreeHostImpl::ProcessScrollDeltas found and set scroll deltas",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + }
|
| +
|
| scroll_info->page_scale_delta = active_tree_->page_scale_delta();
|
| active_tree_->set_sent_page_scale_delta(scroll_info->page_scale_delta);
|
|
|
|
|