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..a4ef557261591bf2ba8a70a0f4f2c8fd74979491 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 "content/browser/renderer_host/render_widget_host_impl.h" |
+#include "components/rappor/public/rappor_utils.h" |
+#include "content/browser/renderer_host/render_widget_host_delegate.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( |
+ RenderWidgetHostDelegate* render_widget_host_delegate, |
const ui::LatencyInfo::LatencyComponent& gpu_swap_begin_component, |
const ui::LatencyInfo::LatencyComponent& gpu_swap_end_component, |
int64_t latency_component_id, |
@@ -279,6 +283,22 @@ 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_delegate) { |
+ std::unique_ptr<rappor::Sample> sample = |
+ rappor_service->CreateSample(rappor::UMA_RAPPOR_TYPE); |
+ render_widget_host_delegate->AddDomainInfoToRapporSample(sample.get()); |
+ sample->SetUInt64Field("Latency", |
+ (gpu_swap_begin_component.last_event_time - |
+ original_component.first_event_time) |
+ .InMicroseconds(), |
+ rappor::NO_NOISE); |
+ rappor_service->RecordSample( |
+ "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", |
+ std::move(sample)); |
+ } |
} |
} else { |
// No original component found. |
@@ -372,7 +392,8 @@ RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker() |
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_delegate_(nullptr) {} |
RenderWidgetHostLatencyTracker::~RenderWidgetHostLatencyTracker() {} |
@@ -711,8 +732,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_delegate_, gpu_swap_begin_component, |
+ gpu_swap_end_component, latency_component_id_, latency, |
source_event_type == ui::SourceEventType::WHEEL ? "Wheel" : "Touch"); |
} |
@@ -729,4 +750,9 @@ void RenderWidgetHostLatencyTracker::OnFrameSwapped( |
} |
} |
+void RenderWidgetHostLatencyTracker::SetDelegate( |
+ RenderWidgetHostDelegate* delegate) { |
+ render_widget_host_delegate_ = delegate; |
+} |
+ |
} // namespace content |