static FloatPoint convertHitPointToWindow(const Widget* widget, FloatPoint point) { float scale = 1; IntSize offset; IntPoint pinchViewport; FloatSize overscrollOffset; if (widget) { FrameView* rootView = toFrameView(widget->root()); if (rootView) { scale = rootView->inputEventsScaleFactor(); offset = rootView->inputEventsOffsetForEmulation(); pinchViewport = flooredIntPoint(rootView->page()->frameHost().pinchViewport().visibleRect().location()); overscrollOffset = rootView->elasticOverscroll(); } } return FloatPoint( (point.x() - offset.width()) / scale + pinchViewport.x() + overscrollOffset.width(), (point.y() - offset.height()) / scale + pinchViewport.y() + overscrollOffset.height()); }