• Morten Stenshorne's avatar
    [LayoutNG] Use the containing LayoutBlock for legacy write-back. · 18637ad8
    Morten Stenshorne authored
    The LayoutBox associated with a block node will *normally* be the
    containing block (on the legacy side) of its children (on the NG side),
    but this isn't an invariant. Multicol and list item markers are
    two examples.
    
    Remove the kembo DCHECK, since it seems impossible to come up with a
    complete list of exceptions to the rule (that the node's box should be
    the containing block of the child nodes' boxes). Instead always get the
    right containing block from legacy layout. Don't use that of the node.
    
    With the DCHECK removed, a lot of tests stop crashing, and some just
    start passing instead. One known effect of this change is that floats
    that are direct children of multicol containers are painted correctly.
    They used to be added to the float list of the multicol container,
    rather than that of the flow thread, which caused two problems: paint
    order (regular blocks got painted on top of them), and that they
    appeared unfragmented (they just overflowed the multicol container
    instead). Added a test for that.
    
    Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
    Change-Id: I1ee926c39fbedfd52d87e9cf790996909914efb2
    Reviewed-on: https://chromium-review.googlesource.com/960027
    Commit-Queue: Morten Stenshorne <mstensho@chromium.org>
    Reviewed-by: default avatarEmil A Eklund <eae@chromium.org>
    Reviewed-by: default avatarIan Kilpatrick <ikilpatrick@chromium.org>
    Reviewed-by: default avatarAleks Totic <atotic@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#543065}
    18637ad8
enable-blink-features=LayoutNG 312 KB