| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "sky/engine/config.h" | 5 #include "sky/engine/config.h" |
| 6 #include "sky/engine/core/frame/NewEventHandler.h" | 6 #include "sky/engine/core/frame/NewEventHandler.h" |
| 7 | 7 |
| 8 #include "sky/engine/core/dom/Document.h" | 8 #include "sky/engine/core/dom/Document.h" |
| 9 #include "sky/engine/core/dom/NodeRenderingTraversal.h" | 9 #include "sky/engine/core/dom/NodeRenderingTraversal.h" |
| 10 #include "sky/engine/core/dom/TouchList.h" | 10 #include "sky/engine/core/dom/TouchList.h" |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 if (event.type == WebInputEvent::PointerUp) | 105 if (event.type == WebInputEvent::PointerUp) |
| 106 return handlePointerUpEvent(event); | 106 return handlePointerUpEvent(event); |
| 107 if (event.type == WebInputEvent::PointerMove) | 107 if (event.type == WebInputEvent::PointerMove) |
| 108 return handlePointerMoveEvent(event); | 108 return handlePointerMoveEvent(event); |
| 109 ASSERT(event.type == WebInputEvent::PointerCancel); | 109 ASSERT(event.type == WebInputEvent::PointerCancel); |
| 110 return handlePointerCancelEvent(event); | 110 return handlePointerCancelEvent(event); |
| 111 } | 111 } |
| 112 | 112 |
| 113 bool NewEventHandler::handlePointerDownEvent(const WebPointerEvent& event) | 113 bool NewEventHandler::handlePointerDownEvent(const WebPointerEvent& event) |
| 114 { | 114 { |
| 115 ASSERT(!m_targetForPointer.contains(event.pointer)); | 115 ASSERT(m_targetForPointer.find(event.pointer) == m_targetForPointer.end()); |
| 116 HitTestResult hitTestResult = performHitTest(positionForEvent(event)); | 116 HitTestResult hitTestResult = performHitTest(positionForEvent(event)); |
| 117 RefPtr<Node> target = targetForHitTestResult(hitTestResult); | 117 RefPtr<Node> target = targetForHitTestResult(hitTestResult); |
| 118 m_targetForPointer.set(event.pointer, target); | 118 m_targetForPointer[event.pointer] = target; |
| 119 bool eventSwallowed = !dispatchPointerEvent(*target, event); | 119 bool eventSwallowed = !dispatchPointerEvent(*target, event); |
| 120 // TODO(abarth): Set the target for the pointer to something determined when | 120 // TODO(abarth): Set the target for the pointer to something determined when |
| 121 // dispatching the event. | 121 // dispatching the event. |
| 122 updateSelectionForPointerDown(hitTestResult, event); | 122 updateSelectionForPointerDown(hitTestResult, event); |
| 123 return eventSwallowed; | 123 return eventSwallowed; |
| 124 } | 124 } |
| 125 | 125 |
| 126 bool NewEventHandler::handlePointerUpEvent(const WebPointerEvent& event) | 126 bool NewEventHandler::handlePointerUpEvent(const WebPointerEvent& event) |
| 127 { | 127 { |
| 128 RefPtr<Node> target = m_targetForPointer.take(event.pointer); | 128 RefPtr<Node> target = m_targetForPointer[event.pointer]; |
| 129 if (!target) | 129 if (!target) |
| 130 return false; | 130 return false; |
| 131 m_targetForPointer.erase(event.pointer); |
| 131 bool eventSwallowed = !dispatchPointerEvent(*target, event); | 132 bool eventSwallowed = !dispatchPointerEvent(*target, event); |
| 132 // When the user releases the primary pointer, we need to dispatch a tap | 133 // When the user releases the primary pointer, we need to dispatch a tap |
| 133 // event to the common ancestor for where the pointer went down and where | 134 // event to the common ancestor for where the pointer went down and where |
| 134 // it came up. | 135 // it came up. |
| 135 if (!dispatchClickEvent(*target, event)) | 136 if (!dispatchClickEvent(*target, event)) |
| 136 eventSwallowed = true; | 137 eventSwallowed = true; |
| 137 return eventSwallowed; | 138 return eventSwallowed; |
| 138 } | 139 } |
| 139 | 140 |
| 140 bool NewEventHandler::handlePointerMoveEvent(const WebPointerEvent& event) | 141 bool NewEventHandler::handlePointerMoveEvent(const WebPointerEvent& event) |
| 141 { | 142 { |
| 142 RefPtr<Node> target = m_targetForPointer.get(event.pointer); | 143 RefPtr<Node> target = m_targetForPointer[event.pointer]; |
| 143 return target && dispatchPointerEvent(*target.get(), event); | 144 return target && dispatchPointerEvent(*target.get(), event); |
| 144 } | 145 } |
| 145 | 146 |
| 146 bool NewEventHandler::handlePointerCancelEvent(const WebPointerEvent& event) | 147 bool NewEventHandler::handlePointerCancelEvent(const WebPointerEvent& event) |
| 147 { | 148 { |
| 148 RefPtr<Node> target = m_targetForPointer.take(event.pointer); | 149 RefPtr<Node> target = m_targetForPointer[event.pointer]; |
| 149 return target && dispatchPointerEvent(*target, event); | 150 return target && dispatchPointerEvent(*target, event); |
| 150 } | 151 } |
| 151 | 152 |
| 152 } | 153 } |
| OLD | NEW |