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::isTouchPointerEventActiveOnFrame(int pointerId, | |
1186 LocalFrame* frame) { | |
1187 DCHECK_EQ(m_frame, m_frame->localFrameRoot()); | |
1188 return m_pointerEventManager->isTouchPointerEventActiveOnFrame(pointerId, | |
1189 frame); | |
1190 } | |
1191 | |
1185 bool EventHandler::isPointerEventActive(int pointerId) { | 1192 bool EventHandler::isPointerEventActive(int pointerId) { |
1186 return m_pointerEventManager->isActive(pointerId); | 1193 return m_pointerEventManager->isActive(pointerId) || |
1194 m_frame->localFrameRoot() | |
1195 ->eventHandler() | |
1196 .isTouchPointerEventActiveOnFrame(pointerId, m_frame); | |
1187 } | 1197 } |
1188 | 1198 |
1189 void EventHandler::setPointerCapture(int pointerId, EventTarget* target) { | 1199 void EventHandler::setPointerCapture(int pointerId, EventTarget* target) { |
1190 // TODO(crbug.com/591387): This functionality should be per page not per | 1200 // TODO(crbug.com/591387): This functionality should be per page not per |
1191 // frame. | 1201 // frame. |
1192 m_pointerEventManager->setPointerCapture(pointerId, target); | 1202 if (m_frame != m_frame->localFrameRoot() && |
mustaq
2016/10/13 16:38:25
The same check is repeated 3 times---this calls fo
Navid Zolghadr
2016/10/13 17:32:32
Done.
mustaq
2016/10/13 19:55:38
I think IsPointerActiveInRootFrame is a bit misnom
Navid Zolghadr
2016/10/14 14:50:28
I updated the name.
The second paragraph is not ap
| |
1203 m_frame->localFrameRoot() | |
1204 ->eventHandler() | |
1205 .isTouchPointerEventActiveOnFrame(pointerId, m_frame)) { | |
1206 m_frame->localFrameRoot()->eventHandler().setPointerCapture(pointerId, | |
1207 target); | |
1208 } else { | |
1209 m_pointerEventManager->setPointerCapture(pointerId, target); | |
mustaq
2016/10/13 16:38:25
Not clear why we shouldn't check |isActiveOnFrame|
Navid Zolghadr
2016/10/13 17:32:32
setPointerCapture just ignores if the pointer is n
mustaq
2016/10/13 19:55:38
Does that mean there is a possibility setPointerCa
Navid Zolghadr
2016/10/14 14:50:28
If that lastNodeReceivingEvent is null that means
| |
1210 } | |
1193 } | 1211 } |
1194 | 1212 |
1195 void EventHandler::releasePointerCapture(int pointerId, EventTarget* target) { | 1213 void EventHandler::releasePointerCapture(int pointerId, EventTarget* target) { |
1196 m_pointerEventManager->releasePointerCapture(pointerId, target); | 1214 if (m_frame != m_frame->localFrameRoot() && |
1215 m_frame->localFrameRoot() | |
1216 ->eventHandler() | |
1217 .isTouchPointerEventActiveOnFrame(pointerId, m_frame)) { | |
1218 m_frame->localFrameRoot()->eventHandler().releasePointerCapture(pointerId, | |
1219 target); | |
1220 } else { | |
1221 m_pointerEventManager->releasePointerCapture(pointerId, target); | |
1222 } | |
1197 } | 1223 } |
1198 | 1224 |
1199 bool EventHandler::hasPointerCapture(int pointerId, | 1225 bool EventHandler::hasPointerCapture(int pointerId, |
1200 const EventTarget* target) const { | 1226 const EventTarget* target) const { |
1201 return m_pointerEventManager->hasPointerCapture(pointerId, target); | 1227 if (m_frame != m_frame->localFrameRoot() && |
1228 m_frame->localFrameRoot() | |
1229 ->eventHandler() | |
1230 .isTouchPointerEventActiveOnFrame(pointerId, m_frame)) { | |
1231 return m_frame->localFrameRoot()->eventHandler().hasPointerCapture( | |
1232 pointerId, target); | |
1233 } else { | |
1234 return m_pointerEventManager->hasPointerCapture(pointerId, target); | |
1235 } | |
1202 } | 1236 } |
1203 | 1237 |
1204 bool EventHandler::hasProcessedPointerCapture(int pointerId, | 1238 bool EventHandler::hasProcessedPointerCapture(int pointerId, |
1205 const EventTarget* target) const { | 1239 const EventTarget* target) const { |
1206 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target); | 1240 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target); |
1207 } | 1241 } |
1208 | 1242 |
1209 void EventHandler::elementRemoved(EventTarget* target) { | 1243 void EventHandler::elementRemoved(EventTarget* target) { |
1210 m_pointerEventManager->elementRemoved(target); | 1244 m_pointerEventManager->elementRemoved(target); |
1211 } | 1245 } |
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2050 } | 2084 } |
2051 | 2085 |
2052 FrameHost* EventHandler::frameHost() const { | 2086 FrameHost* EventHandler::frameHost() const { |
2053 if (!m_frame->page()) | 2087 if (!m_frame->page()) |
2054 return nullptr; | 2088 return nullptr; |
2055 | 2089 |
2056 return &m_frame->page()->frameHost(); | 2090 return &m_frame->page()->frameHost(); |
2057 } | 2091 } |
2058 | 2092 |
2059 } // namespace blink | 2093 } // namespace blink |
OLD | NEW |