Index: third_party/WebKit/Source/web/WebViewImpl.cpp |
diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp |
index 7c61e20f38e560ef3a9b1c10dd0067fde3d705e1..0f08aa97e4c6c89b8a4af25b5475bcaf3fe8f566 100644 |
--- a/third_party/WebKit/Source/web/WebViewImpl.cpp |
+++ b/third_party/WebKit/Source/web/WebViewImpl.cpp |
@@ -110,6 +110,7 @@ |
#include "platform/UserGestureIndicator.h" |
#include "platform/exported/WebActiveGestureAnimation.h" |
#include "platform/fonts/FontCache.h" |
+#include "platform/geometry/FloatRect.h" |
#include "platform/graphics/Color.h" |
#include "platform/graphics/CompositorMutatorClient.h" |
#include "platform/graphics/FirstPaintInvalidationTracking.h" |
@@ -420,7 +421,6 @@ WebViewImpl::WebViewImpl(WebViewClient* client, WebPageVisibilityState visibilit |
, m_doingDragAndDrop(false) |
, m_ignoreInputEvents(false) |
, m_compositorDeviceScaleFactorOverride(0) |
- , m_rootLayerScale(1) |
, m_suppressNextKeypressEvent(false) |
, m_imeAcceptEvents(true) |
, m_operationsAllowed(WebDragOperationNone) |
@@ -3844,17 +3844,19 @@ void WebViewImpl::setCompositorDeviceScaleFactorOverride(float deviceScaleFactor |
updateLayerTreeDeviceScaleFactor(); |
} |
-void WebViewImpl::setRootLayerTransform(const WebSize& rootLayerOffset, float rootLayerScale) |
+void WebViewImpl::setRootLayerTransform(const TransformationMatrix& transform) |
{ |
- if (m_rootLayerScale == rootLayerScale && m_rootLayerOffset == rootLayerOffset) |
+ if (transform == m_rootLayerTransform) |
return; |
- m_rootLayerScale = rootLayerScale; |
- m_rootLayerOffset = rootLayerOffset; |
- if (mainFrameImpl()) |
- mainFrameImpl()->setInputEventsTransformForEmulation(m_rootLayerOffset, m_rootLayerScale); |
+ m_rootLayerTransform = transform; |
updateRootLayerTransform(); |
} |
+TransformationMatrix WebViewImpl::getRootLayerTransformForTesting() const |
+{ |
+ return m_rootLayerTransform; |
+} |
+ |
void WebViewImpl::enableDeviceEmulation(const WebDeviceEmulationParams& params) |
{ |
m_devToolsEmulator->enableDeviceEmulation(params); |
@@ -4090,6 +4092,12 @@ void WebViewImpl::pageScaleFactorChanged() |
pageScaleConstraintsSet().setNeedsReset(false); |
updateLayerTreeViewport(); |
m_client->pageScaleFactorChanged(); |
+ m_devToolsEmulator->mainFrameScrollOrScaleChanged(); |
+} |
+ |
+void WebViewImpl::mainFrameScrollOffsetChanged() |
+{ |
+ m_devToolsEmulator->mainFrameScrollOrScaleChanged(); |
} |
bool WebViewImpl::useExternalPopupMenus() |
@@ -4422,12 +4430,8 @@ void WebViewImpl::updateLayerTreeDeviceScaleFactor() |
void WebViewImpl::updateRootLayerTransform() |
{ |
- if (m_visualViewportContainerLayer) { |
- TransformationMatrix transform; |
- transform.translate(m_rootLayerOffset.width, m_rootLayerOffset.height); |
- transform = transform.scale(m_rootLayerScale); |
- m_visualViewportContainerLayer->setTransform(transform); |
- } |
+ if (m_visualViewportContainerLayer) |
+ m_visualViewportContainerLayer->setTransform(m_rootLayerTransform); |
} |
bool WebViewImpl::detectContentOnTouch(const GestureEventWithHitTestResults& targetedEvent) |
@@ -4592,6 +4596,13 @@ float WebViewImpl::deviceScaleFactor() const |
return page()->deviceScaleFactor(); |
} |
+float WebViewImpl::compositorDeviceScaleFactor() const |
+{ |
+ if (m_compositorDeviceScaleFactorOverride) |
+ return m_compositorDeviceScaleFactorOverride; |
+ return deviceScaleFactor(); |
+} |
+ |
LocalFrame* WebViewImpl::focusedLocalFrameInWidget() const |
{ |
if (!mainFrameImpl()) |