Index: ui/events/blink/web_input_event.cc |
diff --git a/ui/events/blink/web_input_event.cc b/ui/events/blink/web_input_event.cc |
index 674f64f24e4a0eafe525f43565331fca9c1e733f..10b13b57c8bbee1c9994721b49a74e8a4aeb1a01 100644 |
--- a/ui/events/blink/web_input_event.cc |
+++ b/ui/events/blink/web_input_event.cc |
@@ -90,24 +90,24 @@ blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( |
#endif // defined(OS_WIN) |
blink::WebKeyboardEvent MakeWebKeyboardEventFromUiEvent(const KeyEvent& event) { |
- blink::WebKeyboardEvent webkit_event; |
- |
- webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp()); |
- webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()) | |
- DomCodeToWebInputEventModifiers(event.code()); |
- |
+ blink::WebInputEvent::Type type = blink::WebInputEvent::Undefined; |
switch (event.type()) { |
case ET_KEY_PRESSED: |
- webkit_event.type = event.is_char() ? blink::WebInputEvent::Char |
- : blink::WebInputEvent::RawKeyDown; |
+ type = event.is_char() ? blink::WebInputEvent::Char |
+ : blink::WebInputEvent::RawKeyDown; |
break; |
case ET_KEY_RELEASED: |
- webkit_event.type = blink::WebInputEvent::KeyUp; |
+ type = blink::WebInputEvent::KeyUp; |
break; |
default: |
NOTREACHED(); |
} |
+ blink::WebKeyboardEvent webkit_event( |
+ type, EventFlagsToWebEventModifiers(event.flags()) | |
+ DomCodeToWebInputEventModifiers(event.code()), |
+ EventTimeStampToSeconds(event.time_stamp())); |
+ |
if (webkit_event.modifiers & blink::WebInputEvent::AltKey) |
webkit_event.isSystemKey = true; |
@@ -128,12 +128,12 @@ blink::WebKeyboardEvent MakeWebKeyboardEventFromUiEvent(const KeyEvent& event) { |
blink::WebMouseWheelEvent MakeWebMouseWheelEventFromUiEvent( |
const ScrollEvent& event) { |
- blink::WebMouseWheelEvent webkit_event; |
+ blink::WebMouseWheelEvent webkit_event( |
+ blink::WebInputEvent::MouseWheel, |
+ EventFlagsToWebEventModifiers(event.flags()), |
+ EventTimeStampToSeconds(event.time_stamp())); |
- webkit_event.type = blink::WebInputEvent::MouseWheel; |
webkit_event.button = blink::WebMouseEvent::Button::NoButton; |
- webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()); |
- webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp()); |
webkit_event.hasPreciseScrollingDeltas = true; |
float offset_ordinal_x = event.x_offset_ordinal(); |
@@ -155,16 +155,13 @@ blink::WebMouseWheelEvent MakeWebMouseWheelEventFromUiEvent( |
blink::WebGestureEvent MakeWebGestureEventFromUiEvent( |
const ScrollEvent& event) { |
- blink::WebGestureEvent webkit_event; |
- |
+ blink::WebInputEvent::Type type = blink::WebInputEvent::Undefined; |
switch (event.type()) { |
case ET_SCROLL_FLING_START: |
- webkit_event.type = blink::WebInputEvent::GestureFlingStart; |
- webkit_event.data.flingStart.velocityX = event.x_offset(); |
- webkit_event.data.flingStart.velocityY = event.y_offset(); |
+ type = blink::WebInputEvent::GestureFlingStart; |
break; |
case ET_SCROLL_FLING_CANCEL: |
- webkit_event.type = blink::WebInputEvent::GestureFlingCancel; |
+ type = blink::WebInputEvent::GestureFlingCancel; |
break; |
case ET_SCROLL: |
NOTREACHED() << "Invalid gesture type: " << event.type(); |
@@ -173,9 +170,15 @@ blink::WebGestureEvent MakeWebGestureEventFromUiEvent( |
NOTREACHED() << "Unknown gesture type: " << event.type(); |
} |
+ blink::WebGestureEvent webkit_event( |
+ type, EventFlagsToWebEventModifiers(event.flags()), |
+ EventTimeStampToSeconds(event.time_stamp())); |
webkit_event.sourceDevice = blink::WebGestureDeviceTouchpad; |
- webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()); |
- webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp()); |
+ if (event.type() == ET_SCROLL_FLING_START) { |
+ webkit_event.data.flingStart.velocityX = event.x_offset(); |
+ webkit_event.data.flingStart.velocityY = event.y_offset(); |
+ } |
+ |
return webkit_event; |
} |
@@ -360,62 +363,65 @@ blink::WebGestureEvent MakeWebGestureEvent( |
} |
blink::WebGestureEvent MakeWebGestureEventFlingCancel() { |
- blink::WebGestureEvent gesture_event; |
+ blink::WebGestureEvent gesture_event( |
+ blink::WebInputEvent::GestureFlingCancel, |
+ blink::WebInputEvent::NoModifiers, |
+ EventTimeStampToSeconds(EventTimeForNow())); |
// All other fields are ignored on a GestureFlingCancel event. |
- gesture_event.type = blink::WebInputEvent::GestureFlingCancel; |
- gesture_event.timeStampSeconds = EventTimeStampToSeconds(EventTimeForNow()); |
gesture_event.sourceDevice = blink::WebGestureDeviceTouchpad; |
return gesture_event; |
} |
blink::WebMouseEvent MakeWebMouseEventFromUiEvent(const MouseEvent& event) { |
- blink::WebMouseEvent webkit_event; |
- |
- webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()); |
- webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp()); |
- webkit_event.button = blink::WebMouseEvent::Button::NoButton; |
- int button_flags = event.flags(); |
- if (event.type() == ET_MOUSE_PRESSED || event.type() == ET_MOUSE_RELEASED) { |
- // We want to use changed_button_flags() for mouse pressed & released. |
- // These flags can be used only if they are set which is not always the case |
- // (see e.g. GetChangedMouseButtonFlagsFromNative() in events_win.cc). |
- if (event.changed_button_flags()) |
- button_flags = event.changed_button_flags(); |
- } |
- if (button_flags & EF_LEFT_MOUSE_BUTTON) |
- webkit_event.button = blink::WebMouseEvent::Button::Left; |
- if (button_flags & EF_MIDDLE_MOUSE_BUTTON) |
- webkit_event.button = blink::WebMouseEvent::Button::Middle; |
- if (button_flags & EF_RIGHT_MOUSE_BUTTON) |
- webkit_event.button = blink::WebMouseEvent::Button::Right; |
- |
+ blink::WebInputEvent::Type type = blink::WebInputEvent::Undefined; |
+ int click_count = 0; |
switch (event.type()) { |
case ET_MOUSE_PRESSED: |
- webkit_event.type = blink::WebInputEvent::MouseDown; |
- webkit_event.clickCount = event.GetClickCount(); |
+ type = blink::WebInputEvent::MouseDown; |
+ click_count = event.GetClickCount(); |
break; |
case ET_MOUSE_RELEASED: |
- webkit_event.type = blink::WebInputEvent::MouseUp; |
- webkit_event.clickCount = event.GetClickCount(); |
+ type = blink::WebInputEvent::MouseUp; |
+ click_count = event.GetClickCount(); |
break; |
case ET_MOUSE_EXITED: |
// TODO(chaopeng) this fix only for chromeos now, should convert ET_MOUSE_EXITED |
// to MouseLeave when crbug.com/450631 fixed. |
#if defined(OS_CHROMEOS) |
- webkit_event.type = blink::WebInputEvent::MouseLeave; |
+ type = blink::WebInputEvent::MouseLeave; |
break; |
#endif |
case ET_MOUSE_ENTERED: |
case ET_MOUSE_MOVED: |
case ET_MOUSE_DRAGGED: |
- webkit_event.type = blink::WebInputEvent::MouseMove; |
+ type = blink::WebInputEvent::MouseMove; |
break; |
default: |
NOTIMPLEMENTED() << "Received unexpected event: " << event.type(); |
break; |
} |
+ blink::WebMouseEvent webkit_event( |
+ type, EventFlagsToWebEventModifiers(event.flags()), |
+ EventTimeStampToSeconds(event.time_stamp())); |
+ webkit_event.button = blink::WebMouseEvent::Button::NoButton; |
+ int button_flags = event.flags(); |
+ if (event.type() == ET_MOUSE_PRESSED || event.type() == ET_MOUSE_RELEASED) { |
+ // We want to use changed_button_flags() for mouse pressed & released. |
+ // These flags can be used only if they are set which is not always the case |
+ // (see e.g. GetChangedMouseButtonFlagsFromNative() in events_win.cc). |
+ if (event.changed_button_flags()) |
+ button_flags = event.changed_button_flags(); |
+ } |
+ if (button_flags & EF_LEFT_MOUSE_BUTTON) |
+ webkit_event.button = blink::WebMouseEvent::Button::Left; |
+ if (button_flags & EF_MIDDLE_MOUSE_BUTTON) |
+ webkit_event.button = blink::WebMouseEvent::Button::Middle; |
+ if (button_flags & EF_RIGHT_MOUSE_BUTTON) |
+ webkit_event.button = blink::WebMouseEvent::Button::Right; |
+ |
+ webkit_event.clickCount = click_count; |
webkit_event.tiltX = roundf(event.pointer_details().tilt_x); |
webkit_event.tiltY = roundf(event.pointer_details().tilt_y); |
webkit_event.force = event.pointer_details().force; |
@@ -427,12 +433,12 @@ blink::WebMouseEvent MakeWebMouseEventFromUiEvent(const MouseEvent& event) { |
blink::WebMouseWheelEvent MakeWebMouseWheelEventFromUiEvent( |
const MouseWheelEvent& event) { |
- blink::WebMouseWheelEvent webkit_event; |
+ blink::WebMouseWheelEvent webkit_event( |
+ blink::WebInputEvent::MouseWheel, |
+ EventFlagsToWebEventModifiers(event.flags()), |
+ EventTimeStampToSeconds(event.time_stamp())); |
- webkit_event.type = blink::WebInputEvent::MouseWheel; |
webkit_event.button = blink::WebMouseEvent::Button::NoButton; |
- webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()); |
- webkit_event.timeStampSeconds = EventTimeStampToSeconds(event.time_stamp()); |
webkit_event.deltaX = event.x_offset(); |
webkit_event.deltaY = event.y_offset(); |