| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 1819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1830 } | 1830 } |
| 1831 | 1831 |
| 1832 void WebViewImpl::resizeVisualViewport(const WebSize& newSize) | 1832 void WebViewImpl::resizeVisualViewport(const WebSize& newSize) |
| 1833 { | 1833 { |
| 1834 page()->frameHost().visualViewport().setSize(newSize); | 1834 page()->frameHost().visualViewport().setSize(newSize); |
| 1835 page()->frameHost().visualViewport().clampToBoundaries(); | 1835 page()->frameHost().visualViewport().clampToBoundaries(); |
| 1836 } | 1836 } |
| 1837 | 1837 |
| 1838 void WebViewImpl::performResize() | 1838 void WebViewImpl::performResize() |
| 1839 { | 1839 { |
| 1840 pageScaleConstraintsSet().didChangeViewSize(m_size); | 1840 // We'll keep the initial containing block size from changing when the top |
| 1841 // controls hide so that the ICB will always be the same size as the |
| 1842 // viewport with the top controls shown. |
| 1843 IntSize ICBSize = m_size; |
| 1844 if (!topControls().shrinkViewport()) |
| 1845 ICBSize.expand(0, -topControls().height()); |
| 1846 |
| 1847 pageScaleConstraintsSet().didChangeInitialContainingBlockSize(ICBSize); |
| 1841 | 1848 |
| 1842 updatePageDefinedViewportConstraints(mainFrameImpl()->frame()->document()->v
iewportDescription()); | 1849 updatePageDefinedViewportConstraints(mainFrameImpl()->frame()->document()->v
iewportDescription()); |
| 1843 updateMainFrameLayoutSize(); | 1850 updateMainFrameLayoutSize(); |
| 1844 | 1851 |
| 1845 page()->frameHost().visualViewport().setSize(m_size); | 1852 page()->frameHost().visualViewport().setSize(m_size); |
| 1846 | 1853 |
| 1847 if (mainFrameImpl()->frameView()) { | 1854 if (mainFrameImpl()->frameView()) { |
| 1848 if (!mainFrameImpl()->frameView()->needsLayout()) | 1855 if (!mainFrameImpl()->frameView()->needsLayout()) |
| 1849 postLayoutResize(mainFrameImpl()); | 1856 postLayoutResize(mainFrameImpl()); |
| 1850 } | 1857 } |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1911 { | 1918 { |
| 1912 if (m_shouldAutoResize || m_size == newSize) | 1919 if (m_shouldAutoResize || m_size == newSize) |
| 1913 return; | 1920 return; |
| 1914 | 1921 |
| 1915 if (page()->mainFrame() && !page()->mainFrame()->isLocalFrame()) { | 1922 if (page()->mainFrame() && !page()->mainFrame()->isLocalFrame()) { |
| 1916 // Viewport resize for a remote main frame does not require any | 1923 // Viewport resize for a remote main frame does not require any |
| 1917 // particular action, but the state needs to reflect the correct size | 1924 // particular action, but the state needs to reflect the correct size |
| 1918 // so that it can be used for initalization if the main frame gets | 1925 // so that it can be used for initalization if the main frame gets |
| 1919 // swapped to a LocalFrame at a later time. | 1926 // swapped to a LocalFrame at a later time. |
| 1920 m_size = newSize; | 1927 m_size = newSize; |
| 1921 pageScaleConstraintsSet().didChangeViewSize(m_size); | 1928 pageScaleConstraintsSet().didChangeInitialContainingBlockSize(m_size); |
| 1922 page()->frameHost().visualViewport().setSize(m_size); | 1929 page()->frameHost().visualViewport().setSize(m_size); |
| 1923 return; | 1930 return; |
| 1924 } | 1931 } |
| 1925 | 1932 |
| 1926 WebLocalFrameImpl* mainFrame = mainFrameImpl(); | 1933 WebLocalFrameImpl* mainFrame = mainFrameImpl(); |
| 1927 if (!mainFrame) | 1934 if (!mainFrame) |
| 1928 return; | 1935 return; |
| 1929 | 1936 |
| 1930 FrameView* view = mainFrame->frameView(); | 1937 FrameView* view = mainFrame->frameView(); |
| 1931 if (!view) | 1938 if (!view) |
| (...skipping 1358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3290 constraints.maximumScale = pageScaleConstraintsSet().defaultConstraints(
).maximumScale; | 3297 constraints.maximumScale = pageScaleConstraintsSet().defaultConstraints(
).maximumScale; |
| 3291 } else { | 3298 } else { |
| 3292 constraints.minimumScale = -1; | 3299 constraints.minimumScale = -1; |
| 3293 constraints.maximumScale = -1; | 3300 constraints.maximumScale = -1; |
| 3294 } | 3301 } |
| 3295 page()->frameHost().setUserAgentPageScaleConstraints(constraints); | 3302 page()->frameHost().setUserAgentPageScaleConstraints(constraints); |
| 3296 } | 3303 } |
| 3297 | 3304 |
| 3298 IntSize WebViewImpl::mainFrameSize() | 3305 IntSize WebViewImpl::mainFrameSize() |
| 3299 { | 3306 { |
| 3300 return pageScaleConstraintsSet().mainFrameSize(); | 3307 // The frame size should match the viewport size at minimum scale, since the |
| 3308 // viewport must always be contained by the frame. |
| 3309 FloatSize frameSize(m_size); |
| 3310 frameSize.scale(1 / minimumPageScaleFactor()); |
| 3311 return expandedIntSize(frameSize); |
| 3301 } | 3312 } |
| 3302 | 3313 |
| 3303 PageScaleConstraintsSet& WebViewImpl::pageScaleConstraintsSet() const | 3314 PageScaleConstraintsSet& WebViewImpl::pageScaleConstraintsSet() const |
| 3304 { | 3315 { |
| 3305 return page()->frameHost().pageScaleConstraintsSet(); | 3316 return page()->frameHost().pageScaleConstraintsSet(); |
| 3306 } | 3317 } |
| 3307 | 3318 |
| 3308 void WebViewImpl::refreshPageScaleFactorAfterLayout() | 3319 void WebViewImpl::refreshPageScaleFactorAfterLayout() |
| 3309 { | 3320 { |
| 3310 if (!mainFrame() || !page() || !page()->mainFrame() || !page()->mainFrame()-
>isLocalFrame() || !page()->deprecatedLocalMainFrame()->view()) | 3321 if (!mainFrame() || !page() || !page()->mainFrame() || !page()->mainFrame()-
>isLocalFrame() || !page()->deprecatedLocalMainFrame()->view()) |
| (...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4093 LocalFrame* frame = webframe->frame(); | 4104 LocalFrame* frame = webframe->frame(); |
| 4094 if (!m_client || !frame->isLocalRoot()) | 4105 if (!m_client || !frame->isLocalRoot()) |
| 4095 return; | 4106 return; |
| 4096 | 4107 |
| 4097 if (m_shouldAutoResize) { | 4108 if (m_shouldAutoResize) { |
| 4098 WebSize frameSize = frame->view()->frameRect().size(); | 4109 WebSize frameSize = frame->view()->frameRect().size(); |
| 4099 if (frameSize != m_size) { | 4110 if (frameSize != m_size) { |
| 4100 m_size = frameSize; | 4111 m_size = frameSize; |
| 4101 | 4112 |
| 4102 page()->frameHost().visualViewport().setSize(m_size); | 4113 page()->frameHost().visualViewport().setSize(m_size); |
| 4103 pageScaleConstraintsSet().didChangeViewSize(m_size); | 4114 pageScaleConstraintsSet().didChangeInitialContainingBlockSize(m_size
); |
| 4104 | 4115 |
| 4105 m_client->didAutoResize(m_size); | 4116 m_client->didAutoResize(m_size); |
| 4106 sendResizeEventAndRepaint(); | 4117 sendResizeEventAndRepaint(); |
| 4107 } | 4118 } |
| 4108 } | 4119 } |
| 4109 | 4120 |
| 4110 if (pageScaleConstraintsSet().constraintsDirty()) | 4121 if (pageScaleConstraintsSet().constraintsDirty()) |
| 4111 refreshPageScaleFactorAfterLayout(); | 4122 refreshPageScaleFactorAfterLayout(); |
| 4112 | 4123 |
| 4113 FrameView* view = webframe->frame()->view(); | 4124 FrameView* view = webframe->frame()->view(); |
| (...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4628 { | 4639 { |
| 4629 // TODO(oshima): Investigate if this should return the ScreenInfo's scale fa
ctor rather than | 4640 // TODO(oshima): Investigate if this should return the ScreenInfo's scale fa
ctor rather than |
| 4630 // page's scale factor, which can be 1 in use-zoom-for-dsf mode. | 4641 // page's scale factor, which can be 1 in use-zoom-for-dsf mode. |
| 4631 if (!page()) | 4642 if (!page()) |
| 4632 return 1; | 4643 return 1; |
| 4633 | 4644 |
| 4634 return page()->deviceScaleFactor(); | 4645 return page()->deviceScaleFactor(); |
| 4635 } | 4646 } |
| 4636 | 4647 |
| 4637 } // namespace blink | 4648 } // namespace blink |
| OLD | NEW |