Index: Source/core/frame/FrameView.cpp |
diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp |
index 060b1587d439f485b2557b0e3d6b4e93227b9769..884f4a828b16ad0db50479be94e6bc016dedda21 100644 |
--- a/Source/core/frame/FrameView.cpp |
+++ b/Source/core/frame/FrameView.cpp |
@@ -638,8 +638,25 @@ void FrameView::recalcOverflowAfterStyleChange() |
renderView->recalcOverflowAfterStyleChange(); |
- // FIXME: We should adjust frame scrollbar here, but that will make many |
- // tests flake in debug build. |
+ if (needsLayout()) |
+ return; |
+ |
+ InUpdateScrollbarsScope inUpdateScrollbarsScope(this); |
+ |
+ bool shouldHaveHorizontalScrollbar = false; |
+ bool shouldHaveVerticalScrollbar = false; |
+ computeScrollbarExistence(shouldHaveHorizontalScrollbar, shouldHaveVerticalScrollbar); |
+ |
+ bool hasHorizontalScrollbar = horizontalScrollbar(); |
+ bool hasVerticalScrollbar = verticalScrollbar(); |
+ if (hasHorizontalScrollbar != shouldHaveHorizontalScrollbar |
+ || hasVerticalScrollbar != shouldHaveVerticalScrollbar) { |
+ setNeedsLayout(); |
+ return; |
+ } |
+ |
+ adjustViewSize(); |
+ updateScrollbarGeometry(); |
} |
bool FrameView::usesCompositedScrolling() const |