Chromium Code Reviews| 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 1e934d3b35189dd9d76e59e395aa91550e70f2e3..139ba8e28736f3c397188ac24cccdce3679acc45 100644 |
| --- a/third_party/WebKit/Source/web/WebViewImpl.cpp |
| +++ b/third_party/WebKit/Source/web/WebViewImpl.cpp |
| @@ -3050,22 +3050,18 @@ double WebViewImpl::zoomLevel() |
| return m_zoomLevel; |
| } |
| -double WebViewImpl::setZoomLevel(double zoomLevel) |
| +void WebViewImpl::propagateZoomToLocalFrameRoots(Frame* frame) |
| { |
| - if (zoomLevel < m_minimumZoomLevel) |
| - m_zoomLevel = m_minimumZoomLevel; |
| - else if (zoomLevel > m_maximumZoomLevel) |
| - m_zoomLevel = m_maximumZoomLevel; |
| - else |
| - m_zoomLevel = zoomLevel; |
| + if (frame->isRemoteFrame()) { |
| + for (Frame* child = frame->tree().firstChild(); child; child = child->tree().nextSibling()) |
| + propagateZoomToLocalFrameRoots(child); |
|
alexmos
2016/04/07 23:48:08
Hmm, what if you have a A-B-A scenario, and you se
wjmaclean
2016/04/08 20:13:29
The Zoom update will be sent to both A's and B's p
|
| + return; |
| + } |
| - // TODO(nasko): Setting zoom level needs to be refactored to support |
| - // out-of-process iframes. See https://crbug.com/528407. |
| - if (mainFrame()->isWebRemoteFrame()) |
| - return m_zoomLevel; |
| + ASSERT(frame->isLocalRoot()); |
|
bokan
2016/04/07 22:57:12
Blink recently switched ASSERTs to DCHECKs.
wjmaclean
2016/04/08 20:13:29
Done.
|
| + LocalFrame* localFrame = toLocalFrame(frame); |
| - LocalFrame* frame = mainFrameImpl()->frame(); |
| - if (!WebLocalFrameImpl::pluginContainerFromFrame(frame)) { |
| + if (!WebLocalFrameImpl::pluginContainerFromFrame(localFrame)) { |
| float zoomFactor = m_zoomFactorOverride ? m_zoomFactorOverride : static_cast<float>(zoomLevelToZoomFactor(m_zoomLevel)); |
| if (m_zoomFactorForDeviceScaleFactor) { |
| if (m_compositorDeviceScaleFactorOverride) { |
| @@ -3077,8 +3073,20 @@ double WebViewImpl::setZoomLevel(double zoomLevel) |
| zoomFactor *= m_zoomFactorForDeviceScaleFactor; |
| } |
| } |
| - frame->setPageZoomFactor(zoomFactor); |
| + localFrame->setPageZoomFactor(zoomFactor); |
| } |
| +} |
| + |
| +double WebViewImpl::setZoomLevel(double zoomLevel) |
| +{ |
| + if (zoomLevel < m_minimumZoomLevel) |
| + m_zoomLevel = m_minimumZoomLevel; |
| + else if (zoomLevel > m_maximumZoomLevel) |
| + m_zoomLevel = m_maximumZoomLevel; |
| + else |
| + m_zoomLevel = zoomLevel; |
| + |
| + propagateZoomToLocalFrameRoots(m_page->mainFrame()); |
| return m_zoomLevel; |
| } |