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

Unified Diff: Source/core/page/EventHandler.cpp

Issue 967213004: Removed FrameView's windowToContents and contentsToWindow methods. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/page/EventHandler.cpp
diff --git a/Source/core/page/EventHandler.cpp b/Source/core/page/EventHandler.cpp
index 7a28dc96a1595b2563160f4a90c81bb79951cbe9..dbe6c97ceda7395c4d079761223f547dc5e210cd 100644
--- a/Source/core/page/EventHandler.cpp
+++ b/Source/core/page/EventHandler.cpp
@@ -514,7 +514,7 @@ bool EventHandler::handleMousePressEventSingleClick(const MouseEventWithHitTestR
// Don't restart the selection when the mouse is pressed on an
// existing selection so we can allow for text dragging.
if (FrameView* view = m_frame->view()) {
- LayoutPoint vPoint = view->windowToContents(event.event().position());
+ LayoutPoint vPoint = view->rootFrameToContents(event.event().position());
if (!extendSelection && m_frame->selection().contains(vPoint)) {
m_mouseDownWasSingleClickInSelection = true;
return false;
@@ -609,7 +609,7 @@ bool EventHandler::handleMousePressEvent(const MouseEventWithHitTestResults& eve
if (m_frame->document()->isSVGDocument() && m_frame->document()->accessSVGExtensions().zoomAndPanEnabled()) {
if (event.event().shiftKey() && singleClick) {
m_svgPan = true;
- m_frame->document()->accessSVGExtensions().startPan(m_frame->view()->windowToContents(event.event().position()));
+ m_frame->document()->accessSVGExtensions().startPan(m_frame->view()->rootFrameToContents(event.event().position()));
return true;
}
}
@@ -713,7 +713,7 @@ void EventHandler::updateSelectionForMouseDrag()
return;
HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::Move);
- HitTestResult result(view->windowToContents(m_lastKnownMousePosition));
+ HitTestResult result(view->rootFrameToContents(m_lastKnownMousePosition));
renderer->hitTest(request, result);
updateSelectionForMouseDrag(result);
}
@@ -1027,7 +1027,7 @@ void EventHandler::updateCursor()
m_frame->document()->updateLayout();
HitTestRequest request(HitTestRequest::ReadOnly);
- HitTestResult result(view->windowToContents(m_lastKnownMousePosition));
+ HitTestResult result(view->rootFrameToContents(m_lastKnownMousePosition));
layoutView->hitTest(request, result);
OptionalCursor optionalCursor = selectCursor(result);
@@ -1208,12 +1208,12 @@ OptionalCursor EventHandler::selectAutoCursor(const HitTestResult& result, Node*
return pointerCursor();
}
-static LayoutPoint documentPointForWindowPoint(LocalFrame* frame, const IntPoint& windowPoint)
+static LayoutPoint contentPointFromRootFrame(LocalFrame* frame, const IntPoint& pointInRootFrame)
{
FrameView* view = frame->view();
// FIXME: Is it really OK to use the wrong coordinates here when view is 0?
// Historically the code would just crash; this is clearly no worse than that.
- return view ? view->windowToContents(windowPoint) : windowPoint;
+ return view ? view->rootFrameToContents(pointInRootFrame) : pointInRootFrame;
}
bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent)
@@ -1236,7 +1236,7 @@ bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent)
m_mouseDownMayStartSelect = false;
m_mouseDownMayStartAutoscroll = false;
if (FrameView* view = m_frame->view())
- m_mouseDownPos = view->windowToContents(mouseEvent.position());
+ m_mouseDownPos = view->rootFrameToContents(mouseEvent.position());
else {
invalidateClick();
return false;
@@ -1245,7 +1245,7 @@ bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent)
HitTestRequest request(HitTestRequest::Active);
// Save the document point we generate in case the window coordinate is invalidated by what happens
// when we dispatch the event.
- LayoutPoint documentPoint = documentPointForWindowPoint(m_frame, mouseEvent.position());
+ LayoutPoint documentPoint = contentPointFromRootFrame(m_frame, mouseEvent.position());
MouseEventWithHitTestResults mev = m_frame->document()->prepareMouseEvent(request, documentPoint, mouseEvent);
if (!mev.innerNode()) {
@@ -1286,7 +1286,7 @@ bool EventHandler::handleMousePressEvent(const PlatformMouseEvent& mouseEvent)
if (FrameView* view = m_frame->view()) {
Layer* layer = mev.innerNode()->renderer() ? mev.innerNode()->renderer()->enclosingLayer() : nullptr;
- IntPoint p = view->windowToContents(mouseEvent.position());
+ IntPoint p = view->rootFrameToContents(mouseEvent.position());
if (layer && layer->scrollableArea() && layer->scrollableArea()->isPointInResizeControl(p, ResizerForPointer)) {
m_resizeScrollableArea = layer->scrollableArea();
m_resizeScrollableArea->setInResizeMode(true);
@@ -1409,7 +1409,7 @@ bool EventHandler::handleMouseMoveOrLeaveEvent(const PlatformMouseEvent& mouseEv
cancelFakeMouseMoveEvent();
if (m_svgPan) {
- m_frame->document()->accessSVGExtensions().updatePan(m_frame->view()->windowToContents(m_lastKnownMousePosition));
+ m_frame->document()->accessSVGExtensions().updatePan(m_frame->view()->rootFrameToContents(m_lastKnownMousePosition));
return true;
}
@@ -1545,7 +1545,7 @@ bool EventHandler::handleMouseReleaseEvent(const PlatformMouseEvent& mouseEvent)
if (m_svgPan) {
m_svgPan = false;
- m_frame->document()->accessSVGExtensions().updatePan(m_frame->view()->windowToContents(m_lastKnownMousePosition));
+ m_frame->document()->accessSVGExtensions().updatePan(m_frame->view()->rootFrameToContents(m_lastKnownMousePosition));
return true;
}
@@ -1831,7 +1831,7 @@ MouseEventWithHitTestResults EventHandler::prepareMouseEvent(const HitTestReques
ASSERT(m_frame);
ASSERT(m_frame->document());
- return m_frame->document()->prepareMouseEvent(request, documentPointForWindowPoint(m_frame, mev.position()), mev);
+ return m_frame->document()->prepareMouseEvent(request, contentPointFromRootFrame(m_frame, mev.position()), mev);
}
void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMouseEvent& mouseEvent, bool fireMouseOverOut)
@@ -1982,7 +1982,7 @@ bool EventHandler::handleWheelEvent(const PlatformWheelEvent& event)
if (!view)
return false;
- LayoutPoint vPoint = view->windowToContents(event.position());
+ LayoutPoint vPoint = view->rootFrameToContents(event.position());
HitTestRequest request(HitTestRequest::ReadOnly);
HitTestResult result(vPoint);
@@ -2186,7 +2186,7 @@ bool EventHandler::handleGestureScrollEvent(const PlatformGestureEvent& gestureE
return false;
FrameView* view = m_frame->view();
- LayoutPoint viewPoint = view->windowToContents(gestureEvent.position());
+ LayoutPoint viewPoint = view->rootFrameToContents(gestureEvent.position());
HitTestRequest request(HitTestRequest::ReadOnly);
HitTestResult result(viewPoint);
document->layoutView()->hitTest(request, result);
@@ -2252,7 +2252,7 @@ bool EventHandler::handleGestureTap(const GestureEventWithHitTestResults& target
// We use the adjusted position so the application isn't surprised to see a event with
// co-ordinates outside the target's bounds.
- IntPoint adjustedPoint = frameView->windowToContents(gestureEvent.position());
+ IntPoint adjustedPoint = frameView->rootFrameToContents(gestureEvent.position());
unsigned modifiers = gestureEvent.modifiers();
PlatformMouseEvent fakeMouseMove(gestureEvent.position(), gestureEvent.globalPosition(),
@@ -2272,7 +2272,7 @@ bool EventHandler::handleGestureTap(const GestureEventWithHitTestResults& target
LocalFrame* mainFrame = m_frame->localFrameRoot();
if (mainFrame && mainFrame->view())
mainFrame->view()->updateLayoutAndStyleIfNeededRecursive();
- adjustedPoint = frameView->windowToContents(gestureEvent.position());
+ adjustedPoint = frameView->rootFrameToContents(gestureEvent.position());
currentHitTest = hitTestResultInFrame(m_frame, adjustedPoint, hitType);
}
m_clickNode = currentHitTest.innerNode();
@@ -2299,7 +2299,7 @@ bool EventHandler::handleGestureTap(const GestureEventWithHitTestResults& target
LocalFrame* mainFrame = m_frame->localFrameRoot();
if (mainFrame && mainFrame->view())
mainFrame->view()->updateLayoutAndStyleIfNeededRecursive();
- adjustedPoint = frameView->windowToContents(gestureEvent.position());
+ adjustedPoint = frameView->rootFrameToContents(gestureEvent.position());
currentHitTest = hitTestResultInFrame(m_frame, adjustedPoint, hitType);
}
PlatformMouseEvent fakeMouseUp(gestureEvent.position(), gestureEvent.globalPosition(),
@@ -2330,7 +2330,8 @@ bool EventHandler::handleGestureTap(const GestureEventWithHitTestResults& target
if (!swallowed && tappedNode) {
bool domTreeChanged = preDispatchDomTreeVersion != m_frame->document()->domTreeVersion();
bool styleChanged = preDispatchStyleVersion != m_frame->document()->styleVersion();
- m_frame->chromeClient().showUnhandledTapUIIfNeeded(tappedPosition, tappedNode.get(), domTreeChanged || styleChanged);
+ IntPoint tappedPositionInViewport = m_frame->page()->frameHost().pinchViewport().rootFrameToViewport(tappedPosition);
+ m_frame->chromeClient().showUnhandledTapUIIfNeeded(tappedPositionInViewport, tappedNode.get(), domTreeChanged || styleChanged);
}
return swallowed;
}
@@ -2360,7 +2361,7 @@ bool EventHandler::handleGestureLongPress(const GestureEventWithHitTestResults&
MouseEventWithHitTestResults mev = prepareMouseEvent(request, mouseDragEvent);
m_mouseDownMayStartDrag = true;
dragState().m_dragSrc = nullptr;
- m_mouseDownPos = m_frame->view()->windowToContents(mouseDragEvent.position());
+ m_mouseDownPos = m_frame->view()->rootFrameToContents(mouseDragEvent.position());
RefPtrWillBeRawPtr<FrameView> protector(m_frame->view());
if (handleDrag(mev, DragInitiator::Touch)) {
m_longTapShouldInvokeContextMenu = true;
@@ -2373,7 +2374,7 @@ bool EventHandler::handleGestureLongPress(const GestureEventWithHitTestResults&
bool shouldLongPressSelectWord = m_frame->settings() && m_frame->settings()->touchEditingEnabled();
#endif
if (shouldLongPressSelectWord) {
- IntPoint hitTestPoint = m_frame->view()->windowToContents(gestureEvent.position());
+ IntPoint hitTestPoint = m_frame->view()->rootFrameToContents(gestureEvent.position());
HitTestResult result = hitTestResultAtPoint(hitTestPoint);
Node* innerNode = result.innerNode();
if (!result.isLiveLink() && innerNode && (innerNode->isContentEditable() || innerNode->isTextNode()
@@ -2405,7 +2406,7 @@ bool EventHandler::handleGestureLongTap(const GestureEventWithHitTestResults& ta
bool EventHandler::handleScrollGestureOnResizer(Node* eventTarget, const PlatformGestureEvent& gestureEvent) {
if (gestureEvent.type() == PlatformEvent::GestureScrollBegin) {
Layer* layer = eventTarget->renderer() ? eventTarget->renderer()->enclosingLayer() : nullptr;
- IntPoint p = m_frame->view()->windowToContents(gestureEvent.position());
+ IntPoint p = m_frame->view()->rootFrameToContents(gestureEvent.position());
if (layer && layer->scrollableArea() && layer->scrollableArea()->isPointInResizeControl(p, ResizerForTouch)) {
m_resizeScrollableArea = layer->scrollableArea();
m_resizeScrollableArea->setInResizeMode(true);
@@ -2600,8 +2601,8 @@ bool EventHandler::bestClickableNodeForHitTestResult(const HitTestResult& result
return false;
}
- IntPoint touchCenter = m_frame->view()->contentsToWindow(result.roundedPointInMainFrame());
- IntRect touchRect = m_frame->view()->contentsToWindow(result.hitTestLocation().boundingBox());
+ IntPoint touchCenter = m_frame->view()->contentsToRootFrame(result.roundedPointInMainFrame());
+ IntRect touchRect = m_frame->view()->contentsToRootFrame(result.hitTestLocation().boundingBox());
WillBeHeapVector<RefPtrWillBeMember<Node>, 11> nodes;
copyToVector(result.listBasedTestResult(), nodes);
@@ -2613,8 +2614,8 @@ bool EventHandler::bestClickableNodeForHitTestResult(const HitTestResult& result
bool EventHandler::bestContextMenuNodeForHitTestResult(const HitTestResult& result, IntPoint& targetPoint, Node*& targetNode)
{
ASSERT(result.isRectBasedTest());
- IntPoint touchCenter = m_frame->view()->contentsToWindow(result.roundedPointInMainFrame());
- IntRect touchRect = m_frame->view()->contentsToWindow(result.hitTestLocation().boundingBox());
+ IntPoint touchCenter = m_frame->view()->contentsToRootFrame(result.roundedPointInMainFrame());
+ IntRect touchRect = m_frame->view()->contentsToRootFrame(result.hitTestLocation().boundingBox());
WillBeHeapVector<RefPtrWillBeMember<Node>, 11> nodes;
copyToVector(result.listBasedTestResult(), nodes);
@@ -2627,7 +2628,7 @@ bool EventHandler::bestZoomableAreaForTouchPoint(const IntPoint& touchCenter, co
if (touchRadius.isEmpty())
return false;
- IntPoint hitTestPoint = m_frame->view()->windowToContents(touchCenter);
+ IntPoint hitTestPoint = m_frame->view()->rootFrameToContents(touchCenter);
HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::ListBased;
HitTestResult result = hitTestResultAtPoint(hitTestPoint, hitType, LayoutSize(touchRadius));
@@ -2684,7 +2685,7 @@ GestureEventWithHitTestResults EventHandler::hitTestResultForGestureEvent(const
// Perform the rect-based hit-test (or point-based if adjustment is disabled). Note that
// we don't yet apply hover/active state here because we need to resolve touch adjustment
// first so that we apply hover/active it to the final adjusted node.
- IntPoint hitTestPoint = m_frame->view()->windowToContents(gestureEvent.position());
+ IntPoint hitTestPoint = m_frame->view()->rootFrameToContents(gestureEvent.position());
LayoutSize padding;
if (shouldApplyTouchAdjustment(gestureEvent)) {
padding = LayoutSize(gestureEvent.area());
@@ -2708,7 +2709,7 @@ GestureEventWithHitTestResults EventHandler::hitTestResultForGestureEvent(const
LocalFrame* hitFrame = hitTestResult.innerNodeFrame();
if (!hitFrame)
hitFrame = m_frame;
- hitTestResult = hitTestResultInFrame(hitFrame, hitFrame->view()->windowToContents(adjustedEvent.position()), (hitType | HitTestRequest::ReadOnly) & ~HitTestRequest::ListBased);
+ hitTestResult = hitTestResultInFrame(hitFrame, hitFrame->view()->rootFrameToContents(adjustedEvent.position()), (hitType | HitTestRequest::ReadOnly) & ~HitTestRequest::ListBased);
}
// If we did a rect-based hit test it must be resolved to the best single node by now to
@@ -2773,7 +2774,7 @@ void EventHandler::applyTouchAdjustment(PlatformGestureEvent* gestureEvent, HitT
// Update the hit-test result to be a point-based result instead of a rect-based result.
// FIXME: We should do this even when no candidate matches the node filter. crbug.com/398914
if (adjusted) {
- hitTestResult->resolveRectBasedTest(adjustedNode, m_frame->view()->windowToContents(adjustedPoint));
+ hitTestResult->resolveRectBasedTest(adjustedNode, m_frame->view()->rootFrameToContents(adjustedPoint));
gestureEvent->applyTouchAdjustment(adjustedPoint);
}
}
@@ -2787,7 +2788,7 @@ bool EventHandler::sendContextMenuEvent(const PlatformMouseEvent& event)
// Clear mouse press state to avoid initiating a drag while context menu is up.
m_mousePressed = false;
- LayoutPoint viewportPos = v->windowToContents(event.position());
+ LayoutPoint viewportPos = v->rootFrameToContents(event.position());
HitTestRequest request(HitTestRequest::Active);
MouseEventWithHitTestResults mev = doc->prepareMouseEvent(request, viewportPos, event);
@@ -2840,12 +2841,12 @@ bool EventHandler::sendContextMenuEventForKey()
int x = rightAligned ? firstRect.maxX() : firstRect.x();
// In a multiline edit, firstRect.maxY() would endup on the next line, so -1.
int y = firstRect.maxY() ? firstRect.maxY() - 1 : 0;
- locationInViewport = view->contentsToWindow(IntPoint(x, y));
+ locationInViewport = view->contentsToViewport(IntPoint(x, y));
} else if (focusedElement) {
IntRect clippedRect = focusedElement->boundsInViewportSpace();
locationInViewport = IntPoint(clippedRect.center());
} else {
- // FIXME - Almost certainly wrong, this is not in viewport space. crbug.com/458682.
+ // FIXME - Almost certainly wrong, this is not in viewport space. crbug.com/458602.
locationInViewport = IntPoint(
rightAligned ? view->contentsWidth() - kContextMenuMargin : kContextMenuMargin,
kContextMenuMargin);
@@ -2941,7 +2942,7 @@ void EventHandler::dispatchFakeMouseMoveEventSoonInQuad(const FloatQuad& quad)
if (!view)
return;
- if (!quad.containsPoint(view->windowToContents(m_lastKnownMousePosition)))
+ if (!quad.containsPoint(view->rootFrameToContents(m_lastKnownMousePosition)))
return;
dispatchFakeMouseMoveEventSoon();
@@ -3007,7 +3008,7 @@ void EventHandler::hoverTimerFired(Timer<EventHandler>*)
if (LayoutView* renderer = m_frame->contentRenderer()) {
if (FrameView* view = m_frame->view()) {
HitTestRequest request(HitTestRequest::Move);
- HitTestResult result(view->windowToContents(m_lastKnownMousePosition));
+ HitTestResult result(view->rootFrameToContents(m_lastKnownMousePosition));
renderer->hitTest(request, result);
m_frame->document()->updateHoverActiveState(request, result.innerElement());
}
@@ -3187,12 +3188,12 @@ void EventHandler::defaultKeyboardEventHandler(KeyboardEvent* event)
}
}
-bool EventHandler::dragHysteresisExceeded(const IntPoint& dragViewportLocation) const
+bool EventHandler::dragHysteresisExceeded(const IntPoint& dragLocationInRootFrame) const
{
FrameView* view = m_frame->view();
if (!view)
return false;
- IntPoint dragLocation = view->windowToContents(dragViewportLocation);
+ IntPoint dragLocation = view->rootFrameToContents(dragLocationInRootFrame);
IntSize delta = dragLocation - m_mouseDownPos;
int threshold = GeneralDragHysteresis;
@@ -3611,12 +3612,12 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event)
// to hit-test on touchstart, and it can be read-only.
if (point.state() == PlatformTouchPoint::TouchPressed) {
HitTestRequest::HitTestRequestType hitType = HitTestRequest::TouchEvent | HitTestRequest::ReadOnly | HitTestRequest::Active;
- LayoutPoint pagePoint = roundedLayoutPoint(m_frame->view()->windowToContents(point.pos()));
+ LayoutPoint pagePoint = roundedLayoutPoint(m_frame->view()->rootFrameToContents(point.pos()));
HitTestResult result;
if (!m_touchSequenceDocument) {
result = hitTestResultAtPoint(pagePoint, hitType);
} else if (m_touchSequenceDocument->frame()) {
- LayoutPoint framePoint = roundedLayoutPoint(m_touchSequenceDocument->frame()->view()->windowToContents(point.pos()));
+ LayoutPoint framePoint = roundedLayoutPoint(m_touchSequenceDocument->frame()->view()->rootFrameToContents(point.pos()));
result = hitTestResultInFrame(m_touchSequenceDocument->frame(), framePoint, hitType);
} else
continue;
@@ -3734,9 +3735,8 @@ bool EventHandler::handleTouchEvent(const PlatformTouchEvent& event)
}
ASSERT(targetFrame);
- // pagePoint should always be relative to the target elements
- // containing frame.
- FloatPoint pagePoint = targetFrame->view()->windowToContents(point.pos());
+ // pagePoint should always be in the target element's document coordinates.
+ FloatPoint pagePoint = targetFrame->view()->rootFrameToContents(point.pos());
float scaleFactor = 1.0f / targetFrame->pageZoomFactor();
@@ -3853,7 +3853,7 @@ bool EventHandler::passMousePressEventToSubframe(MouseEventWithHitTestResults& m
// greyed out even though we're clicking on the selection. This looks
// really strange (having the whole frame be greyed out), so we deselect the
// selection.
- IntPoint p = m_frame->view()->windowToContents(mev.event().position());
+ IntPoint p = m_frame->view()->rootFrameToContents(mev.event().position());
if (m_frame->selection().contains(p)) {
VisiblePosition visiblePos(
mev.innerNode()->renderer()->positionForPoint(mev.localPoint()));

Powered by Google App Engine
This is Rietveld 408576698