| Index: ui/base/events/event.cc
|
| diff --git a/ui/base/events/event.cc b/ui/base/events/event.cc
|
| index e24c1761aba0f6a5c15b85d1114d5f961d1abecd..e999f3334375acdb3ea16b1a62e598476e693555 100644
|
| --- a/ui/base/events/event.cc
|
| +++ b/ui/base/events/event.cc
|
| @@ -11,6 +11,8 @@
|
| #include <cmath>
|
| #include <cstring>
|
|
|
| +#include "base/metrics/histogram.h"
|
| +#include "base/stringprintf.h"
|
| #include "ui/base/events/event_utils.h"
|
| #include "ui/base/keycodes/keyboard_code_conversion.h"
|
| #include "ui/gfx/point3_f.h"
|
| @@ -53,47 +55,50 @@ gfx::Point CalibratePoint(const gfx::Point& point,
|
|
|
| std::string EventTypeName(ui::EventType type) {
|
| #define RETURN_IF_TYPE(t) if (type == ui::t) return #t
|
| - RETURN_IF_TYPE(ET_UNKNOWN);
|
| - RETURN_IF_TYPE(ET_MOUSE_PRESSED);
|
| - RETURN_IF_TYPE(ET_MOUSE_DRAGGED);
|
| - RETURN_IF_TYPE(ET_MOUSE_RELEASED);
|
| - RETURN_IF_TYPE(ET_MOUSE_MOVED);
|
| - RETURN_IF_TYPE(ET_MOUSE_ENTERED);
|
| - RETURN_IF_TYPE(ET_MOUSE_EXITED);
|
| - RETURN_IF_TYPE(ET_KEY_PRESSED);
|
| - RETURN_IF_TYPE(ET_KEY_RELEASED);
|
| - RETURN_IF_TYPE(ET_MOUSEWHEEL);
|
| - RETURN_IF_TYPE(ET_MOUSE_CAPTURE_CHANGED);
|
| - RETURN_IF_TYPE(ET_TOUCH_RELEASED);
|
| - RETURN_IF_TYPE(ET_TOUCH_PRESSED);
|
| - RETURN_IF_TYPE(ET_TOUCH_MOVED);
|
| - RETURN_IF_TYPE(ET_TOUCH_STATIONARY);
|
| - RETURN_IF_TYPE(ET_TOUCH_CANCELLED);
|
| - RETURN_IF_TYPE(ET_DROP_TARGET_EVENT);
|
| - RETURN_IF_TYPE(ET_TRANSLATED_KEY_PRESS);
|
| - RETURN_IF_TYPE(ET_TRANSLATED_KEY_RELEASE);
|
| -
|
| - RETURN_IF_TYPE(ET_GESTURE_SCROLL_BEGIN);
|
| - RETURN_IF_TYPE(ET_GESTURE_SCROLL_END);
|
| - RETURN_IF_TYPE(ET_GESTURE_SCROLL_UPDATE);
|
| - RETURN_IF_TYPE(ET_GESTURE_TAP);
|
| - RETURN_IF_TYPE(ET_GESTURE_TAP_DOWN);
|
| - RETURN_IF_TYPE(ET_GESTURE_TAP_CANCEL);
|
| - RETURN_IF_TYPE(ET_GESTURE_BEGIN);
|
| - RETURN_IF_TYPE(ET_GESTURE_END);
|
| - RETURN_IF_TYPE(ET_GESTURE_DOUBLE_TAP);
|
| - RETURN_IF_TYPE(ET_GESTURE_TWO_FINGER_TAP);
|
| - RETURN_IF_TYPE(ET_GESTURE_PINCH_BEGIN);
|
| - RETURN_IF_TYPE(ET_GESTURE_PINCH_END);
|
| - RETURN_IF_TYPE(ET_GESTURE_PINCH_UPDATE);
|
| - RETURN_IF_TYPE(ET_GESTURE_LONG_PRESS);
|
| - RETURN_IF_TYPE(ET_GESTURE_LONG_TAP);
|
| - RETURN_IF_TYPE(ET_GESTURE_MULTIFINGER_SWIPE);
|
| -
|
| - RETURN_IF_TYPE(ET_SCROLL);
|
| - RETURN_IF_TYPE(ET_SCROLL_FLING_START);
|
| - RETURN_IF_TYPE(ET_SCROLL_FLING_CANCEL);
|
| -#undef RETURN_IF_TYPE
|
| +#define CASE_TYPE(t) case ui::t: return #t
|
| + switch (type) {
|
| + CASE_TYPE(ET_UNKNOWN);
|
| + CASE_TYPE(ET_MOUSE_PRESSED);
|
| + CASE_TYPE(ET_MOUSE_DRAGGED);
|
| + CASE_TYPE(ET_MOUSE_RELEASED);
|
| + CASE_TYPE(ET_MOUSE_MOVED);
|
| + CASE_TYPE(ET_MOUSE_ENTERED);
|
| + CASE_TYPE(ET_MOUSE_EXITED);
|
| + CASE_TYPE(ET_KEY_PRESSED);
|
| + CASE_TYPE(ET_KEY_RELEASED);
|
| + CASE_TYPE(ET_MOUSEWHEEL);
|
| + CASE_TYPE(ET_MOUSE_CAPTURE_CHANGED);
|
| + CASE_TYPE(ET_TOUCH_RELEASED);
|
| + CASE_TYPE(ET_TOUCH_PRESSED);
|
| + CASE_TYPE(ET_TOUCH_MOVED);
|
| + CASE_TYPE(ET_TOUCH_STATIONARY);
|
| + CASE_TYPE(ET_TOUCH_CANCELLED);
|
| + CASE_TYPE(ET_DROP_TARGET_EVENT);
|
| + CASE_TYPE(ET_TRANSLATED_KEY_PRESS);
|
| + CASE_TYPE(ET_TRANSLATED_KEY_RELEASE);
|
| + CASE_TYPE(ET_GESTURE_SCROLL_BEGIN);
|
| + CASE_TYPE(ET_GESTURE_SCROLL_END);
|
| + CASE_TYPE(ET_GESTURE_SCROLL_UPDATE);
|
| + CASE_TYPE(ET_GESTURE_TAP);
|
| + CASE_TYPE(ET_GESTURE_TAP_DOWN);
|
| + CASE_TYPE(ET_GESTURE_TAP_CANCEL);
|
| + CASE_TYPE(ET_GESTURE_BEGIN);
|
| + CASE_TYPE(ET_GESTURE_END);
|
| + CASE_TYPE(ET_GESTURE_DOUBLE_TAP);
|
| + CASE_TYPE(ET_GESTURE_TWO_FINGER_TAP);
|
| + CASE_TYPE(ET_GESTURE_PINCH_BEGIN);
|
| + CASE_TYPE(ET_GESTURE_PINCH_END);
|
| + CASE_TYPE(ET_GESTURE_PINCH_UPDATE);
|
| + CASE_TYPE(ET_GESTURE_LONG_PRESS);
|
| + CASE_TYPE(ET_GESTURE_LONG_TAP);
|
| + CASE_TYPE(ET_GESTURE_MULTIFINGER_SWIPE);
|
| + CASE_TYPE(ET_SCROLL);
|
| + CASE_TYPE(ET_SCROLL_FLING_START);
|
| + CASE_TYPE(ET_SCROLL_FLING_CANCEL);
|
| + case ui::ET_LAST: NOTREACHED(); return std::string();
|
| + // Don't include default, so that we get an error when new type is added.
|
| + }
|
| +#undef CASE_TYPE
|
|
|
| NOTREACHED();
|
| return std::string();
|
| @@ -162,8 +167,21 @@ Event::Event(const base::NativeEvent& native_event,
|
| target_(NULL),
|
| phase_(EP_PREDISPATCH),
|
| result_(ER_UNHANDLED) {
|
| + base::TimeDelta delta = ui::EventTimeForNow() - time_stamp_;
|
| if (type_ < ET_LAST)
|
| name_ = EventTypeName(type_);
|
| + UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.Browser",
|
| + delta.InMicroseconds(), 0, 1000000, 100);
|
| + std::string name_for_event =
|
| + base::StringPrintf("Event.Latency.Browser.%s", name_.c_str());
|
| + 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(delta);
|
| InitWithNativeEvent(native_event);
|
| }
|
|
|
| @@ -253,8 +271,11 @@ MouseEvent::MouseEvent(EventType type,
|
| const gfx::Point& location,
|
| const gfx::Point& root_location,
|
| int flags)
|
| - : LocatedEvent(type, location, root_location,
|
| - base::Time::NowFromSystemTime() - base::Time(), flags),
|
| + : LocatedEvent(type,
|
| + location,
|
| + root_location,
|
| + ui::EventTimeForNow(),
|
| + flags),
|
| changed_button_flags_(0) {
|
| if (this->type() == ET_MOUSE_MOVED && IsAnyButton())
|
| SetType(ET_MOUSE_DRAGGED);
|
| @@ -455,7 +476,7 @@ KeyEvent::KeyEvent(EventType type,
|
| KeyboardCode key_code,
|
| int flags,
|
| bool is_char)
|
| - : Event(type, base::Time::NowFromSystemTime() - base::Time(), flags),
|
| + : Event(type, EventTimeForNow(), flags),
|
| key_code_(key_code),
|
| is_char_(is_char),
|
| character_(GetCharacterFromKeyCode(key_code, flags)),
|
| @@ -579,8 +600,11 @@ DropTargetEvent::DropTargetEvent(const OSExchangeData& data,
|
| const gfx::Point& location,
|
| const gfx::Point& root_location,
|
| int source_operations)
|
| - : LocatedEvent(ET_DROP_TARGET_EVENT, location, root_location,
|
| - base::Time::NowFromSystemTime() - base::Time(), 0),
|
| + : LocatedEvent(ET_DROP_TARGET_EVENT,
|
| + location,
|
| + root_location,
|
| + ui::EventTimeForNow(),
|
| + 0),
|
| data_(data),
|
| source_operations_(source_operations) {
|
| }
|
|
|