• Morten Stenshorne's avatar
    [LayoutNG] Don't let legacy layout re-enter layout of a scrollable block node. · 4e246b2e
    Morten Stenshorne authored
    We'd end up re-entering NGBlockNode::CopyFragmentDataToLayoutBox() for
    the same node.
    
    After layout of a fragment, NGBlockNode::CopyFragmentDataToLayoutBox() would
    call LayoutBlock::UpdateAfterLayout(), which would call
    scrollbar was toggled, it'd go ahead and call UpdateLayout() on the object,
    which would take us back into the NG layout machinery, on the same node, via
    Finally we'd re-enter NGBlockNode::CopyFragmentDataToLayoutBox(), causing misc
    kinds of misery, such as not being able to paint the block at all. For
    multicol, there'd even be a DCHECK failure "Variable fragment inline size not
    supported", because the code got confused as to whether a fragment was a first
    fragment or not.
    
    LayoutBox: :UpdateAfterLayout(), which would call
    PaintLayer: :UpdateSizeAndScrollingAfterLayout(), which would call
    PaintLayerScrollableArea: :UpdateAfterLayout(). If this code detected that a
    LayoutNGBlockFlow: :UpdateBlockLayout(), further to NGBlockNode::Layout().
    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: I832372223e324682bb4e38b3177dce30093df2e1
    Reviewed-on: https://chromium-review.googlesource.com/824265
    Commit-Queue: Morten Stenshorne <mstensho@chromium.org>
    Reviewed-by: default avatarEmil A Eklund <eae@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#524039}
    4e246b2e
enable-blink-features=LayoutNG 928 KB