Chromium Code Reviews| Index: content/browser/renderer_host/input/render_widget_host_latency_tracker.cc |
| diff --git a/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc b/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc |
| index 17b396efc59e402a93ec18828278032bd22dc3ba..ee595b33c58912e88fc532dd10828f9dae014266 100644 |
| --- a/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc |
| +++ b/content/browser/renderer_host/input/render_widget_host_latency_tracker.cc |
| @@ -127,12 +127,70 @@ void ComputeScrollLatencyHistograms( |
| original_component, gpu_swap_begin_component); |
| } |
| } |
| + |
| + // TODO(miletus): Add validation for making sure the following components |
| + // are present and their event times are legit. |
|
tdresser
2016/08/23 13:57:00
miletus doesn't work here anymore.
I assume this
lanwei
2016/08/24 03:08:28
Done.
|
| + LatencyInfo::LatencyComponent rendering_scheduled_component; |
| + bool rendering_scheduled_on_main = latency.FindLatency( |
| + ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN_COMPONENT, 0, |
| + &rendering_scheduled_component); |
| + |
| + if (!rendering_scheduled_on_main) { |
| + if (!latency.FindLatency( |
| + ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL_COMPONENT, 0, |
| + &rendering_scheduled_component)) |
| + goto allScrollUpdate; |
|
tdresser
2016/08/23 13:57:00
Rewrite without using goto.
It's barely mentioned
lanwei
2016/08/24 03:08:28
Done.
|
| + } |
| + |
| + if (rendering_scheduled_on_main) { |
| + UMA_HISTOGRAM_SCROLL_LATENCY_LONG( |
| + "Event.Latency.FirstScrollUpdate.FirstTouchToHandled_Main", |
| + original_component, rendering_scheduled_component); |
| + } else { |
| + UMA_HISTOGRAM_SCROLL_LATENCY_LONG( |
| + "Event.Latency.FirstScrollUpdate.FirstTouchToHandled_Impl", |
| + original_component, rendering_scheduled_component); |
| + } |
| + |
| + LatencyInfo::LatencyComponent renderer_swap_component; |
| + if (!latency.FindLatency(ui::INPUT_EVENT_LATENCY_RENDERER_SWAP_COMPONENT, 0, |
| + &renderer_swap_component)) |
| + goto allScrollUpdate; |
| + |
| + if (rendering_scheduled_on_main) { |
| + UMA_HISTOGRAM_SCROLL_LATENCY_LONG( |
| + "Event.Latency.FirstScrollUpdate.HandledToRendererSwap_Main", |
| + rendering_scheduled_component, renderer_swap_component); |
| + } else { |
| + UMA_HISTOGRAM_SCROLL_LATENCY_LONG( |
| + "Event.Latency.FirstScrollUpdate.HandledToRendererSwap_Impl", |
| + rendering_scheduled_component, renderer_swap_component); |
| + } |
| + |
| + LatencyInfo::LatencyComponent browser_received_swap_component; |
| + if (!latency.FindLatency( |
| + ui::INPUT_EVENT_BROWSER_RECEIVED_RENDERER_SWAP_COMPONENT, 0, |
| + &browser_received_swap_component)) |
| + goto allScrollUpdate; |
| + |
| + UMA_HISTOGRAM_SCROLL_LATENCY_SHORT( |
| + "Event.Latency.FirstScrollUpdate.RendererSwapToBrowserNotified", |
| + renderer_swap_component, browser_received_swap_component); |
| + |
| + UMA_HISTOGRAM_SCROLL_LATENCY_LONG( |
| + "Event.Latency.FirstScrollUpdate.BrowserNotifiedToBeforeGpuSwap", |
| + browser_received_swap_component, gpu_swap_begin_component); |
| + |
| + UMA_HISTOGRAM_SCROLL_LATENCY_SHORT( |
| + "Event.Latency.FirstScrollUpdate.GpuSwap", gpu_swap_begin_component, |
| + gpu_swap_end_component); |
| } else if (!latency.FindLatency( |
| ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT, |
| latency_component_id, &original_component)) { |
| return; |
| } |
| +allScrollUpdate: |
| // This UMA metric tracks the time from when the original touch event is |
| // created to when the scroll gesture results in final frame swap. |
| for (size_t i = 0; i < original_component.event_count; i++) { |
| @@ -158,7 +216,6 @@ void ComputeScrollLatencyHistograms( |
| bool rendering_scheduled_on_main = latency.FindLatency( |
| ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN_COMPONENT, |
| 0, &rendering_scheduled_component); |
| - |
| if (!rendering_scheduled_on_main) { |
| if (!latency.FindLatency( |
| ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL_COMPONENT, |