| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/test/histogram_tester.h" | 5 #include "base/test/histogram_tester.h" |
| 6 #include "components/rappor/public/rappor_utils.h" | 6 #include "components/rappor/public/rappor_utils.h" |
| 7 #include "components/rappor/test_rappor_service.h" | 7 #include "components/rappor/test_rappor_service.h" |
| 8 #include "content/browser/renderer_host/input/render_widget_host_latency_tracker
.h" | 8 #include "content/browser/renderer_host/input/render_widget_host_latency_tracker
.h" |
| 9 #include "content/common/input/synthetic_web_input_event_builders.h" | 9 #include "content/common/input/synthetic_web_input_event_builders.h" |
| 10 #include "content/public/browser/native_web_keyboard_event.h" | 10 #include "content/public/browser/native_web_keyboard_event.h" |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 std::unique_ptr<base::HistogramTester> histogram_tester_; | 174 std::unique_ptr<base::HistogramTester> histogram_tester_; |
| 175 RenderWidgetHostLatencyTracker tracker_; | 175 RenderWidgetHostLatencyTracker tracker_; |
| 176 RenderWidgetHostLatencyTrackerTestBrowserClient test_browser_client_; | 176 RenderWidgetHostLatencyTrackerTestBrowserClient test_browser_client_; |
| 177 ContentBrowserClient* old_browser_client_; | 177 ContentBrowserClient* old_browser_client_; |
| 178 }; | 178 }; |
| 179 | 179 |
| 180 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToFirstScrollHistograms) { | 180 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToFirstScrollHistograms) { |
| 181 const GURL url("http://www.foo.bar.com/subpage/1"); | 181 const GURL url("http://www.foo.bar.com/subpage/1"); |
| 182 contents()->NavigateAndCommit(url); | 182 contents()->NavigateAndCommit(url); |
| 183 for (bool rendering_on_main : {false, true}) { | 183 for (bool rendering_on_main : {false, true}) { |
| 184 for (bool is_running_navigation_hint_task : {false, true}) { | 184 ResetHistograms(); |
| 185 ResetHistograms(); | 185 { |
| 186 { | 186 auto wheel = SyntheticWebMouseWheelEventBuilder::Build( |
| 187 auto wheel = SyntheticWebMouseWheelEventBuilder::Build( | 187 blink::WebMouseWheelEvent::PhaseChanged); |
| 188 blink::WebMouseWheelEvent::PhaseChanged); | 188 base::TimeTicks now = base::TimeTicks::Now(); |
| 189 base::TimeTicks now = base::TimeTicks::Now(); | 189 wheel.setTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); |
| 190 wheel.setTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); | 190 ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL); |
| 191 ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL); | 191 wheel_latency.AddLatencyNumberWithTimestamp( |
| 192 wheel_latency.AddLatencyNumberWithTimestamp( | 192 ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
| 193 ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, | 193 tracker()->latency_component_id(), 0, now, 1); |
| 194 tracker()->latency_component_id(), 0, now, 1); | 194 AddFakeComponentsWithTimeStamp(*tracker(), &wheel_latency, now); |
| 195 AddFakeComponentsWithTimeStamp(*tracker(), &wheel_latency, now); | 195 AddRenderingScheduledComponent(&wheel_latency, rendering_on_main, now); |
| 196 AddRenderingScheduledComponent(&wheel_latency, rendering_on_main, now); | 196 tracker()->OnInputEvent(wheel, &wheel_latency); |
| 197 tracker()->OnInputEvent(wheel, &wheel_latency); | 197 EXPECT_TRUE(wheel_latency.FindLatency( |
| 198 EXPECT_TRUE(wheel_latency.FindLatency( | 198 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, |
| 199 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, | 199 tracker()->latency_component_id(), nullptr)); |
| 200 tracker()->latency_component_id(), nullptr)); | 200 EXPECT_TRUE(wheel_latency.FindLatency( |
| 201 EXPECT_TRUE(wheel_latency.FindLatency( | 201 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); |
| 202 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); | 202 EXPECT_EQ(1U, wheel_latency.input_coordinates_size()); |
| 203 EXPECT_EQ(1U, wheel_latency.input_coordinates_size()); | 203 tracker()->OnInputEventAck(wheel, &wheel_latency, |
| 204 tracker()->OnInputEventAck(wheel, &wheel_latency, | 204 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 205 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 205 tracker()->OnFrameSwapped(wheel_latency); |
| 206 tracker()->OnFrameSwapped(wheel_latency, | |
| 207 is_running_navigation_hint_task); | |
| 208 | |
| 209 // Rappor metrics. | |
| 210 EXPECT_TRUE( | |
| 211 RapporSampleAssert("Event.Latency.ScrollUpdate.Touch." | |
| 212 "TimeToScrollUpdateSwapBegin2", | |
| 213 0)); | |
| 214 EXPECT_TRUE( | |
| 215 RapporSampleAssert("Event.Latency.ScrollBegin.Touch." | |
| 216 "TimeToScrollUpdateSwapBegin2", | |
| 217 0)); | |
| 218 EXPECT_TRUE( | |
| 219 RapporSampleAssert("Event.Latency.ScrollBegin.Wheel." | |
| 220 "TimeToScrollUpdateSwapBegin2", | |
| 221 2)); | |
| 222 EXPECT_EQ( | |
| 223 2, test_browser_client_.getTestRapporService()->GetReportsCount()); | |
| 224 | |
| 225 // UMA histograms. | |
| 226 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelUI", 1)); | |
| 227 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelAcked", 1)); | |
| 228 | |
| 229 EXPECT_TRUE( | |
| 230 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." | |
| 231 "TimeToScrollUpdateSwapBegin2", | |
| 232 1)); | |
| 233 EXPECT_TRUE(HistogramSizeEq( | |
| 234 "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Main", | |
| 235 rendering_on_main ? 1 : 0)); | |
| 236 EXPECT_TRUE(HistogramSizeEq( | |
| 237 "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Impl", | |
| 238 rendering_on_main ? 0 : 1)); | |
| 239 EXPECT_TRUE(HistogramSizeEq( | |
| 240 "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Main", | |
| 241 rendering_on_main ? 1 : 0)); | |
| 242 EXPECT_TRUE(HistogramSizeEq( | |
| 243 "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Impl", | |
| 244 rendering_on_main ? 0 : 1)); | |
| 245 EXPECT_TRUE( | |
| 246 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." | |
| 247 "RendererSwapToBrowserNotified2", | |
| 248 1)); | |
| 249 EXPECT_TRUE( | |
| 250 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." | |
| 251 "BrowserNotifiedToBeforeGpuSwap2", | |
| 252 1)); | |
| 253 EXPECT_TRUE( | |
| 254 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel.GpuSwap2", 1)); | |
| 255 | |
| 256 EXPECT_TRUE(HistogramSizeEq( | |
| 257 "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Main", 0)); | |
| 258 EXPECT_TRUE(HistogramSizeEq( | |
| 259 "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Impl", 0)); | |
| 260 EXPECT_TRUE(HistogramSizeEq( | |
| 261 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Main", 0)); | |
| 262 EXPECT_TRUE(HistogramSizeEq( | |
| 263 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Impl", 0)); | |
| 264 EXPECT_TRUE(HistogramSizeEq( | |
| 265 "Event.Latency.ScrollUpdate.Wheel.RendererSwapToBrowserNotified2", | |
| 266 0)); | |
| 267 EXPECT_TRUE(HistogramSizeEq( | |
| 268 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2", | |
| 269 0)); | |
| 270 EXPECT_TRUE( | |
| 271 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 0)); | |
| 272 } | |
| 273 } | |
| 274 } | |
| 275 } | |
| 276 | |
| 277 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToScrollHistograms) { | |
| 278 for (bool rendering_on_main : {false, true}) { | |
| 279 for (bool is_running_navigation_hint_task : {false, true}) { | |
| 280 ResetHistograms(); | |
| 281 { | |
| 282 auto wheel = SyntheticWebMouseWheelEventBuilder::Build( | |
| 283 blink::WebMouseWheelEvent::PhaseChanged); | |
| 284 base::TimeTicks now = base::TimeTicks::Now(); | |
| 285 wheel.setTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); | |
| 286 ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL); | |
| 287 wheel_latency.AddLatencyNumberWithTimestamp( | |
| 288 ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, | |
| 289 tracker()->latency_component_id(), 0, now, 1); | |
| 290 AddFakeComponentsWithTimeStamp(*tracker(), &wheel_latency, now); | |
| 291 AddRenderingScheduledComponent(&wheel_latency, rendering_on_main, now); | |
| 292 tracker()->OnInputEvent(wheel, &wheel_latency); | |
| 293 EXPECT_TRUE(wheel_latency.FindLatency( | |
| 294 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, | |
| 295 tracker()->latency_component_id(), nullptr)); | |
| 296 EXPECT_TRUE(wheel_latency.FindLatency( | |
| 297 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); | |
| 298 EXPECT_EQ(1U, wheel_latency.input_coordinates_size()); | |
| 299 tracker()->OnInputEventAck(wheel, &wheel_latency, | |
| 300 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 301 tracker()->OnFrameSwapped(wheel_latency, | |
| 302 is_running_navigation_hint_task); | |
| 303 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelUI", 1)); | |
| 304 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelAcked", 1)); | |
| 305 | |
| 306 EXPECT_TRUE( | |
| 307 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." | |
| 308 "TimeToScrollUpdateSwapBegin2", | |
| 309 0)); | |
| 310 EXPECT_TRUE(HistogramSizeEq( | |
| 311 "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Main", 0)); | |
| 312 EXPECT_TRUE(HistogramSizeEq( | |
| 313 "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Impl", 0)); | |
| 314 EXPECT_TRUE(HistogramSizeEq( | |
| 315 "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Main", 0)); | |
| 316 EXPECT_TRUE(HistogramSizeEq( | |
| 317 "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Impl", 0)); | |
| 318 EXPECT_TRUE( | |
| 319 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." | |
| 320 "RendererSwapToBrowserNotified2", | |
| 321 0)); | |
| 322 EXPECT_TRUE( | |
| 323 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." | |
| 324 "BrowserNotifiedToBeforeGpuSwap2", | |
| 325 0)); | |
| 326 EXPECT_TRUE( | |
| 327 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel.GpuSwap2", 0)); | |
| 328 | |
| 329 EXPECT_TRUE(HistogramSizeEq( | |
| 330 "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Main", | |
| 331 rendering_on_main ? 1 : 0)); | |
| 332 EXPECT_TRUE(HistogramSizeEq( | |
| 333 "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Impl", | |
| 334 rendering_on_main ? 0 : 1)); | |
| 335 EXPECT_TRUE(HistogramSizeEq( | |
| 336 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Main", | |
| 337 rendering_on_main ? 1 : 0)); | |
| 338 EXPECT_TRUE(HistogramSizeEq( | |
| 339 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Impl", | |
| 340 rendering_on_main ? 0 : 1)); | |
| 341 EXPECT_TRUE(HistogramSizeEq( | |
| 342 "Event.Latency.ScrollUpdate.Wheel.RendererSwapToBrowserNotified2", | |
| 343 1)); | |
| 344 EXPECT_TRUE(HistogramSizeEq( | |
| 345 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2", | |
| 346 1)); | |
| 347 EXPECT_TRUE( | |
| 348 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 1)); | |
| 349 } | |
| 350 } | |
| 351 } | |
| 352 } | |
| 353 | |
| 354 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToFirstScrollHistograms) { | |
| 355 const GURL url("http://www.foo.bar.com/subpage/1"); | |
| 356 contents()->NavigateAndCommit(url); | |
| 357 for (bool rendering_on_main : {false, true}) { | |
| 358 for (bool is_running_navigation_hint_task : {false, true}) { | |
| 359 ResetHistograms(); | |
| 360 { | |
| 361 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate( | |
| 362 5.f, -5.f, 0, blink::WebGestureDeviceTouchscreen); | |
| 363 base::TimeTicks now = base::TimeTicks::Now(); | |
| 364 scroll.setTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); | |
| 365 ui::LatencyInfo scroll_latency; | |
| 366 scroll_latency.AddLatencyNumberWithTimestamp( | |
| 367 ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, | |
| 368 tracker()->latency_component_id(), 0, now, 1); | |
| 369 AddFakeComponentsWithTimeStamp(*tracker(), &scroll_latency, now); | |
| 370 AddRenderingScheduledComponent(&scroll_latency, rendering_on_main, now); | |
| 371 tracker()->OnInputEvent(scroll, &scroll_latency); | |
| 372 EXPECT_TRUE(scroll_latency.FindLatency( | |
| 373 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, | |
| 374 tracker()->latency_component_id(), nullptr)); | |
| 375 EXPECT_TRUE(scroll_latency.FindLatency( | |
| 376 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); | |
| 377 EXPECT_EQ(1U, scroll_latency.input_coordinates_size()); | |
| 378 tracker()->OnInputEventAck(scroll, &scroll_latency, | |
| 379 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 380 } | |
| 381 | |
| 382 { | |
| 383 SyntheticWebTouchEvent touch; | |
| 384 touch.PressPoint(0, 0); | |
| 385 touch.PressPoint(1, 1); | |
| 386 ui::LatencyInfo touch_latency(ui::SourceEventType::TOUCH); | |
| 387 base::TimeTicks now = base::TimeTicks::Now(); | |
| 388 touch_latency.AddLatencyNumberWithTimestamp( | |
| 389 ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, | |
| 390 tracker()->latency_component_id(), 0, now, 1); | |
| 391 AddFakeComponentsWithTimeStamp(*tracker(), &touch_latency, now); | |
| 392 AddRenderingScheduledComponent(&touch_latency, rendering_on_main, now); | |
| 393 tracker()->OnInputEvent(touch, &touch_latency); | |
| 394 EXPECT_TRUE(touch_latency.FindLatency( | |
| 395 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, | |
| 396 tracker()->latency_component_id(), nullptr)); | |
| 397 EXPECT_TRUE(touch_latency.FindLatency( | |
| 398 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); | |
| 399 EXPECT_EQ(2U, touch_latency.input_coordinates_size()); | |
| 400 tracker()->OnInputEventAck(touch, &touch_latency, | |
| 401 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | |
| 402 tracker()->OnFrameSwapped(touch_latency, | |
| 403 is_running_navigation_hint_task); | |
| 404 } | |
| 405 | 206 |
| 406 // Rappor metrics. | 207 // Rappor metrics. |
| 407 EXPECT_TRUE( | 208 EXPECT_TRUE( |
| 408 RapporSampleAssert("Event.Latency.ScrollUpdate.Touch." | 209 RapporSampleAssert("Event.Latency.ScrollUpdate.Touch." |
| 409 "TimeToScrollUpdateSwapBegin2", | 210 "TimeToScrollUpdateSwapBegin2", |
| 410 0)); | 211 0)); |
| 411 EXPECT_TRUE( | 212 EXPECT_TRUE( |
| 412 RapporSampleAssert("Event.Latency.ScrollBegin.Touch." | 213 RapporSampleAssert("Event.Latency.ScrollBegin.Touch." |
| 413 "TimeToScrollUpdateSwapBegin2", | 214 "TimeToScrollUpdateSwapBegin2", |
| 414 2)); | 215 0)); |
| 415 EXPECT_TRUE( | 216 EXPECT_TRUE( |
| 416 RapporSampleAssert("Event.Latency.ScrollBegin.Wheel." | 217 RapporSampleAssert("Event.Latency.ScrollBegin.Wheel." |
| 417 "TimeToScrollUpdateSwapBegin2", | 218 "TimeToScrollUpdateSwapBegin2", |
| 418 0)); | 219 2)); |
| 419 EXPECT_EQ(2, | 220 EXPECT_EQ(2, |
| 420 test_browser_client_.getTestRapporService()->GetReportsCount()); | 221 test_browser_client_.getTestRapporService()->GetReportsCount()); |
| 421 | 222 |
| 422 // UMA histograms. | 223 // UMA histograms. |
| 423 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.TouchUI", 1)); | 224 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelUI", 1)); |
| 424 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.TouchAcked", 1)); | 225 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelAcked", 1)); |
| 425 EXPECT_TRUE(HistogramSizeEq( | 226 |
| 426 "Event.Latency.TouchToFirstScrollUpdateSwapBegin", 1)); | 227 EXPECT_TRUE( |
| 427 EXPECT_TRUE( | 228 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
| 428 HistogramSizeEq("Event.Latency.TouchToFirstScrollUpdateSwapBegin_" | 229 "TimeToScrollUpdateSwapBegin2", |
| 429 "IsRunningNavigationHintTask", | 230 1)); |
| 430 is_running_navigation_hint_task ? 1 : 0)); | 231 EXPECT_TRUE( |
| 431 EXPECT_TRUE( | 232 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Main", |
| 432 HistogramSizeEq("Event.Latency.TouchToScrollUpdateSwapBegin", 1)); | |
| 433 EXPECT_TRUE( | |
| 434 HistogramSizeEq("Event.Latency.TouchToScrollUpdateSwapBegin_" | |
| 435 "IsRunningNavigationHintTask", | |
| 436 is_running_navigation_hint_task ? 1 : 0)); | |
| 437 EXPECT_TRUE(HistogramSizeEq( | |
| 438 "Event.Latency.ScrollBegin.Touch.TimeToScrollUpdateSwapBegin2", 1)); | |
| 439 | |
| 440 EXPECT_TRUE(HistogramSizeEq( | |
| 441 "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", 0)); | |
| 442 | |
| 443 EXPECT_TRUE( | |
| 444 HistogramSizeEq("Event.Latency.ScrollBegin.Touch.TimeToHandled2_Main", | |
| 445 rendering_on_main ? 1 : 0)); | 233 rendering_on_main ? 1 : 0)); |
| 446 EXPECT_TRUE( | 234 EXPECT_TRUE( |
| 447 HistogramSizeEq("Event.Latency.ScrollBegin.Touch.TimeToHandled2_Impl", | 235 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Impl", |
| 448 rendering_on_main ? 0 : 1)); | 236 rendering_on_main ? 0 : 1)); |
| 449 EXPECT_TRUE(HistogramSizeEq( | 237 EXPECT_TRUE(HistogramSizeEq( |
| 450 "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Main", | 238 "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Main", |
| 451 rendering_on_main ? 1 : 0)); | 239 rendering_on_main ? 1 : 0)); |
| 452 EXPECT_TRUE(HistogramSizeEq( | 240 EXPECT_TRUE(HistogramSizeEq( |
| 453 "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Impl", | 241 "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Impl", |
| 454 rendering_on_main ? 0 : 1)); | 242 rendering_on_main ? 0 : 1)); |
| 455 EXPECT_TRUE( | 243 EXPECT_TRUE( |
| 456 HistogramSizeEq("Event.Latency.ScrollBegin.Touch." | 244 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
| 457 "RendererSwapToBrowserNotified2", | 245 "RendererSwapToBrowserNotified2", |
| 458 1)); | 246 1)); |
| 459 EXPECT_TRUE( | 247 EXPECT_TRUE( |
| 460 HistogramSizeEq("Event.Latency.ScrollBegin.Touch." | 248 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
| 461 "BrowserNotifiedToBeforeGpuSwap2", | 249 "BrowserNotifiedToBeforeGpuSwap2", |
| 462 1)); | 250 1)); |
| 463 EXPECT_TRUE( | 251 EXPECT_TRUE( |
| 464 HistogramSizeEq("Event.Latency.ScrollBegin.Touch.GpuSwap2", 1)); | 252 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel.GpuSwap2", 1)); |
| 465 | 253 |
| 466 EXPECT_TRUE(HistogramSizeEq( | 254 EXPECT_TRUE(HistogramSizeEq( |
| 467 "Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Main", 0)); | 255 "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Main", 0)); |
| 468 EXPECT_TRUE(HistogramSizeEq( | 256 EXPECT_TRUE(HistogramSizeEq( |
| 469 "Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Impl", 0)); | 257 "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Impl", 0)); |
| 470 EXPECT_TRUE(HistogramSizeEq( | 258 EXPECT_TRUE(HistogramSizeEq( |
| 471 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Main", 0)); | 259 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Main", 0)); |
| 472 EXPECT_TRUE(HistogramSizeEq( | 260 EXPECT_TRUE(HistogramSizeEq( |
| 473 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", 0)); | 261 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Impl", 0)); |
| 474 EXPECT_TRUE(HistogramSizeEq( | 262 EXPECT_TRUE(HistogramSizeEq( |
| 475 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", | 263 "Event.Latency.ScrollUpdate.Wheel.RendererSwapToBrowserNotified2", |
| 476 0)); | 264 0)); |
| 477 EXPECT_TRUE(HistogramSizeEq( | 265 EXPECT_TRUE(HistogramSizeEq( |
| 478 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", | 266 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2", |
| 479 0)); | 267 0)); |
| 480 EXPECT_TRUE( | 268 EXPECT_TRUE( |
| 481 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 0)); | 269 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 0)); |
| 482 } | 270 } |
| 271 } |
| 272 } |
| 273 |
| 274 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToScrollHistograms) { |
| 275 for (bool rendering_on_main : {false, true}) { |
| 276 ResetHistograms(); |
| 277 { |
| 278 auto wheel = SyntheticWebMouseWheelEventBuilder::Build( |
| 279 blink::WebMouseWheelEvent::PhaseChanged); |
| 280 base::TimeTicks now = base::TimeTicks::Now(); |
| 281 wheel.setTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); |
| 282 ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL); |
| 283 wheel_latency.AddLatencyNumberWithTimestamp( |
| 284 ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
| 285 tracker()->latency_component_id(), 0, now, 1); |
| 286 AddFakeComponentsWithTimeStamp(*tracker(), &wheel_latency, now); |
| 287 AddRenderingScheduledComponent(&wheel_latency, rendering_on_main, now); |
| 288 tracker()->OnInputEvent(wheel, &wheel_latency); |
| 289 EXPECT_TRUE(wheel_latency.FindLatency( |
| 290 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, |
| 291 tracker()->latency_component_id(), nullptr)); |
| 292 EXPECT_TRUE(wheel_latency.FindLatency( |
| 293 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); |
| 294 EXPECT_EQ(1U, wheel_latency.input_coordinates_size()); |
| 295 tracker()->OnInputEventAck(wheel, &wheel_latency, |
| 296 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 297 tracker()->OnFrameSwapped(wheel_latency); |
| 298 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelUI", 1)); |
| 299 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.WheelAcked", 1)); |
| 300 |
| 301 EXPECT_TRUE( |
| 302 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
| 303 "TimeToScrollUpdateSwapBegin2", |
| 304 0)); |
| 305 EXPECT_TRUE(HistogramSizeEq( |
| 306 "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Main", 0)); |
| 307 EXPECT_TRUE(HistogramSizeEq( |
| 308 "Event.Latency.ScrollBegin.Wheel.TimeToHandled2_Impl", 0)); |
| 309 EXPECT_TRUE(HistogramSizeEq( |
| 310 "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Main", 0)); |
| 311 EXPECT_TRUE(HistogramSizeEq( |
| 312 "Event.Latency.ScrollBegin.Wheel.HandledToRendererSwap2_Impl", 0)); |
| 313 EXPECT_TRUE( |
| 314 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
| 315 "RendererSwapToBrowserNotified2", |
| 316 0)); |
| 317 EXPECT_TRUE( |
| 318 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel." |
| 319 "BrowserNotifiedToBeforeGpuSwap2", |
| 320 0)); |
| 321 EXPECT_TRUE( |
| 322 HistogramSizeEq("Event.Latency.ScrollBegin.Wheel.GpuSwap2", 0)); |
| 323 |
| 324 EXPECT_TRUE(HistogramSizeEq( |
| 325 "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Main", |
| 326 rendering_on_main ? 1 : 0)); |
| 327 EXPECT_TRUE(HistogramSizeEq( |
| 328 "Event.Latency.ScrollUpdate.Wheel.TimeToHandled2_Impl", |
| 329 rendering_on_main ? 0 : 1)); |
| 330 EXPECT_TRUE(HistogramSizeEq( |
| 331 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Main", |
| 332 rendering_on_main ? 1 : 0)); |
| 333 EXPECT_TRUE(HistogramSizeEq( |
| 334 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Impl", |
| 335 rendering_on_main ? 0 : 1)); |
| 336 EXPECT_TRUE(HistogramSizeEq( |
| 337 "Event.Latency.ScrollUpdate.Wheel.RendererSwapToBrowserNotified2", |
| 338 1)); |
| 339 EXPECT_TRUE(HistogramSizeEq( |
| 340 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2", |
| 341 1)); |
| 342 EXPECT_TRUE( |
| 343 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 1)); |
| 344 } |
| 345 } |
| 346 } |
| 347 |
| 348 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToFirstScrollHistograms) { |
| 349 const GURL url("http://www.foo.bar.com/subpage/1"); |
| 350 contents()->NavigateAndCommit(url); |
| 351 for (bool rendering_on_main : {false, true}) { |
| 352 ResetHistograms(); |
| 353 { |
| 354 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate( |
| 355 5.f, -5.f, 0, blink::WebGestureDeviceTouchscreen); |
| 356 base::TimeTicks now = base::TimeTicks::Now(); |
| 357 scroll.setTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); |
| 358 ui::LatencyInfo scroll_latency; |
| 359 scroll_latency.AddLatencyNumberWithTimestamp( |
| 360 ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
| 361 tracker()->latency_component_id(), 0, now, 1); |
| 362 AddFakeComponentsWithTimeStamp(*tracker(), &scroll_latency, now); |
| 363 AddRenderingScheduledComponent(&scroll_latency, rendering_on_main, now); |
| 364 tracker()->OnInputEvent(scroll, &scroll_latency); |
| 365 EXPECT_TRUE(scroll_latency.FindLatency( |
| 366 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, |
| 367 tracker()->latency_component_id(), nullptr)); |
| 368 EXPECT_TRUE(scroll_latency.FindLatency( |
| 369 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); |
| 370 EXPECT_EQ(1U, scroll_latency.input_coordinates_size()); |
| 371 tracker()->OnInputEventAck(scroll, &scroll_latency, |
| 372 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 373 } |
| 374 |
| 375 { |
| 376 SyntheticWebTouchEvent touch; |
| 377 touch.PressPoint(0, 0); |
| 378 touch.PressPoint(1, 1); |
| 379 ui::LatencyInfo touch_latency(ui::SourceEventType::TOUCH); |
| 380 base::TimeTicks now = base::TimeTicks::Now(); |
| 381 touch_latency.AddLatencyNumberWithTimestamp( |
| 382 ui::INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
| 383 tracker()->latency_component_id(), 0, now, 1); |
| 384 AddFakeComponentsWithTimeStamp(*tracker(), &touch_latency, now); |
| 385 AddRenderingScheduledComponent(&touch_latency, rendering_on_main, now); |
| 386 tracker()->OnInputEvent(touch, &touch_latency); |
| 387 EXPECT_TRUE(touch_latency.FindLatency( |
| 388 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, |
| 389 tracker()->latency_component_id(), nullptr)); |
| 390 EXPECT_TRUE(touch_latency.FindLatency( |
| 391 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); |
| 392 EXPECT_EQ(2U, touch_latency.input_coordinates_size()); |
| 393 tracker()->OnInputEventAck(touch, &touch_latency, |
| 394 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 395 tracker()->OnFrameSwapped(touch_latency); |
| 396 } |
| 397 |
| 398 // Rappor metrics. |
| 399 EXPECT_TRUE( |
| 400 RapporSampleAssert("Event.Latency.ScrollUpdate.Touch." |
| 401 "TimeToScrollUpdateSwapBegin2", |
| 402 0)); |
| 403 EXPECT_TRUE( |
| 404 RapporSampleAssert("Event.Latency.ScrollBegin.Touch." |
| 405 "TimeToScrollUpdateSwapBegin2", |
| 406 2)); |
| 407 EXPECT_TRUE( |
| 408 RapporSampleAssert("Event.Latency.ScrollBegin.Wheel." |
| 409 "TimeToScrollUpdateSwapBegin2", |
| 410 0)); |
| 411 EXPECT_EQ(2, |
| 412 test_browser_client_.getTestRapporService()->GetReportsCount()); |
| 413 |
| 414 // UMA histograms. |
| 415 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.TouchUI", 1)); |
| 416 EXPECT_TRUE(HistogramSizeEq("Event.Latency.Browser.TouchAcked", 1)); |
| 417 EXPECT_TRUE( |
| 418 HistogramSizeEq("Event.Latency.TouchToFirstScrollUpdateSwapBegin", 1)); |
| 419 EXPECT_TRUE( |
| 420 HistogramSizeEq("Event.Latency.TouchToScrollUpdateSwapBegin", 1)); |
| 421 EXPECT_TRUE(HistogramSizeEq( |
| 422 "Event.Latency.ScrollBegin.Touch.TimeToScrollUpdateSwapBegin2", 1)); |
| 423 |
| 424 EXPECT_TRUE(HistogramSizeEq( |
| 425 "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", 0)); |
| 426 |
| 427 EXPECT_TRUE( |
| 428 HistogramSizeEq("Event.Latency.ScrollBegin.Touch.TimeToHandled2_Main", |
| 429 rendering_on_main ? 1 : 0)); |
| 430 EXPECT_TRUE( |
| 431 HistogramSizeEq("Event.Latency.ScrollBegin.Touch.TimeToHandled2_Impl", |
| 432 rendering_on_main ? 0 : 1)); |
| 433 EXPECT_TRUE(HistogramSizeEq( |
| 434 "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Main", |
| 435 rendering_on_main ? 1 : 0)); |
| 436 EXPECT_TRUE(HistogramSizeEq( |
| 437 "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Impl", |
| 438 rendering_on_main ? 0 : 1)); |
| 439 EXPECT_TRUE( |
| 440 HistogramSizeEq("Event.Latency.ScrollBegin.Touch." |
| 441 "RendererSwapToBrowserNotified2", |
| 442 1)); |
| 443 EXPECT_TRUE( |
| 444 HistogramSizeEq("Event.Latency.ScrollBegin.Touch." |
| 445 "BrowserNotifiedToBeforeGpuSwap2", |
| 446 1)); |
| 447 EXPECT_TRUE(HistogramSizeEq("Event.Latency.ScrollBegin.Touch.GpuSwap2", 1)); |
| 448 |
| 449 EXPECT_TRUE(HistogramSizeEq( |
| 450 "Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Main", 0)); |
| 451 EXPECT_TRUE(HistogramSizeEq( |
| 452 "Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Impl", 0)); |
| 453 EXPECT_TRUE(HistogramSizeEq( |
| 454 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Main", 0)); |
| 455 EXPECT_TRUE(HistogramSizeEq( |
| 456 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", 0)); |
| 457 EXPECT_TRUE(HistogramSizeEq( |
| 458 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", 0)); |
| 459 EXPECT_TRUE(HistogramSizeEq( |
| 460 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 0)); |
| 461 EXPECT_TRUE( |
| 462 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 0)); |
| 483 } | 463 } |
| 484 } | 464 } |
| 485 | 465 |
| 486 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) { | 466 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) { |
| 487 const GURL url("http://www.foo.bar.com/subpage/1"); | 467 const GURL url("http://www.foo.bar.com/subpage/1"); |
| 488 contents()->NavigateAndCommit(url); | 468 contents()->NavigateAndCommit(url); |
| 489 for (bool rendering_on_main : {false, true}) { | 469 for (bool rendering_on_main : {false, true}) { |
| 490 for (bool is_running_navigation_hint_task : {false, true}) { | 470 ResetHistograms(); |
| 491 ResetHistograms(); | 471 EXPECT_EQ(0, |
| 492 EXPECT_EQ(0, | 472 test_browser_client_.getTestRapporService()->GetReportsCount()); |
| 493 test_browser_client_.getTestRapporService()->GetReportsCount()); | 473 { |
| 494 { | 474 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate( |
| 495 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate( | 475 5.f, -5.f, 0, blink::WebGestureDeviceTouchscreen); |
| 496 5.f, -5.f, 0, blink::WebGestureDeviceTouchscreen); | 476 base::TimeTicks now = base::TimeTicks::Now(); |
| 497 base::TimeTicks now = base::TimeTicks::Now(); | 477 scroll.setTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); |
| 498 scroll.setTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); | 478 ui::LatencyInfo scroll_latency; |
| 499 ui::LatencyInfo scroll_latency; | 479 scroll_latency.AddLatencyNumberWithTimestamp( |
| 500 scroll_latency.AddLatencyNumberWithTimestamp( | 480 ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
| 501 ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, | 481 tracker()->latency_component_id(), 0, now, 1); |
| 502 tracker()->latency_component_id(), 0, now, 1); | 482 AddFakeComponentsWithTimeStamp(*tracker(), &scroll_latency, now); |
| 503 AddFakeComponentsWithTimeStamp(*tracker(), &scroll_latency, now); | 483 AddRenderingScheduledComponent(&scroll_latency, rendering_on_main, now); |
| 504 AddRenderingScheduledComponent(&scroll_latency, rendering_on_main, now); | 484 tracker()->OnInputEvent(scroll, &scroll_latency); |
| 505 tracker()->OnInputEvent(scroll, &scroll_latency); | 485 EXPECT_TRUE(scroll_latency.FindLatency( |
| 506 EXPECT_TRUE(scroll_latency.FindLatency( | 486 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, |
| 507 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, | 487 tracker()->latency_component_id(), nullptr)); |
| 508 tracker()->latency_component_id(), nullptr)); | 488 EXPECT_TRUE(scroll_latency.FindLatency( |
| 509 EXPECT_TRUE(scroll_latency.FindLatency( | 489 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); |
| 510 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); | 490 EXPECT_EQ(1U, scroll_latency.input_coordinates_size()); |
| 511 EXPECT_EQ(1U, scroll_latency.input_coordinates_size()); | 491 tracker()->OnInputEventAck(scroll, &scroll_latency, |
| 512 tracker()->OnInputEventAck(scroll, &scroll_latency, | 492 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 513 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 493 } |
| 514 } | 494 |
| 515 | 495 { |
| 516 { | 496 SyntheticWebTouchEvent touch; |
| 517 SyntheticWebTouchEvent touch; | 497 touch.PressPoint(0, 0); |
| 518 touch.PressPoint(0, 0); | 498 touch.PressPoint(1, 1); |
| 519 touch.PressPoint(1, 1); | 499 ui::LatencyInfo touch_latency(ui::SourceEventType::TOUCH); |
| 520 ui::LatencyInfo touch_latency(ui::SourceEventType::TOUCH); | 500 base::TimeTicks now = base::TimeTicks::Now(); |
| 521 base::TimeTicks now = base::TimeTicks::Now(); | 501 touch_latency.AddLatencyNumberWithTimestamp( |
| 522 touch_latency.AddLatencyNumberWithTimestamp( | 502 ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
| 523 ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, | 503 tracker()->latency_component_id(), 0, now, 1); |
| 524 tracker()->latency_component_id(), 0, now, 1); | 504 AddFakeComponentsWithTimeStamp(*tracker(), &touch_latency, now); |
| 525 AddFakeComponentsWithTimeStamp(*tracker(), &touch_latency, now); | 505 AddRenderingScheduledComponent(&touch_latency, rendering_on_main, now); |
| 526 AddRenderingScheduledComponent(&touch_latency, rendering_on_main, now); | 506 tracker()->OnInputEvent(touch, &touch_latency); |
| 527 tracker()->OnInputEvent(touch, &touch_latency); | 507 EXPECT_TRUE(touch_latency.FindLatency( |
| 528 EXPECT_TRUE(touch_latency.FindLatency( | 508 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, |
| 529 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, | 509 tracker()->latency_component_id(), nullptr)); |
| 530 tracker()->latency_component_id(), nullptr)); | 510 EXPECT_TRUE(touch_latency.FindLatency( |
| 531 EXPECT_TRUE(touch_latency.FindLatency( | 511 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); |
| 532 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); | 512 EXPECT_EQ(2U, touch_latency.input_coordinates_size()); |
| 533 EXPECT_EQ(2U, touch_latency.input_coordinates_size()); | 513 tracker()->OnInputEventAck(touch, &touch_latency, |
| 534 tracker()->OnInputEventAck(touch, &touch_latency, | 514 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 535 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 515 tracker()->OnFrameSwapped(touch_latency); |
| 536 tracker()->OnFrameSwapped(touch_latency, | 516 } |
| 537 is_running_navigation_hint_task); | 517 |
| 538 } | 518 // Rappor metrics. |
| 539 | 519 EXPECT_TRUE( |
| 540 // Rappor metrics. | 520 RapporSampleAssert("Event.Latency.ScrollUpdate.Touch." |
| 541 EXPECT_TRUE( | 521 "TimeToScrollUpdateSwapBegin2", |
| 542 RapporSampleAssert("Event.Latency.ScrollUpdate.Touch." | 522 2)); |
| 543 "TimeToScrollUpdateSwapBegin2", | 523 EXPECT_TRUE( |
| 544 2)); | 524 RapporSampleAssert("Event.Latency.ScrollBegin.Touch." |
| 545 EXPECT_TRUE( | 525 "TimeToScrollUpdateSwapBegin2", |
| 546 RapporSampleAssert("Event.Latency.ScrollBegin.Touch." | 526 0)); |
| 547 "TimeToScrollUpdateSwapBegin2", | 527 EXPECT_TRUE( |
| 548 0)); | 528 RapporSampleAssert("Event.Latency.ScrollBegin.Wheel." |
| 549 EXPECT_TRUE( | 529 "TimeToScrollUpdateSwapBegin2", |
| 550 RapporSampleAssert("Event.Latency.ScrollBegin.Wheel." | 530 0)); |
| 551 "TimeToScrollUpdateSwapBegin2", | 531 EXPECT_EQ(2, |
| 552 0)); | 532 test_browser_client_.getTestRapporService()->GetReportsCount()); |
| 553 EXPECT_EQ(2, | 533 |
| 554 test_browser_client_.getTestRapporService()->GetReportsCount()); | 534 // UMA histograms. |
| 555 | 535 EXPECT_TRUE(HistogramSizeEq( |
| 556 // UMA histograms. | 536 "Event.Latency.ScrollBegin.Touch.TimeToScrollUpdateSwapBegin2", 0)); |
| 557 EXPECT_TRUE(HistogramSizeEq( | 537 EXPECT_TRUE(HistogramSizeEq( |
| 558 "Event.Latency.ScrollBegin.Touch.TimeToScrollUpdateSwapBegin2", 0)); | 538 "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", 1)); |
| 559 EXPECT_TRUE(HistogramSizeEq( | 539 EXPECT_TRUE(HistogramSizeEq( |
| 560 "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", 1)); | 540 "Event.Latency.ScrollBegin.Touch.TimeToHandled2_Main", 0)); |
| 561 EXPECT_TRUE(HistogramSizeEq( | 541 EXPECT_TRUE(HistogramSizeEq( |
| 562 "Event.Latency.ScrollBegin.Touch.TimeToHandled2_Main", 0)); | 542 "Event.Latency.ScrollBegin.Touch.TimeToHandled2_Impl", 0)); |
| 563 EXPECT_TRUE(HistogramSizeEq( | 543 EXPECT_TRUE(HistogramSizeEq( |
| 564 "Event.Latency.ScrollBegin.Touch.TimeToHandled2_Impl", 0)); | 544 "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Main", 0)); |
| 565 EXPECT_TRUE(HistogramSizeEq( | 545 EXPECT_TRUE(HistogramSizeEq( |
| 566 "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Main", 0)); | 546 "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Impl", 0)); |
| 567 EXPECT_TRUE(HistogramSizeEq( | 547 EXPECT_TRUE( |
| 568 "Event.Latency.ScrollBegin.Touch.HandledToRendererSwap2_Impl", 0)); | 548 HistogramSizeEq("Event.Latency.ScrollBegin.Touch." |
| 569 EXPECT_TRUE( | 549 "RendererSwapToBrowserNotified2", |
| 570 HistogramSizeEq("Event.Latency.ScrollBegin.Touch." | 550 0)); |
| 571 "RendererSwapToBrowserNotified2", | 551 EXPECT_TRUE( |
| 572 0)); | 552 HistogramSizeEq("Event.Latency.ScrollBegin.Touch." |
| 573 EXPECT_TRUE( | 553 "BrowserNotifiedToBeforeGpuSwap2", |
| 574 HistogramSizeEq("Event.Latency.ScrollBegin.Touch." | 554 0)); |
| 575 "BrowserNotifiedToBeforeGpuSwap2", | 555 EXPECT_TRUE(HistogramSizeEq("Event.Latency.ScrollBegin.Touch.GpuSwap2", 0)); |
| 576 0)); | 556 |
| 577 EXPECT_TRUE( | 557 EXPECT_TRUE( |
| 578 HistogramSizeEq("Event.Latency.ScrollBegin.Touch.GpuSwap2", 0)); | 558 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Main", |
| 579 | 559 rendering_on_main ? 1 : 0)); |
| 580 EXPECT_TRUE(HistogramSizeEq( | 560 EXPECT_TRUE( |
| 581 "Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Main", | 561 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Impl", |
| 582 rendering_on_main ? 1 : 0)); | 562 rendering_on_main ? 0 : 1)); |
| 583 EXPECT_TRUE(HistogramSizeEq( | 563 EXPECT_TRUE(HistogramSizeEq( |
| 584 "Event.Latency.ScrollUpdate.Touch.TimeToHandled2_Impl", | 564 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Main", |
| 585 rendering_on_main ? 0 : 1)); | 565 rendering_on_main ? 1 : 0)); |
| 586 EXPECT_TRUE(HistogramSizeEq( | 566 EXPECT_TRUE(HistogramSizeEq( |
| 587 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Main", | 567 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", |
| 588 rendering_on_main ? 1 : 0)); | 568 rendering_on_main ? 0 : 1)); |
| 589 EXPECT_TRUE(HistogramSizeEq( | 569 EXPECT_TRUE(HistogramSizeEq( |
| 590 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", | 570 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", 1)); |
| 591 rendering_on_main ? 0 : 1)); | 571 EXPECT_TRUE(HistogramSizeEq( |
| 592 EXPECT_TRUE(HistogramSizeEq( | 572 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 1)); |
| 593 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", | 573 EXPECT_TRUE( |
| 594 1)); | 574 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 1)); |
| 595 EXPECT_TRUE(HistogramSizeEq( | |
| 596 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", | |
| 597 1)); | |
| 598 EXPECT_TRUE( | |
| 599 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 1)); | |
| 600 } | |
| 601 } | 575 } |
| 602 } | 576 } |
| 603 | 577 |
| 604 TEST_F(RenderWidgetHostLatencyTrackerTest, | 578 TEST_F(RenderWidgetHostLatencyTrackerTest, |
| 605 LatencyTerminatedOnAckIfRenderingNotScheduled) { | 579 LatencyTerminatedOnAckIfRenderingNotScheduled) { |
| 606 { | 580 { |
| 607 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollBegin( | 581 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollBegin( |
| 608 5.f, -5.f, blink::WebGestureDeviceTouchscreen); | 582 5.f, -5.f, blink::WebGestureDeviceTouchscreen); |
| 609 ui::LatencyInfo scroll_latency; | 583 ui::LatencyInfo scroll_latency; |
| 610 AddFakeComponents(*tracker(), &scroll_latency); | 584 AddFakeComponents(*tracker(), &scroll_latency); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 635 SyntheticWebTouchEvent touch; | 609 SyntheticWebTouchEvent touch; |
| 636 touch.PressPoint(0, 0); | 610 touch.PressPoint(0, 0); |
| 637 ui::LatencyInfo touch_latency; | 611 ui::LatencyInfo touch_latency; |
| 638 AddFakeComponents(*tracker(), &touch_latency); | 612 AddFakeComponents(*tracker(), &touch_latency); |
| 639 tracker()->OnInputEvent(touch, &touch_latency); | 613 tracker()->OnInputEvent(touch, &touch_latency); |
| 640 tracker()->OnInputEventAck(touch, &touch_latency, | 614 tracker()->OnInputEventAck(touch, &touch_latency, |
| 641 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 615 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| 642 EXPECT_TRUE(touch_latency.FindLatency( | 616 EXPECT_TRUE(touch_latency.FindLatency( |
| 643 ui::INPUT_EVENT_LATENCY_TERMINATED_NO_SWAP_COMPONENT, 0, nullptr)); | 617 ui::INPUT_EVENT_LATENCY_TERMINATED_NO_SWAP_COMPONENT, 0, nullptr)); |
| 644 EXPECT_TRUE(touch_latency.terminated()); | 618 EXPECT_TRUE(touch_latency.terminated()); |
| 645 tracker()->OnFrameSwapped(touch_latency, false); | 619 tracker()->OnFrameSwapped(touch_latency); |
| 646 } | 620 } |
| 647 | 621 |
| 648 { | 622 { |
| 649 auto mouse_move = SyntheticWebMouseEventBuilder::Build( | 623 auto mouse_move = SyntheticWebMouseEventBuilder::Build( |
| 650 blink::WebMouseEvent::MouseMove); | 624 blink::WebMouseEvent::MouseMove); |
| 651 ui::LatencyInfo mouse_latency; | 625 ui::LatencyInfo mouse_latency; |
| 652 AddFakeComponents(*tracker(), &mouse_latency); | 626 AddFakeComponents(*tracker(), &mouse_latency); |
| 653 tracker()->OnInputEvent(mouse_move, &mouse_latency); | 627 tracker()->OnInputEvent(mouse_move, &mouse_latency); |
| 654 tracker()->OnInputEventAck(mouse_move, &mouse_latency, | 628 tracker()->OnInputEventAck(mouse_move, &mouse_latency, |
| 655 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); | 629 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); |
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 986 "Event.Latency.BlockingTime.TouchEndDefaultPrevented"), | 960 "Event.Latency.BlockingTime.TouchEndDefaultPrevented"), |
| 987 ElementsAre(Bucket( | 961 ElementsAre(Bucket( |
| 988 touchend_timestamps_ms[2] - touchend_timestamps_ms[1], 1))); | 962 touchend_timestamps_ms[2] - touchend_timestamps_ms[1], 1))); |
| 989 EXPECT_THAT(histogram_tester().GetAllSamples( | 963 EXPECT_THAT(histogram_tester().GetAllSamples( |
| 990 "Event.Latency.BlockingTime.TouchEndDefaultAllowed"), | 964 "Event.Latency.BlockingTime.TouchEndDefaultAllowed"), |
| 991 ElementsAre(Bucket( | 965 ElementsAre(Bucket( |
| 992 touchend_timestamps_ms[2] - touchend_timestamps_ms[1], 1))); | 966 touchend_timestamps_ms[2] - touchend_timestamps_ms[1], 1))); |
| 993 } | 967 } |
| 994 | 968 |
| 995 } // namespace content | 969 } // namespace content |
| OLD | NEW |