Index: third_party/WebKit/Source/core/input/EventHandlerTest.cpp |
diff --git a/third_party/WebKit/Source/core/input/EventHandlerTest.cpp b/third_party/WebKit/Source/core/input/EventHandlerTest.cpp |
index f8618151f6be13253f4f4efeefa617b8fe13d3b2..2e225ca1401d9a617ac0af124d0bf1768be40eaa 100644 |
--- a/third_party/WebKit/Source/core/input/EventHandlerTest.cpp |
+++ b/third_party/WebKit/Source/core/input/EventHandlerTest.cpp |
@@ -16,6 +16,8 @@ |
#include "core/page/AutoscrollController.h" |
#include "core/page/Page.h" |
#include "core/testing/DummyPageHolder.h" |
+#include "platform/testing/HistogramTester.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace blink { |
@@ -461,6 +463,87 @@ TEST_F(EventHandlerTest, dragEndInNewDrag) { |
// This test passes if it doesn't crash. |
} |
+TEST_F(EventHandlerTest, MainThreadScrollingReasonRecordTest) { |
+ HistogramTester histogramTester; |
+ // Test wheel scroll |
+ ScrollManager* scrollManager = new ScrollManager(*(document().frame())); |
+ scrollManager->recordMainThreadScrollingReasons( |
+ MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects | |
+ MainThreadScrollingReason::kThreadedScrollingDisabled | |
+ MainThreadScrollingReason::kPageOverlay | |
+ MainThreadScrollingReason::kHandlingScrollFromMainThread, |
+ WebGestureDeviceTouchpad); |
+ |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 1, |
+ 1); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 3, |
+ 1); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 5, |
+ 1); |
+ |
+ // We only want to record "Handling scroll from main thread" reason if it's |
+ // the only reason. If it's not the only reason, the "real" reason for |
+ // scrolling on main is something else, and we only want to pay attention to |
+ // that reason. So we should only include this reason in the histogram when |
+ // its on its own. |
+ scrollManager->recordMainThreadScrollingReasons( |
+ MainThreadScrollingReason::kHandlingScrollFromMainThread, |
+ blink::WebGestureDeviceTouchpad); |
+ |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 1, |
+ 1); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 3, |
+ 1); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 5, |
+ 1); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 14, |
+ 1); |
+ |
+ scrollManager->recordMainThreadScrollingReasons( |
+ MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects | |
+ MainThreadScrollingReason::kThreadedScrollingDisabled | |
+ MainThreadScrollingReason::kPageOverlay | |
+ MainThreadScrollingReason::kHandlingScrollFromMainThread, |
+ WebGestureDeviceTouchpad); |
+ |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 1, |
+ 2); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 3, |
+ 2); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 5, |
+ 2); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadWheelScrollReason", 14, |
+ 1); |
+ |
+ // Test touch scroll |
+ scrollManager->recordMainThreadScrollingReasons( |
+ MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects | |
+ MainThreadScrollingReason::kThreadedScrollingDisabled | |
+ MainThreadScrollingReason::kPageOverlay | |
+ MainThreadScrollingReason::kHandlingScrollFromMainThread, |
+ WebGestureDeviceTouchscreen); |
+ |
+ histogramTester.expectBucketCount("Renderer4.MainThreadGestureScrollReason", |
+ 1, 1); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadGestureScrollReason", |
+ 3, 1); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadGestureScrollReason", |
+ 5, 1); |
+ |
+ scrollManager->recordMainThreadScrollingReasons( |
+ MainThreadScrollingReason::kHandlingScrollFromMainThread, |
+ blink::WebGestureDeviceTouchscreen); |
+ |
+ histogramTester.expectBucketCount("Renderer4.MainThreadGestureScrollReason", |
+ 1, 1); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadGestureScrollReason", |
+ 3, 1); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadGestureScrollReason", |
+ 5, 1); |
+ histogramTester.expectBucketCount("Renderer4.MainThreadGestureScrollReason", |
+ 14, 1); |
+} |
+ |
class TooltipCapturingChromeClient : public EmptyChromeClient { |
public: |
TooltipCapturingChromeClient() {} |