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

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: Fix the function naming 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::isTouchPointerIdActiveOnFrame(int pointerId,
1186 LocalFrame* frame) const {
1187 DCHECK_EQ(m_frame, m_frame->localFrameRoot());
1188 return m_pointerEventManager->isTouchPointerIdActiveOnFrame(pointerId, frame);
1189 }
1190
1191 bool EventHandler::rootFrameTouchPointerActiveInCurrentFrame(
1192 int pointerId) const {
1193 return m_frame != m_frame->localFrameRoot() &&
1194 m_frame->localFrameRoot()
1195 ->eventHandler()
1196 .isTouchPointerIdActiveOnFrame(pointerId, m_frame);
1197 }
1198
1185 bool EventHandler::isPointerEventActive(int pointerId) { 1199 bool EventHandler::isPointerEventActive(int pointerId) {
1186 return m_pointerEventManager->isActive(pointerId); 1200 return m_pointerEventManager->isActive(pointerId) ||
1201 rootFrameTouchPointerActiveInCurrentFrame(pointerId);
1187 } 1202 }
1188 1203
1189 void EventHandler::setPointerCapture(int pointerId, EventTarget* target) { 1204 void EventHandler::setPointerCapture(int pointerId, EventTarget* target) {
1190 // TODO(crbug.com/591387): This functionality should be per page not per 1205 // TODO(crbug.com/591387): This functionality should be per page not per
1191 // frame. 1206 // frame.
1192 m_pointerEventManager->setPointerCapture(pointerId, target); 1207 if (rootFrameTouchPointerActiveInCurrentFrame(pointerId)) {
1208 m_frame->localFrameRoot()->eventHandler().setPointerCapture(pointerId,
1209 target);
1210 } else {
1211 m_pointerEventManager->setPointerCapture(pointerId, target);
1212 }
1193 } 1213 }
1194 1214
1195 void EventHandler::releasePointerCapture(int pointerId, EventTarget* target) { 1215 void EventHandler::releasePointerCapture(int pointerId, EventTarget* target) {
1196 m_pointerEventManager->releasePointerCapture(pointerId, target); 1216 if (rootFrameTouchPointerActiveInCurrentFrame(pointerId)) {
1217 m_frame->localFrameRoot()->eventHandler().releasePointerCapture(pointerId,
1218 target);
1219 } else {
1220 m_pointerEventManager->releasePointerCapture(pointerId, target);
1221 }
1197 } 1222 }
1198 1223
1199 bool EventHandler::hasPointerCapture(int pointerId, 1224 bool EventHandler::hasPointerCapture(int pointerId,
1200 const EventTarget* target) const { 1225 const EventTarget* target) const {
1201 return m_pointerEventManager->hasPointerCapture(pointerId, target); 1226 if (rootFrameTouchPointerActiveInCurrentFrame(pointerId)) {
1227 return m_frame->localFrameRoot()->eventHandler().hasPointerCapture(
1228 pointerId, target);
1229 } else {
1230 return m_pointerEventManager->hasPointerCapture(pointerId, target);
1231 }
1202 } 1232 }
1203 1233
1204 bool EventHandler::hasProcessedPointerCapture(int pointerId, 1234 bool EventHandler::hasProcessedPointerCapture(int pointerId,
1205 const EventTarget* target) const { 1235 const EventTarget* target) const {
1206 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target); 1236 return m_pointerEventManager->hasProcessedPointerCapture(pointerId, target);
1207 } 1237 }
1208 1238
1209 void EventHandler::elementRemoved(EventTarget* target) { 1239 void EventHandler::elementRemoved(EventTarget* target) {
1210 m_pointerEventManager->elementRemoved(target); 1240 m_pointerEventManager->elementRemoved(target);
1211 } 1241 }
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after
2050 } 2080 }
2051 2081
2052 FrameHost* EventHandler::frameHost() const { 2082 FrameHost* EventHandler::frameHost() const {
2053 if (!m_frame->page()) 2083 if (!m_frame->page())
2054 return nullptr; 2084 return nullptr;
2055 2085
2056 return &m_frame->page()->frameHost(); 2086 return &m_frame->page()->frameHost();
2057 } 2087 }
2058 2088
2059 } // namespace blink 2089 } // 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