Index: content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc |
diff --git a/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc b/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc |
index 549945ece38c4f4b4d0cc1df595fa47e64701246..813735f5ef18a538c801a5d8309cc2b3ba9dc2f2 100644 |
--- a/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc |
+++ b/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc |
@@ -28,9 +28,6 @@ void AddFakeComponentsWithTimeStamp( |
latency->AddLatencyNumberWithTimestamp( |
ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, 0, 0, time_stamp, 1); |
latency->AddLatencyNumberWithTimestamp( |
- ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
- tracker.latency_component_id(), 0, time_stamp, 1); |
- latency->AddLatencyNumberWithTimestamp( |
ui::INPUT_EVENT_LATENCY_RENDERER_SWAP_COMPONENT, 0, 0, time_stamp, 1); |
latency->AddLatencyNumberWithTimestamp( |
ui::INPUT_EVENT_BROWSER_RECEIVED_RENDERER_SWAP_COMPONENT, 0, 0, |
@@ -39,6 +36,9 @@ void AddFakeComponentsWithTimeStamp( |
void AddFakeComponents(const RenderWidgetHostLatencyTracker& tracker, |
ui::LatencyInfo* latency) { |
+ latency->AddLatencyNumberWithTimestamp( |
+ ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
+ tracker.latency_component_id(), 0, base::TimeTicks::Now(), 1); |
AddFakeComponentsWithTimeStamp(tracker, latency, base::TimeTicks::Now()); |
} |
@@ -95,7 +95,8 @@ class RenderWidgetHostLatencyTrackerTest : public testing::Test { |
std::unique_ptr<base::HistogramTester> histogram_tester_; |
RenderWidgetHostLatencyTracker tracker_; |
}; |
-TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelHistograms) { |
+ |
+TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToFirstScrollHistograms) { |
for (bool rendering_on_main : {false, true}) { |
for (bool is_running_navigation_hint_task : {false, true}) { |
ResetHistograms(); |
@@ -105,6 +106,9 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelHistograms) { |
base::TimeTicks now = base::TimeTicks::Now(); |
wheel.timeStampSeconds = (now - base::TimeTicks()).InSecondsF(); |
ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL); |
+ wheel_latency.AddLatencyNumberWithTimestamp( |
+ ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
+ tracker()->latency_component_id(), 0, now, 1); |
AddFakeComponentsWithTimeStamp(*tracker(), &wheel_latency, now); |
AddRenderingScheduledComponent(&wheel_latency, rendering_on_main, now); |
tracker()->OnInputEvent(wheel, &wheel_latency); |
@@ -122,9 +126,104 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelHistograms) { |
EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelAcked", 1)); |
EXPECT_TRUE( |
- HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel." |
- "TimeToFirstScrollUpdateSwapBegin2", |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
+ "TimeToScrollUpdateSwapBegin2", |
1)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Main", |
+ rendering_on_main ? 1 : 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Impl", |
+ rendering_on_main ? 0 : 1)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Main", |
+ rendering_on_main ? 1 : 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Impl", |
+ rendering_on_main ? 0 : 1)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
+ "RendererSwapToBrowserNotified2", |
+ 1)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
+ "BrowserNotifiedToBeforeGpuSwap2", |
+ 1)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Wheel.GpuSwap2", 1)); |
+ |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Main", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Impl", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Main", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Impl", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Wheel.RendererSwapToBrowserNotified2", |
+ 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2", |
+ 0)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 0)); |
+ } |
+ } |
+ } |
+} |
+ |
+TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToScrollHistograms) { |
+ for (bool rendering_on_main : {false, true}) { |
+ for (bool is_running_navigation_hint_task : {false, true}) { |
+ ResetHistograms(); |
+ { |
+ auto wheel = SyntheticWebMouseWheelEventBuilder::Build( |
+ blink::WebMouseWheelEvent::PhaseChanged); |
+ base::TimeTicks now = base::TimeTicks::Now(); |
+ wheel.timeStampSeconds = (now - base::TimeTicks()).InSecondsF(); |
+ ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL); |
+ wheel_latency.AddLatencyNumberWithTimestamp( |
+ ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
+ tracker()->latency_component_id(), 0, now, 1); |
+ AddFakeComponentsWithTimeStamp(*tracker(), &wheel_latency, now); |
+ AddRenderingScheduledComponent(&wheel_latency, rendering_on_main, now); |
+ tracker()->OnInputEvent(wheel, &wheel_latency); |
+ EXPECT_TRUE(wheel_latency.FindLatency( |
+ ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, |
+ tracker()->latency_component_id(), nullptr)); |
+ EXPECT_TRUE(wheel_latency.FindLatency( |
+ ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); |
+ EXPECT_EQ(1U, wheel_latency.input_coordinates_size()); |
+ tracker()->OnInputEventAck(wheel, &wheel_latency, |
+ INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
+ tracker()->OnFrameSwapped(wheel_latency, |
+ is_running_navigation_hint_task); |
+ EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelUI", 1)); |
+ EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelAcked", 1)); |
+ |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
+ "TimeToScrollUpdateSwapBegin2", |
+ 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Main", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Impl", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Main", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Impl", 0)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
+ "RendererSwapToBrowserNotified2", |
+ 0)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
+ "BrowserNotifiedToBeforeGpuSwap2", |
+ 0)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Wheel.GpuSwap2", 0)); |
EXPECT_TRUE(HistogramSizeEq( |
"Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Main", |
@@ -151,7 +250,7 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelHistograms) { |
} |
} |
-TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchHistograms) { |
+TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToFirstScrollHistograms) { |
for (bool rendering_on_main : {false, true}) { |
for (bool is_running_navigation_hint_task : {false, true}) { |
ResetHistograms(); |
@@ -161,6 +260,9 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchHistograms) { |
base::TimeTicks now = base::TimeTicks::Now(); |
scroll.timeStampSeconds = (now - base::TimeTicks()).InSecondsF(); |
ui::LatencyInfo scroll_latency; |
+ scroll_latency.AddLatencyNumberWithTimestamp( |
+ ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
+ tracker()->latency_component_id(), 0, now, 1); |
AddFakeComponentsWithTimeStamp(*tracker(), &scroll_latency, now); |
AddRenderingScheduledComponent(&scroll_latency, rendering_on_main, now); |
tracker()->OnInputEvent(scroll, &scroll_latency); |
@@ -180,6 +282,9 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchHistograms) { |
touch.PressPoint(1, 1); |
ui::LatencyInfo touch_latency(ui::SourceEventType::TOUCH); |
base::TimeTicks now = base::TimeTicks::Now(); |
+ touch_latency.AddLatencyNumberWithTimestamp( |
+ ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
+ tracker()->latency_component_id(), 0, now, 1); |
AddFakeComponentsWithTimeStamp(*tracker(), &touch_latency, now); |
AddRenderingScheduledComponent(&touch_latency, rendering_on_main, now); |
tracker()->OnInputEvent(touch, &touch_latency); |
@@ -227,12 +332,127 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchHistograms) { |
"Event.Latency.ScrollUpdate.BrowserNotifiedToBeforeGpuSwap", 1)); |
EXPECT_TRUE(HistogramSizeEq("Event.Latency.ScrollUpdate.GpuSwap", 1)); |
EXPECT_TRUE(HistogramSizeEq( |
- "Event.Latency.ScrollUpdate.Touch.TimeToFirstScrollUpdateSwapBegin2", |
- 1)); |
+ "Event.Latency.ScrollBegin.Touch.TimeToScrollUpdateSwapBegin2", 1)); |
EXPECT_TRUE(HistogramSizeEq( |
"Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", 0)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Touch.TimeToHandled2_Main", |
+ rendering_on_main ? 1 : 0)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Touch.TimeToHandled2_Impl", |
+ rendering_on_main ? 0 : 1)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Main", |
+ rendering_on_main ? 1 : 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Impl", |
+ rendering_on_main ? 0 : 1)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Touch." |
+ "RendererSwapToBrowserNotified2", |
+ 1)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Touch." |
+ "BrowserNotifiedToBeforeGpuSwap2", |
+ 1)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Touch.GpuSwap2", 1)); |
+ |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Main", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Impl", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Main", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", |
+ 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", |
+ 0)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 0)); |
+ } |
+ } |
+} |
+ |
+TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) { |
+ for (bool rendering_on_main : {false, true}) { |
+ for (bool is_running_navigation_hint_task : {false, true}) { |
+ ResetHistograms(); |
+ { |
+ auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate( |
+ 5.f, -5.f, 0, blink::WebGestureDeviceTouchscreen); |
+ base::TimeTicks now = base::TimeTicks::Now(); |
+ scroll.timeStampSeconds = (now - base::TimeTicks()).InSecondsF(); |
+ ui::LatencyInfo scroll_latency; |
+ scroll_latency.AddLatencyNumberWithTimestamp( |
+ ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
+ tracker()->latency_component_id(), 0, now, 1); |
+ AddFakeComponentsWithTimeStamp(*tracker(), &scroll_latency, now); |
+ AddRenderingScheduledComponent(&scroll_latency, rendering_on_main, now); |
+ tracker()->OnInputEvent(scroll, &scroll_latency); |
+ EXPECT_TRUE(scroll_latency.FindLatency( |
+ ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, |
+ tracker()->latency_component_id(), nullptr)); |
+ EXPECT_TRUE(scroll_latency.FindLatency( |
+ ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); |
+ EXPECT_EQ(1U, scroll_latency.input_coordinates_size()); |
+ tracker()->OnInputEventAck(scroll, &scroll_latency, |
+ INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
+ } |
+ |
+ { |
+ SyntheticWebTouchEvent touch; |
+ touch.PressPoint(0, 0); |
+ touch.PressPoint(1, 1); |
+ ui::LatencyInfo touch_latency(ui::SourceEventType::TOUCH); |
+ base::TimeTicks now = base::TimeTicks::Now(); |
+ touch_latency.AddLatencyNumberWithTimestamp( |
+ ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
+ tracker()->latency_component_id(), 0, now, 1); |
+ AddFakeComponentsWithTimeStamp(*tracker(), &touch_latency, now); |
+ AddRenderingScheduledComponent(&touch_latency, rendering_on_main, now); |
+ tracker()->OnInputEvent(touch, &touch_latency); |
+ EXPECT_TRUE(touch_latency.FindLatency( |
+ ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, |
+ tracker()->latency_component_id(), nullptr)); |
+ EXPECT_TRUE(touch_latency.FindLatency( |
+ ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); |
+ EXPECT_EQ(2U, touch_latency.input_coordinates_size()); |
+ tracker()->OnInputEventAck(touch, &touch_latency, |
+ INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
+ tracker()->OnFrameSwapped(touch_latency, |
+ is_running_navigation_hint_task); |
+ } |
+ |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Touch.TimeToScrollUpdateSwapBegin2", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", 1)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Touch.TimeToHandled2_Main", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Touch.TimeToHandled2_Impl", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Main", 0)); |
+ EXPECT_TRUE(HistogramSizeEq( |
+ "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Impl", 0)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Touch." |
+ "RendererSwapToBrowserNotified2", |
+ 0)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Touch." |
+ "BrowserNotifiedToBeforeGpuSwap2", |
+ 0)); |
+ EXPECT_TRUE( |
+ HistogramSizeEq("Event.Latency.ScrollBegin.Touch.GpuSwap2", 0)); |
+ |
EXPECT_TRUE(HistogramSizeEq( |
"Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Main", |
rendering_on_main ? 1 : 0)); |