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