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

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

Issue 2888153002: Add TimeToScrollUpdateSwapBegin2 to UKM (Closed)
Patch Set: Rename the test function Created 3 years, 6 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 "content/browser/renderer_host/input/render_widget_host_latency_tracker .h" 5 #include "content/browser/renderer_host/input/render_widget_host_latency_tracker .h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/histogram_functions.h" 10 #include "base/metrics/histogram_functions.h"
11 #include "base/metrics/histogram_macros.h" 11 #include "base/metrics/histogram_macros.h"
12 #include "build/build_config.h" 12 #include "build/build_config.h"
13 #include "components/rappor/public/rappor_utils.h" 13 #include "components/rappor/public/rappor_utils.h"
14 #include "components/ukm/public/ukm_entry_builder.h"
14 #include "content/browser/renderer_host/render_widget_host_delegate.h" 15 #include "content/browser/renderer_host/render_widget_host_delegate.h"
15 #include "content/public/browser/content_browser_client.h" 16 #include "content/public/browser/content_browser_client.h"
16 #include "content/public/common/content_client.h" 17 #include "content/public/common/content_client.h"
17 #include "ui/events/blink/web_input_event_traits.h" 18 #include "ui/events/blink/web_input_event_traits.h"
18 #include "ui/latency/latency_histogram_macros.h" 19 #include "ui/latency/latency_histogram_macros.h"
19 20
20 using blink::WebGestureEvent; 21 using blink::WebGestureEvent;
21 using blink::WebInputEvent; 22 using blink::WebInputEvent;
22 using blink::WebMouseEvent; 23 using blink::WebMouseEvent;
23 using blink::WebMouseWheelEvent; 24 using blink::WebMouseWheelEvent;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 new_components_key[i].second, 70 new_components_key[i].second,
70 new_components_value[i].sequence_number, 71 new_components_value[i].sequence_number,
71 new_components_value[i].event_time, 72 new_components_value[i].event_time,
72 new_components_value[i].event_count); 73 new_components_value[i].event_count);
73 } 74 }
74 } 75 }
75 76
76 } // namespace 77 } // namespace
77 78
78 RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker() 79 RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker()
79 : last_event_id_(0), 80 : ukm_source_id_(-1),
81 last_event_id_(0),
80 latency_component_id_(0), 82 latency_component_id_(0),
81 device_scale_factor_(1), 83 device_scale_factor_(1),
82 has_seen_first_gesture_scroll_update_(false), 84 has_seen_first_gesture_scroll_update_(false),
83 active_multi_finger_gesture_(false), 85 active_multi_finger_gesture_(false),
84 touch_start_default_prevented_(false), 86 touch_start_default_prevented_(false),
85 render_widget_host_delegate_(nullptr) {} 87 render_widget_host_delegate_(nullptr) {}
86 88
87 RenderWidgetHostLatencyTracker::~RenderWidgetHostLatencyTracker() {} 89 RenderWidgetHostLatencyTracker::~RenderWidgetHostLatencyTracker() {}
88 90
89 void RenderWidgetHostLatencyTracker::Initialize(int routing_id, 91 void RenderWidgetHostLatencyTracker::Initialize(int routing_id,
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 render_widget_host_delegate_->AddDomainInfoToRapporSample(sample.get()); 320 render_widget_host_delegate_->AddDomainInfoToRapporSample(sample.get());
319 sample->SetUInt64Field( 321 sample->SetUInt64Field(
320 "Latency", 322 "Latency",
321 (end_component.last_event_time - start_component.first_event_time) 323 (end_component.last_event_time - start_component.first_event_time)
322 .InMicroseconds(), 324 .InMicroseconds(),
323 rappor::NO_NOISE); 325 rappor::NO_NOISE);
324 rappor_service->RecordSample(name, std::move(sample)); 326 rappor_service->RecordSample(name, std::move(sample));
325 } 327 }
326 } 328 }
327 329
330 ukm::SourceId RenderWidgetHostLatencyTracker::GetUkmSourceId() {
331 ukm::UkmRecorder* ukm_recorder = ukm::UkmRecorder::Get();
332 if (ukm_recorder && ukm_source_id_ == -1) {
333 ukm_source_id_ = ukm_recorder->GetNewSourceID();
334 render_widget_host_delegate_->UpdateUrlForUkmSource(ukm_recorder,
335 ukm_source_id_);
336 }
337 return ukm_source_id_;
338 }
339
340 void RenderWidgetHostLatencyTracker::ReportUkmScrollLatency(
341 const std::string& event_name,
342 const std::string& metric_name,
343 const LatencyInfo::LatencyComponent& start_component,
344 const LatencyInfo::LatencyComponent& end_component) {
345 CONFIRM_VALID_TIMING(start_component, end_component)
346
347 ukm::SourceId ukm_source_id = GetUkmSourceId();
348 ukm::UkmRecorder* ukm_recorder = ukm::UkmRecorder::Get();
349
350 if (ukm_source_id == -1 || !ukm_recorder)
351 return;
352
353 std::unique_ptr<ukm::UkmEntryBuilder> builder =
354 ukm_recorder->GetEntryBuilder(ukm_source_id, event_name.c_str());
355 builder->AddMetric(metric_name.c_str(), (end_component.last_event_time -
356 start_component.first_event_time)
357 .InMicroseconds());
358 }
328 } // namespace content 359 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698