| 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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 pointerEventInit.setView(view); | 139 pointerEventInit.setView(view); |
| 140 if (relatedTarget) | 140 if (relatedTarget) |
| 141 pointerEventInit.setRelatedTarget(relatedTarget); | 141 pointerEventInit.setRelatedTarget(relatedTarget); |
| 142 | 142 |
| 143 return PointerEvent::create(pointerEventName, pointerEventInit); | 143 return PointerEvent::create(pointerEventName, pointerEventInit); |
| 144 } | 144 } |
| 145 | 145 |
| 146 PointerEvent* PointerEventFactory::create(const AtomicString& type, | 146 PointerEvent* PointerEventFactory::create(const AtomicString& type, |
| 147 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers, | 147 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers, |
| 148 const FloatSize& pointRadius, | 148 const FloatSize& pointRadius, |
| 149 const FloatPoint& clientPoint) | 149 const FloatPoint& clientPoint, |
| 150 LocalDOMWindow* view) |
| 150 { | 151 { |
| 151 const PlatformTouchPoint::TouchState pointState = touchPoint.state(); | 152 const PlatformTouchPoint::TouchState pointState = touchPoint.state(); |
| 152 | 153 |
| 153 bool pointerReleasedOrCancelled = | 154 bool pointerReleasedOrCancelled = |
| 154 pointState == PlatformTouchPoint::TouchReleased | 155 pointState == PlatformTouchPoint::TouchReleased |
| 155 || pointState == PlatformTouchPoint::TouchCancelled; | 156 || pointState == PlatformTouchPoint::TouchCancelled; |
| 156 bool pointerPressedOrReleased = | 157 bool pointerPressedOrReleased = |
| 157 pointState == PlatformTouchPoint::TouchPressed | 158 pointState == PlatformTouchPoint::TouchPressed |
| 158 || pointState == PlatformTouchPoint::TouchReleased; | 159 || pointState == PlatformTouchPoint::TouchReleased; |
| 159 | 160 |
| 160 bool isEnterOrLeave = false; | 161 bool isEnterOrLeave = false; |
| 161 | 162 |
| 162 PointerEventInit pointerEventInit; | 163 PointerEventInit pointerEventInit; |
| 163 | 164 |
| 164 setIdTypeButtons(pointerEventInit, touchPoint.pointerProperties(), | 165 setIdTypeButtons(pointerEventInit, touchPoint.pointerProperties(), |
| 165 pointerReleasedOrCancelled ? 0 : 1); | 166 pointerReleasedOrCancelled ? 0 : 1); |
| 166 | 167 |
| 167 pointerEventInit.setWidth(pointRadius.width()); | 168 pointerEventInit.setWidth(pointRadius.width()); |
| 168 pointerEventInit.setHeight(pointRadius.height()); | 169 pointerEventInit.setHeight(pointRadius.height()); |
| 169 pointerEventInit.setTiltX(touchPoint.pointerProperties().tiltX); | 170 pointerEventInit.setTiltX(touchPoint.pointerProperties().tiltX); |
| 170 pointerEventInit.setTiltY(touchPoint.pointerProperties().tiltY); | 171 pointerEventInit.setTiltY(touchPoint.pointerProperties().tiltY); |
| 171 pointerEventInit.setScreenX(touchPoint.screenPos().x()); | 172 pointerEventInit.setScreenX(touchPoint.screenPos().x()); |
| 172 pointerEventInit.setScreenY(touchPoint.screenPos().y()); | 173 pointerEventInit.setScreenY(touchPoint.screenPos().y()); |
| 173 pointerEventInit.setClientX(clientPoint.x()); | 174 pointerEventInit.setClientX(clientPoint.x()); |
| 174 pointerEventInit.setClientY(clientPoint.y()); | 175 pointerEventInit.setClientY(clientPoint.y()); |
| 175 pointerEventInit.setButton(pointerPressedOrReleased ? LeftButton: NoButton); | 176 pointerEventInit.setButton(pointerPressedOrReleased ? LeftButton: NoButton); |
| 176 pointerEventInit.setPressure(getPointerEventPressure( | 177 pointerEventInit.setPressure(getPointerEventPressure( |
| 177 touchPoint.force(), pointerEventInit.buttons())); | 178 touchPoint.force(), pointerEventInit.buttons())); |
| 179 pointerEventInit.setView(view); |
| 178 | 180 |
| 179 UIEventWithKeyState::setFromPlatformModifiers(pointerEventInit, modifiers); | 181 UIEventWithKeyState::setFromPlatformModifiers(pointerEventInit, modifiers); |
| 180 | 182 |
| 181 pointerEventInit.setBubbles(!isEnterOrLeave); | 183 pointerEventInit.setBubbles(!isEnterOrLeave); |
| 182 pointerEventInit.setCancelable(!isEnterOrLeave && pointState != PlatformTouc
hPoint::TouchCancelled); | 184 pointerEventInit.setCancelable(!isEnterOrLeave && pointState != PlatformTouc
hPoint::TouchCancelled); |
| 183 | 185 |
| 184 return PointerEvent::create(type, pointerEventInit); | 186 return PointerEvent::create(type, pointerEventInit); |
| 185 } | 187 } |
| 186 | 188 |
| 187 PointerEvent* PointerEventFactory::createPointerCancelEvent( | 189 PointerEvent* PointerEventFactory::createPointerCancelEvent( |
| (...skipping 23 matching lines...) Expand all Loading... |
| 211 PointerEventInit pointerEventInit; | 213 PointerEventInit pointerEventInit; |
| 212 pointerEventInit.setPointerId(pointerEvent->pointerId()); | 214 pointerEventInit.setPointerId(pointerEvent->pointerId()); |
| 213 pointerEventInit.setPointerType(pointerEvent->pointerType()); | 215 pointerEventInit.setPointerType(pointerEvent->pointerType()); |
| 214 pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); | 216 pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); |
| 215 pointerEventInit.setBubbles(true); | 217 pointerEventInit.setBubbles(true); |
| 216 pointerEventInit.setCancelable(false); | 218 pointerEventInit.setCancelable(false); |
| 217 | 219 |
| 218 return PointerEvent::create(type, pointerEventInit); | 220 return PointerEvent::create(type, pointerEventInit); |
| 219 } | 221 } |
| 220 | 222 |
| 221 PointerEvent* PointerEventFactory::createPointerTransitionEvent( | 223 PointerEvent* PointerEventFactory::createPointerBoundaryEvent( |
| 222 PointerEvent* pointerEvent, | 224 PointerEvent* pointerEvent, |
| 223 const AtomicString& type, | 225 const AtomicString& type, |
| 224 EventTarget* relatedTarget) | 226 EventTarget* relatedTarget) |
| 225 { | 227 { |
| 226 ASSERT(type == EventTypeNames::pointerout | 228 ASSERT(type == EventTypeNames::pointerout |
| 227 || type == EventTypeNames::pointerleave | 229 || type == EventTypeNames::pointerleave |
| 228 || type == EventTypeNames::pointerover | 230 || type == EventTypeNames::pointerover |
| 229 || type == EventTypeNames::pointerenter); | 231 || type == EventTypeNames::pointerenter); |
| 230 | 232 |
| 231 PointerEventInit pointerEventInit; | 233 PointerEventInit pointerEventInit; |
| 232 | 234 |
| 233 pointerEventInit.setPointerId(pointerEvent->pointerId()); | 235 pointerEventInit.setPointerId(pointerEvent->pointerId()); |
| 234 pointerEventInit.setPointerType(pointerEvent->pointerType()); | 236 pointerEventInit.setPointerType(pointerEvent->pointerType()); |
| 235 pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); | 237 pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); |
| 236 pointerEventInit.setWidth(pointerEvent->width()); | 238 pointerEventInit.setWidth(pointerEvent->width()); |
| 237 pointerEventInit.setHeight(pointerEvent->height()); | 239 pointerEventInit.setHeight(pointerEvent->height()); |
| 238 pointerEventInit.setTiltX(pointerEvent->tiltX()); | 240 pointerEventInit.setTiltX(pointerEvent->tiltX()); |
| 239 pointerEventInit.setTiltY(pointerEvent->tiltY()); | 241 pointerEventInit.setTiltY(pointerEvent->tiltY()); |
| 240 pointerEventInit.setScreenX(pointerEvent->screenX()); | 242 pointerEventInit.setScreenX(pointerEvent->screenX()); |
| 241 pointerEventInit.setScreenY(pointerEvent->screenY()); | 243 pointerEventInit.setScreenY(pointerEvent->screenY()); |
| 242 pointerEventInit.setClientX(pointerEvent->clientX()); | 244 pointerEventInit.setClientX(pointerEvent->clientX()); |
| 243 pointerEventInit.setClientY(pointerEvent->clientY()); | 245 pointerEventInit.setClientY(pointerEvent->clientY()); |
| 244 pointerEventInit.setButton(pointerEvent->button()); | 246 pointerEventInit.setButton(pointerEvent->button()); |
| 245 pointerEventInit.setButtons(pointerEvent->buttons()); | 247 pointerEventInit.setButtons(pointerEvent->buttons()); |
| 246 pointerEventInit.setPressure(pointerEvent->pressure()); | 248 pointerEventInit.setPressure(pointerEvent->pressure()); |
| 249 pointerEventInit.setView(pointerEvent->view()); |
| 247 | 250 |
| 248 setBubblesAndCancelable(pointerEventInit, type); | 251 setBubblesAndCancelable(pointerEventInit, type); |
| 249 | 252 |
| 250 if (relatedTarget) | 253 if (relatedTarget) |
| 251 pointerEventInit.setRelatedTarget(relatedTarget); | 254 pointerEventInit.setRelatedTarget(relatedTarget); |
| 252 | 255 |
| 253 return PointerEvent::create(type, pointerEventInit); | 256 return PointerEvent::create(type, pointerEventInit); |
| 254 } | 257 } |
| 255 | 258 |
| 256 PointerEventFactory::PointerEventFactory() | 259 PointerEventFactory::PointerEventFactory() |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 if (properties.pointerType | 379 if (properties.pointerType |
| 377 == WebPointerProperties::PointerType::Mouse) | 380 == WebPointerProperties::PointerType::Mouse) |
| 378 return PointerEventFactory::s_mouseId; | 381 return PointerEventFactory::s_mouseId; |
| 379 IncomingId id(properties.pointerType, properties.id); | 382 IncomingId id(properties.pointerType, properties.id); |
| 380 if (m_pointerIncomingIdMapping.contains(id)) | 383 if (m_pointerIncomingIdMapping.contains(id)) |
| 381 return m_pointerIncomingIdMapping.get(id); | 384 return m_pointerIncomingIdMapping.get(id); |
| 382 return PointerEventFactory::s_invalidId; | 385 return PointerEventFactory::s_invalidId; |
| 383 } | 386 } |
| 384 | 387 |
| 385 } // namespace blink | 388 } // namespace blink |
| OLD | NEW |