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

Unified Diff: ui/events/event.cc

Issue 2317253005: SourceEventType added to LatencyInfo (Closed)
Patch Set: Added a fake return to the end of EventTypeToLatencySourceEventType, for compilers that don't know … Created 4 years, 3 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
« no previous file with comments | « ui/events/blink/web_input_event_traits.cc ('k') | ui/events/event_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/event.cc
diff --git a/ui/events/event.cc b/ui/events/event.cc
index 6d2df8d8f7224bcee06a4ef01f79a8fc49f083bd..80692240abf0461372947db6f2f61361d8e57fc6 100644
--- a/ui/events/event.cc
+++ b/ui/events/event.cc
@@ -139,6 +139,74 @@ std::string EventTypeName(ui::EventType type) {
return std::string();
}
+ui::SourceEventType EventTypeToLatencySourceEventType(ui::EventType type) {
+ switch (type) {
+ case ui::ET_UNKNOWN:
+ // SourceEventType for PointerEvents/GestureEvents can be either TOUCH or
+ // WHEEL. The proper value is assigned in the constructors.
+ case ui::ET_POINTER_DOWN:
+ case ui::ET_POINTER_MOVED:
+ case ui::ET_POINTER_UP:
+ case ui::ET_POINTER_CANCELLED:
+ case ui::ET_POINTER_ENTERED:
+ case ui::ET_POINTER_EXITED:
+ case ui::ET_POINTER_CAPTURE_CHANGED:
+ case ui::ET_GESTURE_SCROLL_BEGIN:
+ case ui::ET_GESTURE_SCROLL_END:
+ case ui::ET_GESTURE_SCROLL_UPDATE:
+ case ui::ET_GESTURE_TAP:
+ case ui::ET_GESTURE_TAP_DOWN:
+ case ui::ET_GESTURE_TAP_CANCEL:
+ case ui::ET_GESTURE_TAP_UNCONFIRMED:
+ case ui::ET_GESTURE_DOUBLE_TAP:
+ case ui::ET_GESTURE_BEGIN:
+ case ui::ET_GESTURE_END:
+ case ui::ET_GESTURE_TWO_FINGER_TAP:
+ case ui::ET_GESTURE_PINCH_BEGIN:
+ case ui::ET_GESTURE_PINCH_END:
+ case ui::ET_GESTURE_PINCH_UPDATE:
+ case ui::ET_GESTURE_LONG_PRESS:
+ case ui::ET_GESTURE_LONG_TAP:
+ case ui::ET_GESTURE_SWIPE:
+ case ui::ET_GESTURE_SHOW_PRESS:
+ // Flings can be GestureEvents too.
+ case ui::ET_SCROLL_FLING_START:
+ case ui::ET_SCROLL_FLING_CANCEL:
+ return ui::SourceEventType::UNKNOWN;
+
+ case ui::ET_MOUSE_PRESSED:
+ case ui::ET_MOUSE_DRAGGED:
+ case ui::ET_MOUSE_RELEASED:
+ case ui::ET_MOUSE_MOVED:
+ case ui::ET_MOUSE_ENTERED:
+ case ui::ET_MOUSE_EXITED:
+ case ui::ET_KEY_PRESSED:
+ case ui::ET_KEY_RELEASED:
+ case ui::ET_MOUSE_CAPTURE_CHANGED:
+ case ui::ET_DROP_TARGET_EVENT:
+ case ui::ET_CANCEL_MODE:
+ case ui::ET_UMA_DATA:
+ return ui::SourceEventType::OTHER;
+
+ case ui::ET_TOUCH_RELEASED:
+ case ui::ET_TOUCH_PRESSED:
+ case ui::ET_TOUCH_MOVED:
+ case ui::ET_TOUCH_CANCELLED:
+ return ui::SourceEventType::TOUCH;
+
+ case ui::ET_MOUSEWHEEL:
+ case ui::ET_POINTER_WHEEL_CHANGED:
+ case ui::ET_SCROLL:
+ return ui::SourceEventType::WHEEL;
+
+ case ui::ET_LAST:
+ NOTREACHED();
+ return ui::SourceEventType::UNKNOWN;
+ }
+ NOTREACHED();
+ return ui::SourceEventType::UNKNOWN;
+}
+
bool IsX11SendEventTrue(const base::NativeEvent& event) {
#if defined(USE_X11)
return event && event->xany.send_event;
@@ -333,8 +401,10 @@ Event::Event(EventType type, base::TimeTicks time_stamp, int flags)
phase_(EP_PREDISPATCH),
result_(ER_UNHANDLED),
source_device_id_(ED_UNKNOWN_DEVICE) {
- if (type_ < ET_LAST)
+ if (type_ < ET_LAST) {
+ latency()->set_source_event_type(EventTypeToLatencySourceEventType(type));
name_ = EventTypeName(type_);
+ }
}
Event::Event(const base::NativeEvent& native_event,
@@ -351,8 +421,10 @@ Event::Event(const base::NativeEvent& native_event,
result_(ER_UNHANDLED),
source_device_id_(ED_UNKNOWN_DEVICE) {
base::TimeDelta delta = EventTimeForNow() - time_stamp_;
- if (type_ < ET_LAST)
+ if (type_ < ET_LAST) {
+ latency()->set_source_event_type(EventTypeToLatencySourceEventType(type));
name_ = EventTypeName(type_);
+ }
base::HistogramBase::Sample delta_sample =
static_cast<base::HistogramBase::Sample>(delta.InMicroseconds());
UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.Browser", delta_sample, 1, 1000000,
@@ -403,8 +475,10 @@ void Event::SetType(EventType type) {
if (type_ < ET_LAST)
name_ = std::string();
type_ = type;
- if (type_ < ET_LAST)
+ if (type_ < ET_LAST) {
name_ = EventTypeName(type_);
+ latency()->set_source_event_type(EventTypeToLatencySourceEventType(type));
+ }
}
////////////////////////////////////////////////////////////////////////////////
@@ -886,7 +960,14 @@ PointerEvent::PointerEvent(const PointerEvent& pointer_event)
: LocatedEvent(pointer_event),
pointer_id_(pointer_event.pointer_id()),
changed_button_flags_(pointer_event.changed_button_flags()),
- details_(pointer_event.pointer_details()) {}
+ details_(pointer_event.pointer_details()) {
+ if (details_.pointer_type == EventPointerType::POINTER_TYPE_TOUCH)
+ latency()->set_source_event_type(ui::SourceEventType::TOUCH);
+ else if (pointer_event.type() == ET_POINTER_WHEEL_CHANGED)
+ latency()->set_source_event_type(ui::SourceEventType::WHEEL);
+ else
+ latency()->set_source_event_type(ui::SourceEventType::OTHER);
+}
PointerEvent::PointerEvent(const MouseEvent& mouse_event)
: LocatedEvent(mouse_event),
@@ -897,29 +978,35 @@ PointerEvent::PointerEvent(const MouseEvent& mouse_event)
switch (mouse_event.type()) {
case ET_MOUSE_PRESSED:
SetType(ET_POINTER_DOWN);
+ latency()->set_source_event_type(ui::SourceEventType::OTHER);
break;
case ET_MOUSE_DRAGGED:
case ET_MOUSE_MOVED:
SetType(ET_POINTER_MOVED);
+ latency()->set_source_event_type(ui::SourceEventType::OTHER);
break;
case ET_MOUSE_ENTERED:
SetType(ET_POINTER_ENTERED);
+ latency()->set_source_event_type(ui::SourceEventType::OTHER);
break;
case ET_MOUSE_EXITED:
SetType(ET_POINTER_EXITED);
+ latency()->set_source_event_type(ui::SourceEventType::OTHER);
break;
case ET_MOUSE_RELEASED:
SetType(ET_POINTER_UP);
+ latency()->set_source_event_type(ui::SourceEventType::OTHER);
break;
case ET_MOUSEWHEEL:
SetType(ET_POINTER_WHEEL_CHANGED);
details_ = PointerDetails(EventPointerType::POINTER_TYPE_MOUSE,
mouse_event.AsMouseWheelEvent()->offset());
+ latency()->set_source_event_type(ui::SourceEventType::WHEEL);
break;
case ET_MOUSE_CAPTURE_CHANGED:
@@ -957,6 +1044,7 @@ PointerEvent::PointerEvent(const TouchEvent& touch_event)
default:
NOTREACHED();
}
+ latency()->set_source_event_type(ui::SourceEventType::TOUCH);
}
PointerEvent::PointerEvent(EventType type,
@@ -974,7 +1062,14 @@ PointerEvent::PointerEvent(EventType type,
flags),
pointer_id_(pointer_id),
changed_button_flags_(changed_button_flags),
- details_(pointer_details) {}
+ details_(pointer_details) {
+ if (details_.pointer_type == EventPointerType::POINTER_TYPE_TOUCH)
+ latency()->set_source_event_type(ui::SourceEventType::TOUCH);
+ else if (type == ET_POINTER_WHEEL_CHANGED)
+ latency()->set_source_event_type(ui::SourceEventType::WHEEL);
+ else
+ latency()->set_source_event_type(ui::SourceEventType::OTHER);
+}
const int PointerEvent::kMousePointerId = std::numeric_limits<int32_t>::max();
@@ -1097,6 +1192,7 @@ KeyEvent& KeyEvent::operator=(const KeyEvent& rhs) {
key_ = rhs.key_;
is_char_ = rhs.is_char_;
}
+ latency()->set_source_event_type(ui::SourceEventType::OTHER);
return *this;
}
@@ -1273,6 +1369,10 @@ ScrollEvent::ScrollEvent(const base::NativeEvent& native_event)
NOTREACHED() << "Unexpected event type " << type()
<< " when constructing a ScrollEvent.";
}
+ if (IsScrollEvent())
+ latency()->set_source_event_type(ui::SourceEventType::WHEEL);
+ else
+ latency()->set_source_event_type(ui::SourceEventType::TOUCH);
}
ScrollEvent::ScrollEvent(EventType type,
@@ -1291,6 +1391,7 @@ ScrollEvent::ScrollEvent(EventType type,
y_offset_ordinal_(y_offset_ordinal),
finger_count_(finger_count) {
CHECK(IsScrollEvent());
+ latency()->set_source_event_type(ui::SourceEventType::WHEEL);
}
void ScrollEvent::Scale(const float factor) {
@@ -1315,7 +1416,14 @@ GestureEvent::GestureEvent(float x,
time_stamp,
flags | EF_FROM_TOUCH),
details_(details),
- unique_touch_event_id_(unique_touch_event_id) {}
+ unique_touch_event_id_(unique_touch_event_id) {
+ if ((flags | EF_FROM_TOUCH) ||
brucedawson 2016/09/19 17:40:21 This line of code appears to be incorrect. This wa
sahel 2016/09/20 19:10:32 Acknowledged.
+ (details.device_type() == ui::GestureDeviceType::DEVICE_TOUCHSCREEN)) {
+ latency()->set_source_event_type(ui::SourceEventType::TOUCH);
+ } else if (details.device_type() == ui::GestureDeviceType::DEVICE_TOUCHPAD) {
+ latency()->set_source_event_type(ui::SourceEventType::WHEEL);
+ }
+}
GestureEvent::~GestureEvent() {
}
« no previous file with comments | « ui/events/blink/web_input_event_traits.cc ('k') | ui/events/event_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698