Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: third_party/WebKit/Source/core/input/EventHandler.cpp

Issue 2408133007: Check the root frame pointer events as well for capture (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698