[LayoutNG] Fix |ComputeMinMaxSize| not to clear |NeedsLayout|
This patch fixes |ComputeMinMaxSize| not to clear |NeedsLayout| when all of following conditions are met: 1. Needs |MinMaxSize| 2. Is an orthogonal flow root. 3. Is legacy layout. 4. Change is applied that dirties the layout. In this case, |NGBlockNode::ComputeMinMaxSize()| calls |Layout()|, which goes to |RunLegacyLayout()|, which calls |LayoutObject::LayoutIfNeeded()|. However, its constraint space is intermediate that it does not update |CachedLayoutResult|. Then when laying it out, because |NeedsLayout()| is cleared, existing out-of-date |CachedLayoutResult| is used. This patch fixes: 1. Not to pre-layout orthogonal roots if it has |CachedLayoutResult|. 2. Set |NeedsLayout()| if |RunLegacyLayout()| clears it, but |CachedLayoutResult| was not updated. Bug: 976859 Change-Id: Ic2d979a3c4f9479040bfd0e54cf4283b60ed52b5 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1670146Reviewed-by:Christian Biesinger <cbiesinger@chromium.org> Reviewed-by:
Emil A Eklund <eae@chromium.org> Commit-Queue: Emil A Eklund <eae@chromium.org> Cr-Commit-Position: refs/heads/master@{#671460}
Showing
Please register or sign in to comment