Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights |
| 3 * reserved. | 3 * reserved. |
| 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 4 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) | 5 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) |
| 6 * | 6 * |
| 7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
| 8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
| 9 * are met: | 9 * are met: |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1175 newNodeUnderMouse = m_capturingMouseEventsNode.get(); | 1175 newNodeUnderMouse = m_capturingMouseEventsNode.get(); |
| 1176 } else { | 1176 } else { |
| 1177 // If the target node is a text node, dispatch on the parent node - | 1177 // If the target node is a text node, dispatch on the parent node - |
| 1178 // rdar://4196646 | 1178 // rdar://4196646 |
| 1179 if (newNodeUnderMouse && newNodeUnderMouse->isTextNode()) | 1179 if (newNodeUnderMouse && newNodeUnderMouse->isTextNode()) |
| 1180 newNodeUnderMouse = FlatTreeTraversal::parent(*newNodeUnderMouse); | 1180 newNodeUnderMouse = FlatTreeTraversal::parent(*newNodeUnderMouse); |
| 1181 } | 1181 } |
| 1182 return newNodeUnderMouse; | 1182 return newNodeUnderMouse; |
| 1183 } | 1183 } |
| 1184 | 1184 |
| 1185 bool EventHandler::isPointerEventActiveOnFrame(int pointerId, | |
|
mustaq
2016/10/13 19:55:38
Nit: s/Event/Id/ in these predicates.
Navid Zolghadr
2016/10/14 14:50:28
Done.
| |
| 1186 LocalFrame* frame) const { | |
| 1187 DCHECK_EQ(m_frame, m_frame->localFrameRoot()); | |
| 1188 return m_pointerEventManager->isPointerEventActiveOnFrame(pointerId, frame); | |
| 1189 } | |
| 1190 | |
| 1191 bool EventHandler::IsPointerActiveInRootFrame(int pointerId) const { | |
| 1192 return m_frame != m_frame->localFrameRoot() && | |
| 1193 m_frame->localFrameRoot()->eventHandler().isPointerEventActiveOnFrame( | |
| 1194 pointerId, m_frame); | |
| 1195 } | |
| 1196 | |
| 1185 bool EventHandler::isPointerEventActive(int pointerId) { | 1197 bool EventHandler::isPointerEventActive(int pointerId) { |
| 1186 return m_pointerEventManager->isActive(pointerId); | 1198 return m_pointerEventManager->isActive(pointerId) || |
| 1199 m_frame->localFrameRoot()->eventHandler().isPointerEventActiveOnFrame( | |
| 1200 pointerId, m_frame); | |
| 1187 } | 1201 } |
| 1188 | 1202 |
| 1189 void EventHandler::setPointerCapture(int pointerId, EventTarget* target) { | 1203 void EventHandler::setPointerCapture(int pointerId, EventTarget* target) { |
| 1190 // TODO(crbug.com/591387): This functionality should be per page not per | 1204 // TODO(crbug.com/591387): This functionality should be per page not per |
| 1191 // frame. | 1205 // frame. |
| 1192 m_pointerEventManager->setPointerCapture(pointerId, target); | 1206 if (IsPointerActiveInRootFrame(pointerId)) { |
| 1207 m_frame->localFrameRoot()->eventHandler().setPointerCapture(pointerId, | |
| 1208 target); | |
| 1209 } else { | |
| 1210 m_pointerEventManager->setPointerCapture(pointerId, target); | |
| 1211 } | |
| 1193 } | 1212 } |
| 1194 | 1213 |
| 1195 void EventHandler::releasePointerCapture(int pointerId, EventTarget* target) { | 1214 void EventHandler::releasePointerCapture(int pointerId, EventTarget* target) { |
| 1196 m_pointerEventManager->releasePointerCapture(pointerId, target); | 1215 if (IsPointerActiveInRootFrame(pointerId)) { |
| 1216 m_frame->localFrameRoot()->eventHandler().releasePointerCapture(pointerId, | |
| 1217 target); | |
| 1218 } else { | |
| 1219 m_pointerEventManager->releasePointerCapture(pointerId, target); | |
| 1220 } | |
| 1197 } | 1221 } |
| 1198 | 1222 |
| 1199 bool EventHandler::hasPointerCapture(int pointerId, | 1223 bool EventHandler::hasPointerCapture(int pointerId, |
| 1200 const EventTarget* target) const { | 1224 const EventTarget* target) const { |
| 1201 return m_pointerEventManager->hasPointerCapture(pointerId, target); | 1225 if (IsPointerActiveInRootFrame(pointerId)) { |
| 1226 return m_frame->localFrameRoot()->eventHandler().hasPointerCapture( | |
| 1227 pointerId, target); | |
| 1228 } else { | |
| 1229 return m_pointerEventManager->hasPointerCapture(pointerId, target); | |
| 1230 } | |
| 1202 } | 1231 } |
| 1203 | 1232 |
| 1204 bool EventHandler::hasProcessedPointerCapture(int pointerId, | 1233 bool EventHandler::hasProcessedPointerCapture(int pointerId, |
| 1205 const EventTarget* target) const { | 1234 const EventTarget* target) const { |
| 1206 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target); | 1235 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target); |
| 1207 } | 1236 } |
| 1208 | 1237 |
| 1209 void EventHandler::elementRemoved(EventTarget* target) { | 1238 void EventHandler::elementRemoved(EventTarget* target) { |
| 1210 m_pointerEventManager->elementRemoved(target); | 1239 m_pointerEventManager->elementRemoved(target); |
| 1211 } | 1240 } |
| (...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2050 } | 2079 } |
| 2051 | 2080 |
| 2052 FrameHost* EventHandler::frameHost() const { | 2081 FrameHost* EventHandler::frameHost() const { |
| 2053 if (!m_frame->page()) | 2082 if (!m_frame->page()) |
| 2054 return nullptr; | 2083 return nullptr; |
| 2055 | 2084 |
| 2056 return &m_frame->page()->frameHost(); | 2085 return &m_frame->page()->frameHost(); |
| 2057 } | 2086 } |
| 2058 | 2087 |
| 2059 } // namespace blink | 2088 } // namespace blink |
| OLD | NEW |