commit | 1e6957e609f2ee2cc8eedf5d70222194fee02c3c | [log] [tgz] |
---|---|---|
author | Aleks Totic <atotic@chromium.org> | Thu Oct 19 18:43:01 2017 |
committer | Commit Bot <commit-bot@chromium.org> | Thu Oct 19 18:43:01 2017 |
tree | 150bb94ccf54e727474d9d8517af8d36676fe411 | |
parent | e53faad1650ec15ddf0a653263c8e1f960a19f65 [diff] |
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}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .