Always add positioned objects to Legacy OOF container.
Add LayoutNGBlockFlow::CachedLayoutResultForTesting method to enable fragment access from unit tests. # Reason for patch: Legacy has a fast layout code path that does not call LayoutNGBlockFlow::UpdateBlockLayout. This path updates overflow, and position of OOF descendants. Because of this, Legacy containers must know about all OOF descendants. Existing code did not let Legacy containers know about NG OOF descendants. This CL fixes this. # Unit tests problems. This patch will affect future webkit_unit_tests. NGBlockNode::Layout will DCHECK if done outside of the performLayout cycle if NGBlockNode has OOF descendants. The core cause is this: NGBlockNode::CopyFragmentToLegacyLayout calls LayoutBox::LayoutPositionedObjects. LayoutPositionedObjects asserts that View()->IsInPerformLayout() This patch fixes four existing failing tests. 1) NGBlockLayoutAlgorithmTest.CollapsingMarginsEmptyBlockWithClearance Fixed by inspecting LayoutObjects instead of fragments. 2) NGOutOfFlowLayoutPartTest.FixedInsideAbs Fixed by 3) NGOutOfFlowLayoutPartTest.OrthogonalWritingMode1 4) NGOutOfFlowLayoutPartTest.OrthogonalWritingMode2 Removed, code already covered by existing LayoutTests. Bug: 740993 Change-Id: I3a87ef5cdac883517bc3db33e0569668161ff806 Reviewed-on: https://chromium-review.googlesource.com/722760 Commit-Queue: Aleks Totic <atotic@chromium.org> Reviewed-by:Ian Kilpatrick <ikilpatrick@chromium.org> Reviewed-by:
Emil A Eklund <eae@chromium.org> Cr-Commit-Position: refs/heads/master@{#510149}
Showing
Please register or sign in to comment