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 a8d3ac23f52d9612d76f3b27e9185f8c9c04e02b..9334428d5f997700f2d87875874e0993a5bda544 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,6 +9,7 @@ |
| #include "base/logging.h" |
| #include "base/metrics/histogram_macros.h" |
| #include "build/build_config.h" |
| +#include "components/rappor/rappor_service.h" |
| #include "content/browser/renderer_host/render_widget_host_impl.h" |
| #include "ui/events/blink/web_input_event_traits.h" |
| @@ -237,7 +238,24 @@ void ComputeScrollLatencyHistograms( |
| gpu_swap_end_component); |
| } |
| +uint64_t RapporHistogramBucketIndex(int64_t ms) { |
| + if (ms < 10) |
| + return 0; |
| + if (ms < 20) |
| + return 1; |
| + if (ms < 30) |
| + return 2; |
| + if (ms < 40) |
| + return 3; |
| + if (ms < 50) |
| + return 4; |
| + if (ms < 60) |
| + return 5; |
|
ncarter (slow)
2016/12/01 23:33:46
What about 6?
Navid Zolghadr
2016/12/08 17:37:29
This is now removed as I reported it without any b
|
| + return 7; |
| +} |
| + |
| 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, |
| @@ -269,6 +287,27 @@ void ComputeTouchAndWheelScrollLatencyHistograms( |
| "Event.Latency.ScrollUpdate." + event_type_name + |
| ".TimeToScrollUpdateSwapBegin2", |
| original_component, gpu_swap_begin_component); |
| + |
| + if (!render_widget_host_impl->delegate()) |
| + return; |
| + rappor::RapporService* rappor_service = |
| + render_widget_host_impl->delegate()->getRapporService(); |
| + if (!rappor_service) |
| + return; |
| + std::unique_ptr<rappor::Sample> sample = |
| + rappor_service->CreateSample(rappor::UMA_RAPPOR_TYPE); |
| + sample->SetStringField( |
| + "Domain", |
| + render_widget_host_impl->delegate()->getRapporCommittedUrl()); |
|
Navid Zolghadr
2016/11/10 21:49:19
I was going to create some helper methods in my ne
Steven Holte
2016/11/10 22:49:45
It seems like this value is non-PII, so it should
Navid Zolghadr
2016/12/08 17:37:29
Done. I didn't find anywhere else that this is use
|
| + uint64_t bucket_index = |
| + RapporHistogramBucketIndex((gpu_swap_begin_component.last_event_time - |
| + original_component.first_event_time) |
| + .InMicroseconds()); |
| + sample->SetFlagsField("Bucket", uint64_t(1) << bucket_index, 7); |
| + rappor_service->RecordSampleObj( |
| + "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2." |
| + "Rappor", |
| + std::move(sample)); |
| } |
| } else { |
| // No original component found. |
| @@ -356,13 +395,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() {} |
| @@ -701,8 +742,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"); |
| } |