-
simon.fraser@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=121714 <rdar://problem/15042478> Reviewed by Beth Dakin. After r155660, we don't do any additional layouts when scrollbars are added or removed. That caused us to not enter the code that creates or destroys composting layers for scrollbars in RenderLayerCompositor, resulting in missing scrollbars. Fix by having ScrollView::updateScrollbars() call addedOrRemovedScrollbar() when a scrollbar was added or removed, which is overridden in FrameView to call through to RenderLayerCompositor::frameViewDidAddOrRemoveScrollbars(). Not testable since scrollbar layers aren't contained in layer tree dumps (to reduce diffs between platforms). * page/FrameView.cpp: (WebCore::FrameView::addedOrRemovedScrollbar): New function to tell the compositor that scrollbars changed. * page/FrameView.h: * platform/ScrollView.cpp: (WebCore::ScrollView::setHasHorizontalScrollbar): Change the meaning of the return value to say if the scrollbar was added or removed. Add an out param that indicates whether the scrollbar change affects content size (not true for overlay scrollbars). (WebCore::ScrollView::setHasVerticalScrollbar): Ditto. (WebCore::ScrollView::updateScrollbars): Keep track of whether scrollbars were added or removed, and call addedOrRemovedScrollbar() if true. * platform/ScrollView.h: * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::frameViewDidAddOrRemoveScrollbars): Call updateOverflowControlsLayers(). (WebCore::RenderLayerCompositor::updateOverflowControlsLayers): * rendering/RenderLayerCompositor.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156201 268f45cc-cd09-0410-ab3c-d52691b4dbfc
0cdf36cc