| Index: Source/web/WebViewImpl.cpp
|
| diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp
|
| index 9d314fb083d8c013b0979c995412fab2c297abae..c4553267a604f402441d7979295d69c9399c70b8 100644
|
| --- a/Source/web/WebViewImpl.cpp
|
| +++ b/Source/web/WebViewImpl.cpp
|
| @@ -1693,6 +1693,11 @@
|
| if (pinchVirtualViewportEnabled())
|
| page()->frameHost().pinchViewport().setSize(m_size);
|
|
|
| + if (mainFrameImpl()->frameView()) {
|
| + if (!mainFrameImpl()->frameView()->needsLayout())
|
| + postLayoutResize(mainFrameImpl());
|
| + }
|
| +
|
| // When device emulation is enabled, device size values may change - they are
|
| // usually set equal to the view size. These values are not considered viewport-dependent
|
| // (see MediaQueryExp::isViewportDependent), since they are only viewport-dependent in emulation mode,
|
| @@ -4013,33 +4018,9 @@
|
| }
|
| }
|
|
|
| -void WebViewImpl::layoutUpdated(WebLocalFrameImpl* webframe)
|
| -{
|
| - if (!m_client || !webframe->frame()->isLocalRoot())
|
| - return;
|
| -
|
| - // If we finished a layout while in deferred commit mode,
|
| - // that means it's time to start producing frames again so un-defer.
|
| - resumeTreeViewCommits();
|
| -
|
| - if (m_shouldAutoResize && webframe->frame() && webframe->frame()->view()) {
|
| - WebSize frameSize = webframe->frame()->view()->frameRect().size();
|
| - if (frameSize != m_size) {
|
| - m_size = frameSize;
|
| -
|
| - page()->frameHost().pinchViewport().setSize(m_size);
|
| - m_pageScaleConstraintsSet.didChangeViewSize(m_size);
|
| -
|
| - m_client->didAutoResize(m_size);
|
| - sendResizeEventAndRepaint();
|
| - }
|
| - }
|
| -
|
| - if (m_pageScaleConstraintsSet.constraintsDirty())
|
| - refreshPageScaleFactorAfterLayout();
|
| -
|
| +void WebViewImpl::postLayoutResize(WebLocalFrameImpl* webframe)
|
| +{
|
| FrameView* view = webframe->frame()->view();
|
| -
|
| if (pinchVirtualViewportEnabled()) {
|
| if (webframe == mainFrame()) {
|
| view->resize(mainFrameSize());
|
| @@ -4047,6 +4028,36 @@
|
| view->resize(webframe->frameView()->layoutSize());
|
| }
|
| }
|
| +}
|
| +
|
| +void WebViewImpl::layoutUpdated(WebLocalFrameImpl* webframe)
|
| +{
|
| + if (!m_client || !webframe->frame()->isLocalRoot())
|
| + return;
|
| +
|
| + // If we finished a layout while in deferred commit mode,
|
| + // that means it's time to start producing frames again so un-defer.
|
| + resumeTreeViewCommits();
|
| +
|
| + if (m_shouldAutoResize && webframe->frame() && webframe->frame()->view()) {
|
| + WebSize frameSize = webframe->frame()->view()->frameRect().size();
|
| + if (frameSize != m_size) {
|
| + m_size = frameSize;
|
| +
|
| + page()->frameHost().pinchViewport().setSize(m_size);
|
| + m_pageScaleConstraintsSet.didChangeViewSize(m_size);
|
| +
|
| + m_client->didAutoResize(m_size);
|
| + sendResizeEventAndRepaint();
|
| + }
|
| + }
|
| +
|
| + if (m_pageScaleConstraintsSet.constraintsDirty())
|
| + refreshPageScaleFactorAfterLayout();
|
| +
|
| + FrameView* view = webframe->frame()->view();
|
| +
|
| + postLayoutResize(webframe);
|
|
|
| // Relayout immediately to avoid violating the rule that needsLayout()
|
| // isn't set at the end of a layout.
|
|
|