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 3d8de093dfb1a32362ef5bc0182aa0073344d8fa..4248999f60bd105c0e1f8249c3c2de3ae6b4a019 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 |
| @@ -9,7 +9,10 @@ |
| #include "base/logging.h" |
| #include "base/metrics/histogram_macros.h" |
| #include "build/build_config.h" |
| +#include "components/rappor/public/rappor_utils.h" |
| #include "content/browser/renderer_host/render_widget_host_impl.h" |
| +#include "content/public/browser/content_browser_client.h" |
| +#include "content/public/common/content_client.h" |
| #include "ui/events/blink/web_input_event_traits.h" |
| using blink::WebGestureEvent; |
| @@ -238,6 +241,7 @@ void ComputeScrollLatencyHistograms( |
| } |
| void ComputeTouchAndWheelScrollLatencyHistograms( |
| + RenderWidgetHostImpl* render_widget_host_impl, |
| const ui::LatencyInfo::LatencyComponent& gpu_swap_begin_component, |
| const ui::LatencyInfo::LatencyComponent& gpu_swap_end_component, |
| int64_t latency_component_id, |
| @@ -279,6 +283,23 @@ void ComputeTouchAndWheelScrollLatencyHistograms( |
| "Event.Latency.ScrollUpdate." + event_type_name + |
| ".TimeToScrollUpdateSwapBegin2", |
| original_component, gpu_swap_begin_component); |
| + |
| + rappor::RapporService* rappor_service = |
| + GetContentClient()->browser()->GetRapporService(); |
| + if (!rappor_service || !render_widget_host_impl->delegate()) |
| + return; |
| + std::unique_ptr<rappor::Sample> sample = |
| + rappor_service->CreateSample(rappor::UMA_RAPPOR_TYPE); |
| + render_widget_host_impl->delegate()->AddDomainInfoToRapporSample( |
| + sample.get()); |
| + sample->SetUInt64Field("Latency", |
| + (gpu_swap_begin_component.last_event_time - |
| + original_component.first_event_time) |
| + .InMicroseconds(), |
| + rappor::NO_NOISE); |
|
ncarter (slow)
2016/12/08 17:57:27
Regarding testing, the simplest thing to do would
|
| + rappor_service->RecordSample( |
| + "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", |
|
tdresser
2016/12/08 18:00:17
Should we add Event.Latency.ScrollBegin.Touch.Time
Navid Zolghadr
2016/12/09 19:13:28
Let me work on adding that and some refactoring be
|
| + std::move(sample)); |
| } |
| } else { |
| // No original component found. |
| @@ -366,13 +387,15 @@ void AddLatencyInfoComponentIds(LatencyInfo* latency, |
| } // namespace |
| -RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker() |
| +RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker( |
| + RenderWidgetHostImpl* render_widget_host_impl) |
| : last_event_id_(0), |
| latency_component_id_(0), |
| device_scale_factor_(1), |
| has_seen_first_gesture_scroll_update_(false), |
| multi_finger_gesture_(false), |
| - touch_start_default_prevented_(false) {} |
| + touch_start_default_prevented_(false), |
| + render_widget_host_impl(render_widget_host_impl) {} |
| RenderWidgetHostLatencyTracker::~RenderWidgetHostLatencyTracker() {} |
| @@ -711,8 +734,8 @@ void RenderWidgetHostLatencyTracker::OnFrameSwapped( |
| if (source_event_type == ui::SourceEventType::WHEEL || |
| source_event_type == ui::SourceEventType::TOUCH) { |
| ComputeTouchAndWheelScrollLatencyHistograms( |
| - gpu_swap_begin_component, gpu_swap_end_component, latency_component_id_, |
| - latency, |
| + render_widget_host_impl, gpu_swap_begin_component, |
| + gpu_swap_end_component, latency_component_id_, latency, |
| source_event_type == ui::SourceEventType::WHEEL ? "Wheel" : "Touch"); |
| } |