-
Aleks Totic authored
This makes ~50 additional tests to pass, and 3 to fail. Paint invalidation can cause styles on a NGPhysicalFragment to get out of sync with LayoutObject styles. There were two ways to fix this, I found a) to be cleaner for now. a) Make PhysicalFragments fetch style from LayoutObject Tricky part here is that :first-line and overflow:ellipsis get special styles. b) Rebuild PhysicalFragment tree with a shallow clonewithstyle I was unable to find a clean way to trigger tree rebuild here. Sample experiment to convert paint invalidations into layout invalidations triggered 100s DCHECK(!NeedsLayout()) Possible fix would be to trap all places that call NeedsLayout() with intent to relayout, and replace them with NeedsLayout() || NeedsNGLayout() This does not fix all invalidation bugs. DisplayItems outside of LayoutObject tree do not get invalidated correctly. fast/css/first-letter-hover.html fast/history/visited-link-hover-emphasis-color.html Bug: 819372 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_layout_ng;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: Ia11f8288b8f45423762c870a43615707d6a0cc93 Reviewed-on: https://chromium-review.googlesource.com/956552 Commit-Queue: Aleks Totic <atotic@chromium.org> Reviewed-by:
Morten Stenshorne <mstensho@chromium.org> Reviewed-by:
Emil A Eklund <eae@chromium.org> Reviewed-by:
Koji Ishii <kojii@chromium.org> Cr-Commit-Position: refs/heads/master@{#542664}
fe3d571e