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

Unified Diff: content/renderer/render_widget.cc

Issue 11591006: Track input latency with UMA stats (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added per event type histograms Created 7 years, 11 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/renderer/render_widget.cc
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 6e38df8a0b6014a1ff1af08e59e25169cdc0b91d..ff0cc11f13f6f501e3e816fee1b725fa9cf6dd18 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -73,6 +73,48 @@ using WebKit::WebTouchEvent;
using WebKit::WebVector;
using WebKit::WebWidget;
+namespace {
+const char* GetEventName(WebInputEvent::Type type) {
+#define CASE_TYPE(t) case WebInputEvent::t: return #t
+ switch(type) {
+ CASE_TYPE(Undefined);
+ CASE_TYPE(MouseDown);
+ CASE_TYPE(MouseUp);
+ CASE_TYPE(MouseMove);
+ CASE_TYPE(MouseEnter);
+ CASE_TYPE(MouseLeave);
+ CASE_TYPE(ContextMenu);
+ CASE_TYPE(MouseWheel);
+ CASE_TYPE(RawKeyDown);
+ CASE_TYPE(KeyDown);
+ CASE_TYPE(KeyUp);
+ CASE_TYPE(Char);
+ CASE_TYPE(GestureScrollBegin);
+ CASE_TYPE(GestureScrollEnd);
+ CASE_TYPE(GestureScrollUpdate);
+ CASE_TYPE(GestureFlingStart);
+ CASE_TYPE(GestureFlingCancel);
+ CASE_TYPE(GestureTap);
+ CASE_TYPE(GestureTapDown);
+ CASE_TYPE(GestureTapCancel);
+ CASE_TYPE(GestureDoubleTap);
+ CASE_TYPE(GestureTwoFingerTap);
+ CASE_TYPE(GestureLongPress);
+ CASE_TYPE(GestureLongTap);
+ CASE_TYPE(GesturePinchBegin);
+ CASE_TYPE(GesturePinchEnd);
+ CASE_TYPE(GesturePinchUpdate);
+ CASE_TYPE(TouchStart);
+ CASE_TYPE(TouchMove);
+ CASE_TYPE(TouchEnd);
+ CASE_TYPE(TouchCancel);
+ // Don't include default, so that we get an error when new type is added.
+ }
+#undef CASE_TYPE
+ NOTREACHED();
+ return "Undefined";
+}
+}
namespace content {
RenderWidget::RenderWidget(WebKit::WebPopupType popup_type,
@@ -555,6 +597,25 @@ void RenderWidget::OnHandleInputEvent(const WebKit::WebInputEvent* input_event,
return;
}
+ base::TimeDelta now = base::TimeDelta::FromInternalValue(
+ base::TimeTicks::Now().ToInternalValue());
+
+ int64 delta = static_cast<int64>(
+ (now.InSecondsF() - input_event->timeStampSeconds) *
+ base::Time::kMicrosecondsPerSecond);
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.Renderer", delta, 0, 1000000, 100);
+ std::string name_for_event =
+ base::StringPrintf("Event.Latency.Renderer.%s",
+ GetEventName(input_event->type));
+ base::Histogram* counter_for_type =
+ base::Histogram::FactoryTimeGet(
+ name_for_event,
+ base::TimeDelta::FromMilliseconds(0),
+ base::TimeDelta::FromMilliseconds(1000000),
+ 100,
+ base::Histogram::kUmaTargetedHistogramFlag);
+ counter_for_type->AddTime(base::TimeDelta::FromMicroseconds(delta));
+
bool prevent_default = false;
if (WebInputEvent::isMouseEventType(input_event->type)) {
const WebMouseEvent& mouse_event =

Powered by Google App Engine
This is Rietveld 408576698