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

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: Applying Mustaq's comments 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::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
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
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/input/EventHandler.h ('k') | third_party/WebKit/Source/core/input/PointerEventManager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698