Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc

Issue 2776933004: Revert "Track input latency while starting a ServiceWorker for a navigation hint." (Closed)
Patch Set: rebase and fix indent Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698