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

Unified Diff: content/browser/renderer_host/input/render_widget_host_latency_tracker.cc

Issue 2756893002: Add Keyboard Latency UMA Metrics. (Closed)
Patch Set: Restrict to RawKeyDown and Char events on Android & Mac Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
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 2e070583d62ca7453f9c59c10a9a0067df1083aa..26f0c1e5e751e92686dbf821056e85c8df926dc2 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
@@ -31,7 +31,9 @@ std::string WebInputEventTypeToInputModalityString(WebInputEvent::Type type) {
if (type == blink::WebInputEvent::kMouseWheel) {
return "Wheel";
} else if (WebInputEvent::IsKeyboardEventType(type)) {
- return "Key";
+ // We should only be reporting latency for key presses.
+ DCHECK(type == WebInputEvent::kRawKeyDown || type == WebInputEvent::kChar);
+ return "KeyPress";
} else if (WebInputEvent::IsMouseEventType(type)) {
return "Mouse";
} else if (WebInputEvent::IsTouchEventType(type)) {
@@ -102,8 +104,8 @@ void RenderWidgetHostLatencyTracker::ComputeInputLatencyHistograms(
if (latency.coalesced())
return;
- if (type != blink::WebInputEvent::kMouseWheel &&
- !WebInputEvent::IsTouchEventType(type)) {
+ if (latency.source_event_type() == ui::SourceEventType::UNKNOWN ||
+ latency.source_event_type() == ui::SourceEventType::OTHER) {
return;
}
@@ -124,24 +126,33 @@ void RenderWidgetHostLatencyTracker::ComputeInputLatencyHistograms(
base::TimeDelta ui_delta =
rwh_component.last_event_time - ui_component.first_event_time;
- if (type == blink::WebInputEvent::kMouseWheel) {
+ if (latency.source_event_type() == ui::SourceEventType::WHEEL) {
UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.Browser.WheelUI",
ui_delta.InMicroseconds(), 1, 20000, 100);
- } else {
- DCHECK(WebInputEvent::IsTouchEventType(type));
+ } else if (latency.source_event_type() == ui::SourceEventType::TOUCH) {
UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.Browser.TouchUI",
ui_delta.InMicroseconds(), 1, 20000, 100);
+ } else if (latency.source_event_type() == ui::SourceEventType::KEY_PRESS) {
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.Browser.KeyPressUI",
+ ui_delta.InMicroseconds(), 1, 20000, 50);
+ } else {
+ // We should only report these histograms for wheel, touch and keyboard.
+ NOTREACHED();
}
}
- // Both tap and scroll gestures depend on the disposition of the touch start
- // and the current touch. For touch start, touch_start_default_prevented_ ==
- // (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED).
+ // Touchscreen tap and scroll gestures depend on the disposition of the touch
+ // start and the current touch. For touch start,
+ // touch_start_default_prevented_ == (ack_result ==
+ // INPUT_EVENT_ACK_STATE_CONSUMED).
bool action_prevented = touch_start_default_prevented_ ||
ack_result == INPUT_EVENT_ACK_STATE_CONSUMED;
std::string event_name = WebInputEvent::GetName(type);
+ if (latency.source_event_type() == ui::KEY_PRESS)
+ event_name = "KeyPress";
+
std::string default_action_status =
action_prevented ? "DefaultPrevented" : "DefaultAllowed";
@@ -188,6 +199,11 @@ void RenderWidgetHostLatencyTracker::OnInputEvent(
active_multi_finger_gesture_ = touch_event.touches_length != 1;
}
+ if (latency->source_event_type() == ui::KEY_PRESS) {
+ DCHECK(event.GetType() == WebInputEvent::kChar ||
+ event.GetType() == WebInputEvent::kRawKeyDown);
+ }
+
if (latency->FindLatency(ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
latency_component_id_, NULL)) {
return;

Powered by Google App Engine
This is Rietveld 408576698