Index: third_party/WebKit/Source/web/InspectorOverlay.cpp |
diff --git a/third_party/WebKit/Source/web/InspectorOverlay.cpp b/third_party/WebKit/Source/web/InspectorOverlay.cpp |
index f88ab50db708e304dce64fbf1084590997741fad..af5adaba60c4d31c3dd4b7531d5a7cccfb2c7541 100644 |
--- a/third_party/WebKit/Source/web/InspectorOverlay.cpp |
+++ b/third_party/WebKit/Source/web/InspectorOverlay.cpp |
@@ -385,8 +385,12 @@ void InspectorOverlay::rebuildOverlayPage() |
IntRect visibleRectInDocument = view->getScrollableArea()->visibleContentRect(); |
IntSize viewportSize = m_webViewImpl->page()->frameHost().visualViewport().size(); |
- toLocalFrame(overlayPage()->mainFrame())->view()->resize(viewportSize); |
+ LocalFrame* frame = toLocalFrame(overlayPage()->mainFrame()); |
+ frame->view()->resize(viewportSize); |
overlayPage()->frameHost().visualViewport().setSize(viewportSize); |
+ float windowToViewportScale = m_webViewImpl->chromeClient().windowToViewportScalar(1.0f); |
+ frame->setPageZoomFactor(windowToViewportScale); |
+ |
reset(viewportSize, visibleRectInDocument.location()); |
drawNodeHighlight(); |
@@ -532,8 +536,16 @@ void InspectorOverlay::reset(const IntSize& viewportSize, const IntPoint& docume |
std::unique_ptr<protocol::DictionaryValue> resetData = protocol::DictionaryValue::create(); |
resetData->setNumber("deviceScaleFactor", m_webViewImpl->page()->deviceScaleFactor()); |
resetData->setNumber("pageScaleFactor", m_webViewImpl->page()->pageScaleFactor()); |
- resetData->setObject("viewportSize", buildObjectForSize(viewportSize)); |
- resetData->setNumber("pageZoomFactor", m_webViewImpl->mainFrameImpl()->frame()->pageZoomFactor()); |
+ |
+ IntRect viewportInScreen = m_webViewImpl->chromeClient().viewportToScreen( |
+ IntRect(IntPoint(), viewportSize), m_webViewImpl->mainFrameImpl()->frame()->view()); |
+ resetData->setObject("viewportSize", buildObjectForSize(viewportInScreen.size())); |
+ |
+ // The zoom factor in the overlay frame already has been multiplied by the window to viewport scale |
+ // (aka device scale factor), so cancel it. |
+ float windowToViewportScale = m_webViewImpl->chromeClient().windowToViewportScalar(1.0f); |
+ resetData->setNumber("pageZoomFactor", m_webViewImpl->mainFrameImpl()->frame()->pageZoomFactor() / windowToViewportScale); |
+ |
resetData->setNumber("scrollX", documentScrollOffset.x()); |
resetData->setNumber("scrollY", documentScrollOffset.y()); |
evaluateInOverlay("reset", std::move(resetData)); |