FrameView::adjustViewSize() called from FrameView::layout() after FrameView::performLayout() may again setNeedsLayout(). Not handling the needsLayout will violate the FrameView::layout()'s protocol that layout should be clean after it. WebViewImpl::layoutUpdated() handles resize of the local root frame but doesn't handle other frame views.
This might be the main cause of bug 590856 (which can be reproduced with the case in bug 611290).
This also causes assertion failures of the code executed after adjustViewSize() and before WebViewImpl::layoutUpdated(), e.g. https://bugs.chromium.org/p/chromium/issues/detail?id=611290#c2.
We can force a layout in adjustViewSize() to make layout clean after it. We can also let WebViewImpl::layoutUpdated() handle resize of all FrameViews, but need to adjust the sequence of layoutUpdated() and other code to avoid assertion failures before it.
Comment 1 by sheriffbot@chromium.org
, Jun 1 2017Status: Untriaged (was: Available)