| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/events/PointerEventFactory.h" | 5 #include "core/events/PointerEventFactory.h" |
| 6 | 6 |
| 7 #include "core/frame/FrameView.h" | 7 #include "core/frame/FrameView.h" |
| 8 #include "platform/geometry/FloatSize.h" | 8 #include "platform/geometry/FloatSize.h" |
| 9 | 9 |
| 10 namespace blink { | 10 namespace blink { |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 pointerEventInit.setView(view); | 145 pointerEventInit.setView(view); |
| 146 if (relatedTarget) | 146 if (relatedTarget) |
| 147 pointerEventInit.setRelatedTarget(relatedTarget); | 147 pointerEventInit.setRelatedTarget(relatedTarget); |
| 148 | 148 |
| 149 return PointerEvent::create(pointerEventName, pointerEventInit); | 149 return PointerEvent::create(pointerEventName, pointerEventInit); |
| 150 } | 150 } |
| 151 | 151 |
| 152 PointerEvent* PointerEventFactory::create(const AtomicString& type, | 152 PointerEvent* PointerEventFactory::create(const AtomicString& type, |
| 153 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers, | 153 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers, |
| 154 const FloatSize& pointRadius, | 154 const FloatSize& pointRadius, |
| 155 const FloatPoint& clientPoint) | 155 const FloatPoint& clientPoint, |
| 156 DOMWindow* view) |
| 156 { | 157 { |
| 157 const PlatformTouchPoint::TouchState pointState = touchPoint.state(); | 158 const PlatformTouchPoint::TouchState pointState = touchPoint.state(); |
| 158 | 159 |
| 159 bool pointerReleasedOrCancelled = | 160 bool pointerReleasedOrCancelled = |
| 160 pointState == PlatformTouchPoint::TouchReleased | 161 pointState == PlatformTouchPoint::TouchReleased |
| 161 || pointState == PlatformTouchPoint::TouchCancelled; | 162 || pointState == PlatformTouchPoint::TouchCancelled; |
| 162 bool pointerPressedOrReleased = | 163 bool pointerPressedOrReleased = |
| 163 pointState == PlatformTouchPoint::TouchPressed | 164 pointState == PlatformTouchPoint::TouchPressed |
| 164 || pointState == PlatformTouchPoint::TouchReleased; | 165 || pointState == PlatformTouchPoint::TouchReleased; |
| 165 | 166 |
| 166 bool isEnterOrLeave = false; | 167 bool isEnterOrLeave = false; |
| 167 | 168 |
| 168 PointerEventInit pointerEventInit; | 169 PointerEventInit pointerEventInit; |
| 169 | 170 |
| 170 setIdTypeButtons(pointerEventInit, touchPoint.pointerProperties(), | 171 setIdTypeButtons(pointerEventInit, touchPoint.pointerProperties(), |
| 171 pointerReleasedOrCancelled ? 0 : 1); | 172 pointerReleasedOrCancelled ? 0 : 1); |
| 172 | 173 |
| 173 pointerEventInit.setWidth(pointRadius.width()); | 174 pointerEventInit.setWidth(pointRadius.width()); |
| 174 pointerEventInit.setHeight(pointRadius.height()); | 175 pointerEventInit.setHeight(pointRadius.height()); |
| 175 pointerEventInit.setTiltX(touchPoint.pointerProperties().tiltX); | 176 pointerEventInit.setTiltX(touchPoint.pointerProperties().tiltX); |
| 176 pointerEventInit.setTiltY(touchPoint.pointerProperties().tiltY); | 177 pointerEventInit.setTiltY(touchPoint.pointerProperties().tiltY); |
| 177 pointerEventInit.setScreenX(touchPoint.screenPos().x()); | 178 pointerEventInit.setScreenX(touchPoint.screenPos().x()); |
| 178 pointerEventInit.setScreenY(touchPoint.screenPos().y()); | 179 pointerEventInit.setScreenY(touchPoint.screenPos().y()); |
| 179 pointerEventInit.setClientX(clientPoint.x()); | 180 pointerEventInit.setClientX(clientPoint.x()); |
| 180 pointerEventInit.setClientY(clientPoint.y()); | 181 pointerEventInit.setClientY(clientPoint.y()); |
| 181 pointerEventInit.setButton(pointerPressedOrReleased ? LeftButton: NoButton); | 182 pointerEventInit.setButton(pointerPressedOrReleased ? LeftButton: NoButton); |
| 182 pointerEventInit.setPressure(getPointerEventPressure( | 183 pointerEventInit.setPressure(getPointerEventPressure( |
| 183 touchPoint.force(), pointerEventInit.buttons())); | 184 touchPoint.force(), pointerEventInit.buttons())); |
| 185 pointerEventInit.setView(view); |
| 184 | 186 |
| 185 UIEventWithKeyState::setFromPlatformModifiers(pointerEventInit, modifiers); | 187 UIEventWithKeyState::setFromPlatformModifiers(pointerEventInit, modifiers); |
| 186 | 188 |
| 187 pointerEventInit.setBubbles(!isEnterOrLeave); | 189 pointerEventInit.setBubbles(!isEnterOrLeave); |
| 188 pointerEventInit.setCancelable(!isEnterOrLeave && pointState != PlatformTouc
hPoint::TouchCancelled); | 190 pointerEventInit.setCancelable(!isEnterOrLeave && pointState != PlatformTouc
hPoint::TouchCancelled); |
| 189 | 191 |
| 190 return PointerEvent::create(type, pointerEventInit); | 192 return PointerEvent::create(type, pointerEventInit); |
| 191 } | 193 } |
| 192 | 194 |
| 193 PointerEvent* PointerEventFactory::createPointerCancelEvent( | 195 PointerEvent* PointerEventFactory::createPointerCancelEvent( |
| (...skipping 23 matching lines...) Expand all Loading... |
| 217 PointerEventInit pointerEventInit; | 219 PointerEventInit pointerEventInit; |
| 218 pointerEventInit.setPointerId(pointerEvent->pointerId()); | 220 pointerEventInit.setPointerId(pointerEvent->pointerId()); |
| 219 pointerEventInit.setPointerType(pointerEvent->pointerType()); | 221 pointerEventInit.setPointerType(pointerEvent->pointerType()); |
| 220 pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); | 222 pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); |
| 221 pointerEventInit.setBubbles(true); | 223 pointerEventInit.setBubbles(true); |
| 222 pointerEventInit.setCancelable(false); | 224 pointerEventInit.setCancelable(false); |
| 223 | 225 |
| 224 return PointerEvent::create(type, pointerEventInit); | 226 return PointerEvent::create(type, pointerEventInit); |
| 225 } | 227 } |
| 226 | 228 |
| 227 PointerEvent* PointerEventFactory::createPointerTransitionEvent( | 229 PointerEvent* PointerEventFactory::createPointerBoundaryEvent( |
| 228 PointerEvent* pointerEvent, | 230 PointerEvent* pointerEvent, |
| 229 const AtomicString& type, | 231 const AtomicString& type, |
| 230 EventTarget* relatedTarget) | 232 EventTarget* relatedTarget) |
| 231 { | 233 { |
| 232 ASSERT(type == EventTypeNames::pointerout | 234 ASSERT(type == EventTypeNames::pointerout |
| 233 || type == EventTypeNames::pointerleave | 235 || type == EventTypeNames::pointerleave |
| 234 || type == EventTypeNames::pointerover | 236 || type == EventTypeNames::pointerover |
| 235 || type == EventTypeNames::pointerenter); | 237 || type == EventTypeNames::pointerenter); |
| 236 | 238 |
| 237 PointerEventInit pointerEventInit; | 239 PointerEventInit pointerEventInit; |
| 238 | 240 |
| 239 pointerEventInit.setPointerId(pointerEvent->pointerId()); | 241 pointerEventInit.setPointerId(pointerEvent->pointerId()); |
| 240 pointerEventInit.setPointerType(pointerEvent->pointerType()); | 242 pointerEventInit.setPointerType(pointerEvent->pointerType()); |
| 241 pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); | 243 pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); |
| 242 pointerEventInit.setWidth(pointerEvent->width()); | 244 pointerEventInit.setWidth(pointerEvent->width()); |
| 243 pointerEventInit.setHeight(pointerEvent->height()); | 245 pointerEventInit.setHeight(pointerEvent->height()); |
| 244 pointerEventInit.setTiltX(pointerEvent->tiltX()); | 246 pointerEventInit.setTiltX(pointerEvent->tiltX()); |
| 245 pointerEventInit.setTiltY(pointerEvent->tiltY()); | 247 pointerEventInit.setTiltY(pointerEvent->tiltY()); |
| 246 pointerEventInit.setScreenX(pointerEvent->screenX()); | 248 pointerEventInit.setScreenX(pointerEvent->screenX()); |
| 247 pointerEventInit.setScreenY(pointerEvent->screenY()); | 249 pointerEventInit.setScreenY(pointerEvent->screenY()); |
| 248 pointerEventInit.setClientX(pointerEvent->clientX()); | 250 pointerEventInit.setClientX(pointerEvent->clientX()); |
| 249 pointerEventInit.setClientY(pointerEvent->clientY()); | 251 pointerEventInit.setClientY(pointerEvent->clientY()); |
| 250 pointerEventInit.setButton(pointerEvent->button()); | 252 pointerEventInit.setButton(pointerEvent->button()); |
| 251 pointerEventInit.setButtons(pointerEvent->buttons()); | 253 pointerEventInit.setButtons(pointerEvent->buttons()); |
| 252 pointerEventInit.setPressure(pointerEvent->pressure()); | 254 pointerEventInit.setPressure(pointerEvent->pressure()); |
| 255 pointerEventInit.setView(pointerEvent->view()); |
| 253 | 256 |
| 254 setBubblesAndCancelable(pointerEventInit, type); | 257 setBubblesAndCancelable(pointerEventInit, type); |
| 255 | 258 |
| 256 if (relatedTarget) | 259 if (relatedTarget) |
| 257 pointerEventInit.setRelatedTarget(relatedTarget); | 260 pointerEventInit.setRelatedTarget(relatedTarget); |
| 258 | 261 |
| 259 return PointerEvent::create(type, pointerEventInit); | 262 return PointerEvent::create(type, pointerEventInit); |
| 260 } | 263 } |
| 261 | 264 |
| 262 PointerEventFactory::PointerEventFactory() | 265 PointerEventFactory::PointerEventFactory() |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 if (properties.pointerType | 385 if (properties.pointerType |
| 383 == WebPointerProperties::PointerType::Mouse) | 386 == WebPointerProperties::PointerType::Mouse) |
| 384 return PointerEventFactory::s_mouseId; | 387 return PointerEventFactory::s_mouseId; |
| 385 IncomingId id(properties.pointerType, properties.id); | 388 IncomingId id(properties.pointerType, properties.id); |
| 386 if (m_pointerIncomingIdMapping.contains(id)) | 389 if (m_pointerIncomingIdMapping.contains(id)) |
| 387 return m_pointerIncomingIdMapping.get(id); | 390 return m_pointerIncomingIdMapping.get(id); |
| 388 return PointerEventFactory::s_invalidId; | 391 return PointerEventFactory::s_invalidId; |
| 389 } | 392 } |
| 390 | 393 |
| 391 } // namespace blink | 394 } // namespace blink |
| OLD | NEW |