Index: third_party/WebKit/Source/core/events/PointerEventFactory.cpp |
diff --git a/third_party/WebKit/Source/core/events/PointerEventFactory.cpp b/third_party/WebKit/Source/core/events/PointerEventFactory.cpp |
index 1859b52c095392365e3b4397d0d3c5c0838dae46..ef93631cd36dd7b0459ea194c434603f576bb1d1 100644 |
--- a/third_party/WebKit/Source/core/events/PointerEventFactory.cpp |
+++ b/third_party/WebKit/Source/core/events/PointerEventFactory.cpp |
@@ -51,6 +51,23 @@ const AtomicString& pointerEventNameForMouseEventName( |
return emptyAtom; |
} |
+ |
+unsigned short buttonToButtonsBitfield(WebPointerProperties::Button button) |
+{ |
+ switch (button) { |
+ case WebPointerProperties::Button::NoButton: |
+ return static_cast<unsigned short>(MouseEvent::Buttons::None); |
+ case WebPointerProperties::Button::Left: |
+ return static_cast<unsigned short>(MouseEvent::Buttons::Left); |
+ case WebPointerProperties::Button::Right: |
+ return static_cast<unsigned short>(MouseEvent::Buttons::Right); |
+ case WebPointerProperties::Button::Middle: |
+ return static_cast<unsigned short>(MouseEvent::Buttons::Middle); |
+ } |
+ NOTREACHED(); |
+ return 0; |
+} |
+ |
} // namespace |
const int PointerEventFactory::s_invalidId = 0; |
@@ -91,8 +108,8 @@ void PointerEventFactory::setBubblesAndCancelable( |
} |
PointerEvent* PointerEventFactory::create( |
- const AtomicString& mouseEventName, const PlatformMouseEvent& mouseEvent, |
- EventTarget* relatedTarget, |
+ const AtomicString& mouseEventName, |
+ const PlatformMouseEvent& mouseEvent, |
LocalDOMWindow* view) |
{ |
DCHECK(mouseEventName == EventTypeNames::mousemove |
@@ -125,9 +142,10 @@ PointerEvent* PointerEventFactory::create( |
if (pointerEventName == EventTypeNames::pointerdown |
|| pointerEventName == EventTypeNames::pointerup) { |
- pointerEventInit.setButton(mouseEvent.button()); |
- } else { // Only when pointerEventName == EventTypeNames::pointermove |
- pointerEventInit.setButton(NoButton); |
+ pointerEventInit.setButton(static_cast<int>(mouseEvent.pointerProperties().button)); |
+ } else { |
+ DCHECK(pointerEventName == EventTypeNames::pointermove); |
+ pointerEventInit.setButton(static_cast<int>(WebPointerProperties::Button::NoButton)); |
} |
pointerEventInit.setPressure(getPointerEventPressure( |
mouseEvent.pointerProperties().force, pointerEventInit.buttons())); |
@@ -138,14 +156,12 @@ PointerEvent* PointerEventFactory::create( |
// Make sure chorded buttons fire pointermove instead of pointerup/down. |
if ((pointerEventName == EventTypeNames::pointerdown |
- && (buttons & ~MouseEvent::buttonToButtons(mouseEvent.button())) != 0) |
+ && (buttons & ~buttonToButtonsBitfield(mouseEvent.pointerProperties().button)) != 0) |
|| (pointerEventName == EventTypeNames::pointerup && buttons != 0)) |
pointerEventName = EventTypeNames::pointermove; |
pointerEventInit.setView(view); |
- if (relatedTarget) |
- pointerEventInit.setRelatedTarget(relatedTarget); |
return PointerEvent::create(pointerEventName, pointerEventInit); |
} |
@@ -178,7 +194,7 @@ PointerEvent* PointerEventFactory::create(const AtomicString& type, |
pointerEventInit.setScreenY(touchPoint.screenPos().y()); |
pointerEventInit.setClientX(clientPoint.x()); |
pointerEventInit.setClientY(clientPoint.y()); |
- pointerEventInit.setButton(pointerPressedOrReleased ? LeftButton: NoButton); |
+ pointerEventInit.setButton(static_cast<int>(pointerPressedOrReleased ? WebPointerProperties::Button::Left : WebPointerProperties::Button::NoButton)); |
pointerEventInit.setPressure(getPointerEventPressure( |
touchPoint.force(), pointerEventInit.buttons())); |
pointerEventInit.setTiltX(touchPoint.pointerProperties().tiltX); |