| 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 namespace blink { | 7 namespace blink { |
| 8 | 8 |
| 9 namespace { | 9 namespace { |
| 10 | 10 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 const WebPointerProperties::PointerType pointerType = pointerProperties.poin
terType; | 68 const WebPointerProperties::PointerType pointerType = pointerProperties.poin
terType; |
| 69 const IncomingId incomingId(pointerType, pointerProperties.id); | 69 const IncomingId incomingId(pointerType, pointerProperties.id); |
| 70 int pointerId = addIdAndActiveButtons(incomingId, buttons != 0); | 70 int pointerId = addIdAndActiveButtons(incomingId, buttons != 0); |
| 71 | 71 |
| 72 pointerEventInit.setButtons(buttons); | 72 pointerEventInit.setButtons(buttons); |
| 73 pointerEventInit.setPointerId(pointerId); | 73 pointerEventInit.setPointerId(pointerId); |
| 74 pointerEventInit.setPointerType(pointerTypeNameForWebPointPointerType(pointe
rType)); | 74 pointerEventInit.setPointerType(pointerTypeNameForWebPointPointerType(pointe
rType)); |
| 75 pointerEventInit.setIsPrimary(isPrimary(pointerId)); | 75 pointerEventInit.setIsPrimary(isPrimary(pointerId)); |
| 76 } | 76 } |
| 77 | 77 |
| 78 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventFactory::create( | 78 RawPtr<PointerEvent> PointerEventFactory::create( |
| 79 const AtomicString& mouseEventName, const PlatformMouseEvent& mouseEvent, | 79 const AtomicString& mouseEventName, const PlatformMouseEvent& mouseEvent, |
| 80 PassRefPtrWillBeRawPtr<EventTarget> relatedTarget, | 80 RawPtr<EventTarget> relatedTarget, |
| 81 PassRefPtrWillBeRawPtr<AbstractView> view) | 81 RawPtr<AbstractView> view) |
| 82 { | 82 { |
| 83 AtomicString pointerEventName = pointerEventNameForMouseEventName(mouseEvent
Name); | 83 AtomicString pointerEventName = pointerEventNameForMouseEventName(mouseEvent
Name); |
| 84 unsigned buttons = MouseEvent::platformModifiersToButtons(mouseEvent.getModi
fiers()); | 84 unsigned buttons = MouseEvent::platformModifiersToButtons(mouseEvent.getModi
fiers()); |
| 85 PointerEventInit pointerEventInit; | 85 PointerEventInit pointerEventInit; |
| 86 | 86 |
| 87 setIdTypeButtons(pointerEventInit, mouseEvent.pointerProperties(), buttons); | 87 setIdTypeButtons(pointerEventInit, mouseEvent.pointerProperties(), buttons); |
| 88 | 88 |
| 89 pointerEventInit.setScreenX(mouseEvent.globalPosition().x()); | 89 pointerEventInit.setScreenX(mouseEvent.globalPosition().x()); |
| 90 pointerEventInit.setScreenY(mouseEvent.globalPosition().y()); | 90 pointerEventInit.setScreenY(mouseEvent.globalPosition().y()); |
| 91 pointerEventInit.setClientX(mouseEvent.position().x()); | 91 pointerEventInit.setClientX(mouseEvent.position().x()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 118 && pointerEventName != EventTypeNames::pointerleave | 118 && pointerEventName != EventTypeNames::pointerleave |
| 119 && pointerEventName != EventTypeNames::pointercancel); | 119 && pointerEventName != EventTypeNames::pointercancel); |
| 120 | 120 |
| 121 pointerEventInit.setView(view); | 121 pointerEventInit.setView(view); |
| 122 if (relatedTarget) | 122 if (relatedTarget) |
| 123 pointerEventInit.setRelatedTarget(relatedTarget); | 123 pointerEventInit.setRelatedTarget(relatedTarget); |
| 124 | 124 |
| 125 return PointerEvent::create(pointerEventName, pointerEventInit); | 125 return PointerEvent::create(pointerEventName, pointerEventInit); |
| 126 } | 126 } |
| 127 | 127 |
| 128 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventFactory::create(const AtomicStr
ing& type, | 128 RawPtr<PointerEvent> PointerEventFactory::create(const AtomicString& type, |
| 129 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers, | 129 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers, |
| 130 const double width, const double height, | 130 const double width, const double height, |
| 131 const double clientX, const double clientY) | 131 const double clientX, const double clientY) |
| 132 { | 132 { |
| 133 const PlatformTouchPoint::TouchState pointState = touchPoint.state(); | 133 const PlatformTouchPoint::TouchState pointState = touchPoint.state(); |
| 134 | 134 |
| 135 bool pointerReleasedOrCancelled = | 135 bool pointerReleasedOrCancelled = |
| 136 pointState == PlatformTouchPoint::TouchReleased | 136 pointState == PlatformTouchPoint::TouchReleased |
| 137 || pointState == PlatformTouchPoint::TouchCancelled; | 137 || pointState == PlatformTouchPoint::TouchCancelled; |
| 138 bool pointerPressedOrReleased = | 138 bool pointerPressedOrReleased = |
| (...skipping 21 matching lines...) Expand all Loading... |
| 160 | 160 |
| 161 UIEventWithKeyState::setFromPlatformModifiers(pointerEventInit, modifiers); | 161 UIEventWithKeyState::setFromPlatformModifiers(pointerEventInit, modifiers); |
| 162 | 162 |
| 163 pointerEventInit.setBubbles(!isEnterOrLeave); | 163 pointerEventInit.setBubbles(!isEnterOrLeave); |
| 164 pointerEventInit.setCancelable(!isEnterOrLeave && pointState != PlatformTouc
hPoint::TouchCancelled); | 164 pointerEventInit.setCancelable(!isEnterOrLeave && pointState != PlatformTouc
hPoint::TouchCancelled); |
| 165 | 165 |
| 166 return PointerEvent::create(type, pointerEventInit); | 166 return PointerEvent::create(type, pointerEventInit); |
| 167 } | 167 } |
| 168 | 168 |
| 169 | 169 |
| 170 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventFactory::createPointerCancelEve
nt(const PlatformTouchPoint& touchPoint) | 170 RawPtr<PointerEvent> PointerEventFactory::createPointerCancelEvent(const Platfor
mTouchPoint& touchPoint) |
| 171 { | 171 { |
| 172 PointerEventInit pointerEventInit; | 172 PointerEventInit pointerEventInit; |
| 173 | 173 |
| 174 setIdTypeButtons(pointerEventInit, touchPoint.pointerProperties(), 0); | 174 setIdTypeButtons(pointerEventInit, touchPoint.pointerProperties(), 0); |
| 175 | 175 |
| 176 pointerEventInit.setBubbles(true); | 176 pointerEventInit.setBubbles(true); |
| 177 pointerEventInit.setCancelable(false); | 177 pointerEventInit.setCancelable(false); |
| 178 | 178 |
| 179 return PointerEvent::create(EventTypeNames::pointercancel, pointerEventInit)
; | 179 return PointerEvent::create(EventTypeNames::pointercancel, pointerEventInit)
; |
| 180 } | 180 } |
| 181 | 181 |
| 182 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventFactory::createPointerCaptureEv
ent( | 182 RawPtr<PointerEvent> PointerEventFactory::createPointerCaptureEvent( |
| 183 PassRefPtrWillBeRawPtr<PointerEvent> pointerEvent, | 183 RawPtr<PointerEvent> pointerEvent, |
| 184 const AtomicString& type) | 184 const AtomicString& type) |
| 185 { | 185 { |
| 186 ASSERT(type == EventTypeNames::gotpointercapture | 186 ASSERT(type == EventTypeNames::gotpointercapture |
| 187 || type == EventTypeNames::lostpointercapture); | 187 || type == EventTypeNames::lostpointercapture); |
| 188 | 188 |
| 189 PointerEventInit pointerEventInit; | 189 PointerEventInit pointerEventInit; |
| 190 pointerEventInit.setPointerId(pointerEvent->pointerId()); | 190 pointerEventInit.setPointerId(pointerEvent->pointerId()); |
| 191 pointerEventInit.setPointerType(pointerEvent->pointerType()); | 191 pointerEventInit.setPointerType(pointerEvent->pointerType()); |
| 192 pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); | 192 pointerEventInit.setIsPrimary(pointerEvent->isPrimary()); |
| 193 pointerEventInit.setBubbles(true); | 193 pointerEventInit.setBubbles(true); |
| 194 pointerEventInit.setCancelable(false); | 194 pointerEventInit.setCancelable(false); |
| 195 | 195 |
| 196 return PointerEvent::create(type, pointerEventInit); | 196 return PointerEvent::create(type, pointerEventInit); |
| 197 } | 197 } |
| 198 | 198 |
| 199 PassRefPtrWillBeRawPtr<PointerEvent> PointerEventFactory::createPointerTransitio
nEvent( | 199 RawPtr<PointerEvent> PointerEventFactory::createPointerTransitionEvent( |
| 200 PassRefPtrWillBeRawPtr<PointerEvent> pointerEvent, | 200 RawPtr<PointerEvent> pointerEvent, |
| 201 const AtomicString& type, | 201 const AtomicString& type, |
| 202 PassRefPtrWillBeRawPtr<EventTarget> relatedTarget) | 202 RawPtr<EventTarget> relatedTarget) |
| 203 { | 203 { |
| 204 ASSERT(type == EventTypeNames::pointerout | 204 ASSERT(type == EventTypeNames::pointerout |
| 205 || type == EventTypeNames::pointerleave | 205 || type == EventTypeNames::pointerleave |
| 206 || type == EventTypeNames::pointerover | 206 || type == EventTypeNames::pointerover |
| 207 || type == EventTypeNames::pointerenter); | 207 || type == EventTypeNames::pointerenter); |
| 208 | 208 |
| 209 PointerEventInit pointerEventInit; | 209 PointerEventInit pointerEventInit; |
| 210 | 210 |
| 211 pointerEventInit.setPointerId(pointerEvent->pointerId()); | 211 pointerEventInit.setPointerId(pointerEvent->pointerId()); |
| 212 pointerEventInit.setPointerType(pointerEvent->pointerType()); | 212 pointerEventInit.setPointerType(pointerEvent->pointerType()); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 int mappedId = m_currentId++; | 283 int mappedId = m_currentId++; |
| 284 if (!m_idCount[type]) | 284 if (!m_idCount[type]) |
| 285 m_primaryId[type] = mappedId; | 285 m_primaryId[type] = mappedId; |
| 286 m_idCount[type]++; | 286 m_idCount[type]++; |
| 287 m_pointerIncomingIdMapping.add(p, mappedId); | 287 m_pointerIncomingIdMapping.add(p, mappedId); |
| 288 m_pointerIdMapping.add(mappedId, PointerAttributes(p, isActiveButtons)); | 288 m_pointerIdMapping.add(mappedId, PointerAttributes(p, isActiveButtons)); |
| 289 return mappedId; | 289 return mappedId; |
| 290 } | 290 } |
| 291 | 291 |
| 292 bool PointerEventFactory::remove( | 292 bool PointerEventFactory::remove( |
| 293 const PassRefPtrWillBeRawPtr<PointerEvent> pointerEvent) | 293 const RawPtr<PointerEvent> pointerEvent) |
| 294 { | 294 { |
| 295 int mappedId = pointerEvent->pointerId(); | 295 int mappedId = pointerEvent->pointerId(); |
| 296 // Do not remove mouse pointer id as it should always be there | 296 // Do not remove mouse pointer id as it should always be there |
| 297 if (mappedId == s_mouseId || !m_pointerIdMapping.contains(mappedId)) | 297 if (mappedId == s_mouseId || !m_pointerIdMapping.contains(mappedId)) |
| 298 return false; | 298 return false; |
| 299 | 299 |
| 300 IncomingId p = m_pointerIdMapping.get(mappedId).incomingId; | 300 IncomingId p = m_pointerIdMapping.get(mappedId).incomingId; |
| 301 int type = p.pointerType(); | 301 int type = p.pointerType(); |
| 302 m_pointerIdMapping.remove(mappedId); | 302 m_pointerIdMapping.remove(mappedId); |
| 303 m_pointerIncomingIdMapping.remove(p); | 303 m_pointerIncomingIdMapping.remove(p); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 321 return m_pointerIdMapping.contains(pointerId); | 321 return m_pointerIdMapping.contains(pointerId); |
| 322 } | 322 } |
| 323 | 323 |
| 324 bool PointerEventFactory::isActiveButtonsState(const int pointerId) | 324 bool PointerEventFactory::isActiveButtonsState(const int pointerId) |
| 325 { | 325 { |
| 326 return m_pointerIdMapping.contains(pointerId) | 326 return m_pointerIdMapping.contains(pointerId) |
| 327 && m_pointerIdMapping.get(pointerId).isActiveButtons; | 327 && m_pointerIdMapping.get(pointerId).isActiveButtons; |
| 328 } | 328 } |
| 329 | 329 |
| 330 } // namespace blink | 330 } // namespace blink |
| OLD | NEW |