| 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/editing/Editor.h" | 10 #include "sky/engine/core/editing/Editor.h" |
| 11 #include "sky/engine/core/editing/FrameSelection.h" | 11 #include "sky/engine/core/editing/FrameSelection.h" |
| 12 #include "sky/engine/core/editing/htmlediting.h" | 12 #include "sky/engine/core/editing/htmlediting.h" |
| 13 #include "sky/engine/core/events/GestureEvent.h" | 13 #include "sky/engine/core/events/GestureEvent.h" |
| 14 #include "sky/engine/core/events/KeyboardEvent.h" | 14 #include "sky/engine/core/events/KeyboardEvent.h" |
| 15 #include "sky/engine/core/events/PointerEvent.h" | 15 #include "sky/engine/core/events/PointerEvent.h" |
| 16 #include "sky/engine/core/events/WheelEvent.h" |
| 16 #include "sky/engine/core/frame/LocalFrame.h" | 17 #include "sky/engine/core/frame/LocalFrame.h" |
| 17 #include "sky/engine/core/frame/FrameView.h" | 18 #include "sky/engine/core/frame/FrameView.h" |
| 18 #include "sky/engine/core/rendering/RenderObject.h" | 19 #include "sky/engine/core/rendering/RenderObject.h" |
| 19 #include "sky/engine/core/rendering/RenderView.h" | 20 #include "sky/engine/core/rendering/RenderView.h" |
| 20 #include "sky/engine/platform/KeyboardCodes.h" | 21 #include "sky/engine/platform/KeyboardCodes.h" |
| 21 #include "sky/engine/platform/geometry/FloatPoint.h" | 22 #include "sky/engine/platform/geometry/FloatPoint.h" |
| 22 #include "sky/engine/public/platform/WebInputEvent.h" | 23 #include "sky/engine/public/platform/WebInputEvent.h" |
| 23 | 24 |
| 24 namespace blink { | 25 namespace blink { |
| 25 | 26 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 RefPtr<GestureEvent> gestureEvent = GestureEvent::create(event); | 89 RefPtr<GestureEvent> gestureEvent = GestureEvent::create(event); |
| 89 return target.dispatchEvent(gestureEvent.release()); | 90 return target.dispatchEvent(gestureEvent.release()); |
| 90 } | 91 } |
| 91 | 92 |
| 92 bool NewEventHandler::dispatchKeyboardEvent(Node& target, const WebKeyboardEvent
& event) | 93 bool NewEventHandler::dispatchKeyboardEvent(Node& target, const WebKeyboardEvent
& event) |
| 93 { | 94 { |
| 94 RefPtr<KeyboardEvent> keyboardEvent = KeyboardEvent::create(event); | 95 RefPtr<KeyboardEvent> keyboardEvent = KeyboardEvent::create(event); |
| 95 return target.dispatchEvent(keyboardEvent.release()); | 96 return target.dispatchEvent(keyboardEvent.release()); |
| 96 } | 97 } |
| 97 | 98 |
| 99 bool NewEventHandler::dispatchWheelEvent(Node& target, const WebWheelEvent& even
t) |
| 100 { |
| 101 RefPtr<WheelEvent> wheelEvent = WheelEvent::create(event); |
| 102 return target.dispatchEvent(wheelEvent.release()); |
| 103 } |
| 104 |
| 98 bool NewEventHandler::dispatchClickEvent(Node& capturingTarget, const WebPointer
Event& event) | 105 bool NewEventHandler::dispatchClickEvent(Node& capturingTarget, const WebPointer
Event& event) |
| 99 { | 106 { |
| 100 ASSERT(event.type == WebInputEvent::PointerUp); | 107 ASSERT(event.type == WebInputEvent::PointerUp); |
| 101 HitTestResult hitTestResult = performHitTest(positionForEvent(event)); | 108 HitTestResult hitTestResult = performHitTest(positionForEvent(event)); |
| 102 Node* releaseTarget = targetForHitTestResult(hitTestResult); | 109 Node* releaseTarget = targetForHitTestResult(hitTestResult); |
| 103 Node* clickTarget = NodeRenderingTraversal::commonAncestor(*releaseTarget, c
apturingTarget); | 110 Node* clickTarget = NodeRenderingTraversal::commonAncestor(*releaseTarget, c
apturingTarget); |
| 104 if (!clickTarget) | 111 if (!clickTarget) |
| 105 return true; | 112 return true; |
| 106 // TODO(abarth): Make a proper gesture event that includes information from
the event. | 113 // TODO(abarth): Make a proper gesture event that includes information from
the event. |
| 107 return clickTarget->dispatchEvent(Event::createCancelableBubble(EventTypeNam
es::click)); | 114 return clickTarget->dispatchEvent(Event::createCancelableBubble(EventTypeNam
es::click)); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 // If the keydown event was handled, we don't want to "generate" a keypress | 167 // If the keydown event was handled, we don't want to "generate" a keypress |
| 161 // event for that keystroke. However, we'll receive a Char event from the | 168 // event for that keystroke. However, we'll receive a Char event from the |
| 162 // embedder regardless, so we set m_suppressNextCharEvent, will will prevent | 169 // embedder regardless, so we set m_suppressNextCharEvent, will will prevent |
| 163 // us from dispatching the keypress event when we receive that Char event. | 170 // us from dispatching the keypress event when we receive that Char event. |
| 164 if (handled && event.type == WebInputEvent::KeyDown) | 171 if (handled && event.type == WebInputEvent::KeyDown) |
| 165 m_suppressNextCharEvent = true; | 172 m_suppressNextCharEvent = true; |
| 166 | 173 |
| 167 return handled; | 174 return handled; |
| 168 } | 175 } |
| 169 | 176 |
| 177 bool NewEventHandler::handleWheelEvent(const WebWheelEvent& event) |
| 178 { |
| 179 HitTestResult hitTestResult = performHitTest(positionForEvent(event)); |
| 180 RefPtr<Node> target = targetForHitTestResult(hitTestResult); |
| 181 return target && !dispatchWheelEvent(*target, event); |
| 182 } |
| 183 |
| 170 bool NewEventHandler::handlePointerDownEvent(const WebPointerEvent& event) | 184 bool NewEventHandler::handlePointerDownEvent(const WebPointerEvent& event) |
| 171 { | 185 { |
| 172 // In principle, we shouldn't get another pointer down for the same | 186 // In principle, we shouldn't get another pointer down for the same |
| 173 // pointer ID, but for mice, we don't get a pointer cancel when you | 187 // pointer ID, but for mice, we don't get a pointer cancel when you |
| 174 // drag outside the window frame on Linux. For now, send the pointer | 188 // drag outside the window frame on Linux. For now, send the pointer |
| 175 // cancel at this point. | 189 // cancel at this point. |
| 176 if (event.kind == WebPointerEvent::Mouse | 190 if (event.kind == WebPointerEvent::Mouse |
| 177 && m_targetForPointer.find(event.pointer) != m_targetForPointer.end()) { | 191 && m_targetForPointer.find(event.pointer) != m_targetForPointer.end()) { |
| 178 WebPointerEvent fakeCancel = event; | 192 WebPointerEvent fakeCancel = event; |
| 179 fakeCancel.type = WebInputEvent::PointerCancel; | 193 fakeCancel.type = WebInputEvent::PointerCancel; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 auto it = m_targetForPointer.find(event.pointer); | 239 auto it = m_targetForPointer.find(event.pointer); |
| 226 if (it == m_targetForPointer.end()) | 240 if (it == m_targetForPointer.end()) |
| 227 return false; | 241 return false; |
| 228 RefPtr<Node> target = it->second; | 242 RefPtr<Node> target = it->second; |
| 229 m_targetForPointer.erase(it); | 243 m_targetForPointer.erase(it); |
| 230 ASSERT(target); | 244 ASSERT(target); |
| 231 return dispatchPointerEvent(*target, event); | 245 return dispatchPointerEvent(*target, event); |
| 232 } | 246 } |
| 233 | 247 |
| 234 } | 248 } |
| OLD | NEW |