Index: cc/trees/layer_tree_host_impl_unittest.cc |
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc |
index c7f6e98bea11c02d78ef280cbe3be69432b196e6..780f53063d35b28129a47984542bd21173354d74 100644 |
--- a/cc/trees/layer_tree_host_impl_unittest.cc |
+++ b/cc/trees/layer_tree_host_impl_unittest.cc |
@@ -15,6 +15,7 @@ |
#include "base/location.h" |
#include "base/memory/ptr_util.h" |
#include "base/run_loop.h" |
+#include "base/test/histogram_tester.h" |
#include "base/threading/thread_task_runner_handle.h" |
#include "cc/animation/animation_host.h" |
#include "cc/animation/animation_id_provider.h" |
@@ -754,6 +755,66 @@ TEST_F(LayerTreeHostImplTest, ScrollDeltaRepeatedScrolls) { |
scroll_delta + scroll_delta2)); |
} |
+TEST_F(LayerTreeHostImplTest, ScrollerSizeOfCCScrollingHistogramRecordingTest) { |
+ SetupScrollAndContentsLayers(gfx::Size(800, 600)); |
bokan
2017/04/20 19:27:58
Please use CreateBasicVirtualViewportLayers - it c
yigu
2017/04/20 20:22:35
Done.
|
+ host_impl_->SetViewportSize(gfx::Size(500, 500)); |
+ DrawFrame(); |
+ |
+ LayerImpl* outer_viewport_scroll_layer = |
+ host_impl_->active_tree()->OuterViewportScrollLayer(); |
+ int id = outer_viewport_scroll_layer->id(); |
+ std::unique_ptr<LayerImpl> child = |
+ LayerImpl::Create(host_impl_->active_tree(), id + 2); |
+ std::unique_ptr<LayerImpl> child_clip = |
+ LayerImpl::Create(host_impl_->active_tree(), id + 3); |
+ |
+ child_clip->SetBounds(gfx::Size(100, 100)); |
+ |
+ child->SetScrollClipLayer(child_clip->id()); |
+ child->SetElementId(LayerIdToElementIdForTesting(child->id())); |
+ child->SetBounds(gfx::Size(100, 400)); |
+ child->SetPosition(gfx::PointF()); |
+ child->SetDrawsContent(true); |
+ |
+ child_clip->test_properties()->AddChild(std::move(child)); |
+ outer_viewport_scroll_layer->test_properties()->AddChild( |
+ std::move(child_clip)); |
+ host_impl_->active_tree()->BuildPropertyTreesForTesting(); |
+ |
+ base::HistogramTester histogram_tester; |
+ |
+ // Test touch scroll. |
+ InputHandler::ScrollStatus status = host_impl_->ScrollBegin( |
+ BeginState(gfx::Point()).get(), InputHandler::TOUCHSCREEN); |
+ EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); |
+ EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, |
+ status.main_thread_scrolling_reasons); |
+ host_impl_->ScrollBy(UpdateState(gfx::Point(), gfx::Vector2d(0, 10)).get()); |
+ host_impl_->ScrollEnd(EndState().get()); |
+ |
+ histogram_tester.ExpectBucketCount("Event.Scroll.ScrollerSize.OnScroll_Touch", |
+ 10000, 1); |
+ histogram_tester.ExpectTotalCount("Event.Scroll.ScrollerSize.OnScroll_Touch", |
+ 1); |
+ |
+ // Scrolling root layer doesn't add to count. |
+ host_impl_->ScrollBegin(BeginState(gfx::Point(450, 450)).get(), |
+ InputHandler::TOUCHSCREEN); |
+ host_impl_->ScrollBy(UpdateState(gfx::Point(), gfx::Vector2d(0, 10)).get()); |
+ host_impl_->ScrollEnd(EndState().get()); |
+ histogram_tester.ExpectTotalCount("Event.Scroll.ScrollerSize.OnScroll_Touch", |
+ 1); |
+ |
+ // Test wheel scroll. |
+ host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), InputHandler::WHEEL); |
+ host_impl_->ScrollBy(UpdateState(gfx::Point(), gfx::Vector2d(0, 10)).get()); |
+ host_impl_->ScrollEnd(EndState().get()); |
+ histogram_tester.ExpectBucketCount("Event.Scroll.ScrollerSize.OnScroll_Wheel", |
+ 10000, 1); |
+ histogram_tester.ExpectTotalCount("Event.Scroll.ScrollerSize.OnScroll_Wheel", |
+ 1); |
+} |
+ |
TEST_F(LayerTreeHostImplTest, ScrollRootCallsCommitAndRedraw) { |
SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
host_impl_->active_tree()->BuildPropertyTreesForTesting(); |