| 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 2ff804ebb0cef02fe89bcd33c78e41db630d25b3..17c1bcb6fd2f29748fa24f248b03bdc64562e861 100644
|
| --- a/third_party/WebKit/Source/web/WebViewImpl.cpp
|
| +++ b/third_party/WebKit/Source/web/WebViewImpl.cpp
|
| @@ -412,6 +412,8 @@ WebViewImpl::WebViewImpl(WebViewClient* client)
|
| , m_zoomLevel(0)
|
| , m_minimumZoomLevel(zoomFactorToZoomLevel(minTextSizeMultiplier))
|
| , m_maximumZoomLevel(zoomFactorToZoomLevel(maxTextSizeMultiplier))
|
| + , m_zoomFactorForDeviceScaleFactor(1.f)
|
| + , m_useZoomForDeviceScaleFactor(false)
|
| , m_maximumLegibleScale(1)
|
| , m_doubleTapZoomPageScaleFactor(0)
|
| , m_doubleTapZoomPending(false)
|
| @@ -2958,6 +2960,7 @@ double WebViewImpl::setZoomLevel(double zoomLevel)
|
| LocalFrame* frame = mainFrameImpl()->frame();
|
| if (!WebLocalFrameImpl::pluginContainerFromFrame(frame)) {
|
| float zoomFactor = m_zoomFactorOverride ? m_zoomFactorOverride : static_cast<float>(zoomLevelToZoomFactor(m_zoomLevel));
|
| + zoomFactor *= m_zoomFactorForDeviceScaleFactor;
|
| frame->setPageZoomFactor(zoomFactor);
|
| }
|
|
|
| @@ -3094,13 +3097,26 @@ float WebViewImpl::deviceScaleFactor() const
|
|
|
| void WebViewImpl::setDeviceScaleFactor(float scaleFactor)
|
| {
|
| - if (!page())
|
| - return;
|
| + if (m_useZoomForDeviceScaleFactor) {
|
| + if (!m_layerTreeView || m_zoomFactorForDeviceScaleFactor == scaleFactor)
|
| + return;
|
| + m_zoomFactorForDeviceScaleFactor = scaleFactor;
|
| + setZoomLevel(m_zoomLevel);
|
| + } else {
|
| + if (!page())
|
| + return;
|
|
|
| - page()->setDeviceScaleFactor(scaleFactor);
|
| + page()->setDeviceScaleFactor(scaleFactor);
|
|
|
| - if (m_layerTreeView)
|
| - updateLayerTreeDeviceScaleFactor();
|
| + if (!m_layerTreeView)
|
| + return;
|
| + }
|
| + updateLayerTreeDeviceScaleFactor();
|
| +}
|
| +
|
| +void WebViewImpl::enableUseZoomForDeviceScaleFactor()
|
| +{
|
| + m_useZoomForDeviceScaleFactor = true;
|
| }
|
|
|
| void WebViewImpl::setDeviceColorProfile(const WebVector<char>& colorProfile)
|
|
|