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

Unified Diff: third_party/WebKit/Source/web/WebInputEventConversion.cpp

Issue 1486743002: Clean up some remaining obsolete coordinate-space naming. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed Mac compile Created 5 years 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: third_party/WebKit/Source/web/WebInputEventConversion.cpp
diff --git a/third_party/WebKit/Source/web/WebInputEventConversion.cpp b/third_party/WebKit/Source/web/WebInputEventConversion.cpp
index 4f899814cbb9b84ce83f9ad143be513cc0d4bdfa..547a598111bd370a9c6dd27add8f1f0def382a93 100644
--- a/third_party/WebKit/Source/web/WebInputEventConversion.cpp
+++ b/third_party/WebKit/Source/web/WebInputEventConversion.cpp
@@ -66,7 +66,12 @@ static FloatSize scaleSizeToWindow(const Widget* widget, FloatSize size)
return FloatSize(scaleDeltaToWindow(widget, size.width()), scaleDeltaToWindow(widget, size.height()));
}
-static FloatPoint convertHitPointToWindow(const Widget* widget, FloatPoint point)
+// This method converts from the renderer's coordinate space into Blink's root frame coordinate space.
+// It's somewhat unique in that it takes into account DevTools emulation, which applies a scale and offset
+// in the root layer (see updateRootLayerTransform in WebViewImpl) as well as the overscroll effect on OSX.
+// This is in addition to the visual viewport "pinch-zoom" transformation and is one of the few cases where
+// the visual viewport is not equal to the renderer's coordinate-space.
+static FloatPoint convertHitPointToRootFrame(const Widget* widget, FloatPoint pointInRendererViewport)
{
float scale = 1;
IntSize offset;
@@ -82,8 +87,8 @@ static FloatPoint convertHitPointToWindow(const Widget* widget, FloatPoint point
}
}
return FloatPoint(
- (point.x() - offset.width()) / scale + visualViewport.x() + overscrollOffset.width(),
- (point.y() - offset.height()) / scale + visualViewport.y() + overscrollOffset.height());
+ (pointInRendererViewport.x() - offset.width()) / scale + visualViewport.x() + overscrollOffset.width(),
+ (pointInRendererViewport.y() - offset.height()) / scale + visualViewport.y() + overscrollOffset.height());
}
static unsigned toPlatformModifierFrom(WebMouseEvent::Button button)
@@ -107,7 +112,7 @@ PlatformMouseEventBuilder::PlatformMouseEventBuilder(Widget* widget, const WebMo
{
// FIXME: Widget is always toplevel, unless it's a popup. We may be able
// to get rid of this once we abstract popups into a WebKit API.
- m_position = widget->convertFromContainingWindow(flooredIntPoint(convertHitPointToWindow(widget, IntPoint(e.x, e.y))));
+ m_position = widget->convertFromRootFrame(flooredIntPoint(convertHitPointToRootFrame(widget, IntPoint(e.x, e.y))));
m_globalPosition = IntPoint(e.globalX, e.globalY);
m_movementDelta = IntPoint(scaleDeltaToWindow(widget, e.movementX), scaleDeltaToWindow(widget, e.movementY));
m_button = static_cast<MouseButton>(e.button);
@@ -147,7 +152,7 @@ PlatformMouseEventBuilder::PlatformMouseEventBuilder(Widget* widget, const WebMo
PlatformWheelEventBuilder::PlatformWheelEventBuilder(Widget* widget, const WebMouseWheelEvent& e)
{
- m_position = widget->convertFromContainingWindow(flooredIntPoint(convertHitPointToWindow(widget, FloatPoint(e.x, e.y))));
+ m_position = widget->convertFromRootFrame(flooredIntPoint(convertHitPointToRootFrame(widget, FloatPoint(e.x, e.y))));
m_globalPosition = IntPoint(e.globalX, e.globalY);
m_deltaX = e.deltaX;
m_deltaY = e.deltaY;
@@ -253,7 +258,7 @@ PlatformGestureEventBuilder::PlatformGestureEventBuilder(Widget* widget, const W
default:
ASSERT_NOT_REACHED();
}
- m_position = widget->convertFromContainingWindow(flooredIntPoint(convertHitPointToWindow(widget, FloatPoint(e.x, e.y))));
+ m_position = widget->convertFromRootFrame(flooredIntPoint(convertHitPointToRootFrame(widget, FloatPoint(e.x, e.y))));
m_globalPosition = IntPoint(e.globalX, e.globalY);
m_timestamp = e.timeStampSeconds;
m_modifiers = e.modifiers;
@@ -391,10 +396,10 @@ PlatformTouchPointBuilder::PlatformTouchPointBuilder(Widget* widget, const WebTo
m_pointerProperties = point;
m_state = toPlatformTouchPointState(point.state);
- // This assumes convertFromContainingWindow does only translations, not scales.
- FloatPoint floatPos = convertHitPointToWindow(widget, point.position);
+ // This assumes convertFromRootFrame does only translations, not scales.
+ FloatPoint floatPos = convertHitPointToRootFrame(widget, point.position);
IntPoint flooredPoint = flooredIntPoint(floatPos);
- m_pos = widget->convertFromContainingWindow(flooredPoint) + (floatPos - flooredPoint);
+ m_pos = widget->convertFromRootFrame(flooredPoint) + (floatPos - flooredPoint);
m_screenPos = FloatPoint(point.screenPosition.x, point.screenPosition.y);
m_radius = scaleSizeToWindow(widget, FloatSize(point.radiusX, point.radiusY));
@@ -432,7 +437,7 @@ static void updateWebMouseEventFromCoreMouseEvent(const MouseRelatedEvent& event
webEvent.modifiers = event.modifiers();
FrameView* view = widget ? toFrameView(widget->parent()) : 0;
- // FIXME: If view == nullptr, pointInRootFrame will really be pointInRootContent.
+ // TODO(bokan): If view == nullptr, pointInRootFrame will really be pointInRootContent.
IntPoint pointInRootFrame = IntPoint(event.absoluteLocation().x(), event.absoluteLocation().y());
if (view)
pointInRootFrame = view->contentsToRootFrame(pointInRootFrame);
« no previous file with comments | « third_party/WebKit/Source/web/ValidationMessageClientImpl.cpp ('k') | third_party/WebKit/public/web/WebInputEvent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698