Chromium Code Reviews| Index: Source/web/WebViewImpl.cpp |
| diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp |
| index ed67d3c13a51a80ff78c4f222a4cc9401e4a4ea7..95d534df922d3afb4f64f6f8e8bd8c835b4762fd 100644 |
| --- a/Source/web/WebViewImpl.cpp |
| +++ b/Source/web/WebViewImpl.cpp |
| @@ -414,6 +414,7 @@ WebViewImpl::WebViewImpl(WebViewClient* client) |
| , m_zoomFactorOverride(0) |
| , m_userGestureObserved(false) |
| , m_topControlsContentOffset(0) |
| + , m_topControlsLayoutHeight(0) |
| { |
| Page::PageClients pageClients; |
| pageClients.chromeClient = &m_chromeClientImpl; |
| @@ -1666,6 +1667,26 @@ void WebViewImpl::setTopControlsContentOffset(float offset) |
| { |
| m_topControlsContentOffset = offset; |
| m_layerTreeView->setTopControlsContentOffset(offset); |
| + didUpdateTopControls(); |
| +} |
| + |
| +void WebViewImpl::setTopControlsLayoutHeight(float height) |
| +{ |
| + m_topControlsLayoutHeight = height; |
| + didUpdateTopControls(); |
| +} |
| + |
| +void WebViewImpl::didUpdateTopControls() |
| +{ |
| + FrameView* view = localFrameRootTemporary()->frameView(); |
| + if (!view) |
| + return; |
| + |
| + // The viewport bounds were adjusted on the compositor by this much due to top controls. Tell |
| + // the FrameView about it so it can make correct scroll offset clamping decisions during compositor |
| + // commits. |
| + float topControlsViewportAdjustment = m_topControlsContentOffset - m_topControlsLayoutHeight; |
| + view->setTopControlsViewportAdjustment(topControlsViewportAdjustment); |
|
bokan
2014/09/09 23:14:19
There's also a Chromium-side patch that just calls
aelias_OOO_until_Jul13
2014/09/10 01:57:29
If you prefer, you could also avoid the third patc
bokan
2014/09/10 13:51:52
One liners like that are easy enough to land + I'd
aelias_OOO_until_Jul13
2014/09/10 15:51:45
Yes, feel free to TBR that and mention I preapprov
|
| } |
| void WebViewImpl::resize(const WebSize& newSize) |