• Aleks Totic's avatar
    [LayoutNG] Inline static position and OOFDescendant propagation · fc5997e3
    Aleks Totic authored
    This patch computes static position in inline layout, and propagates
    OOFDescendants up the fragment tree.
    
    kojii: I've added NGInlineLayoutAlgorithm::CurrentDirection method. 
    Rename suggestions welcome.
    
    Interesting bits:
    
    1) LayoutBlock::LayoutPositionedObject 
    LayoutBlock::LayoutPositionedObject had to be modified because it would
    relayout already positioned OOF. The way it decided relayout was 
    needed was by positioning the element, and then comparing its position
    to position it already had. NG and Legacy would disagree here by a
    fraction of a pixel, and this would trigger relayout.
    
    My fix skips this check if LayoutNGBlockFlow is a containing block.
    
    2) Failing tests: there are 23 new failures, and 159 passes.
    
    I've examined the failures. Will need help from inline team on 2a, 2b
    and 2c.
    
    2a) DCHECK inline_size < 0
    animations/interpolation/letter-spacing-interpolation.html
    animations/interpolation/word-spacing-interpolation.html
    fast/inline/empty-inline-create-linebox.html
    fast/text/text-large-negative-letter-spacing-with-opacity.html
    fast/text/text-letter-spacing.html
    fast/text/international/rtl-negative-letter-spacing.html
    css2.1/t0803-c5502-imrgn-r-03-b-a.html
    css2.1/t0804-c5507-ipadn-r-03-b-a.html
    
    2b) bad static position. Block is being positioned by inline-layout-algorithm,
    instead of block-layout-algorithm. Should start a new line
    external/wpt/css/CSS2/normal-flow/block-non-replaced-width-001.xht
    external/wpt/css/CSS2/normal-flow/inline-block-replaced-height-004.xht
    external/wpt/css/CSS2/normal-flow/inline-block-replaced-height-005.xht
    external/wpt/css/CSS2/normal-flow/inline-block-replaced-height-007.xht
    external/wpt/css/CSS2/normal-flow/inline-replaced-height-004.xht
    external/wpt/css/CSS2/normal-flow/inline-replaced-height-005.xht
    external/wpt/css/CSS2/normal-flow/inline-replaced-height-007.xht
    fast/css/sticky/sticky-vertically-overconstrained.html
    
    2c) <span> has many <br>. NG includes <br> in line height, Legacy does not. FF
      does not at all
    fast/replaced/absolute-position-percentage-height.html
    
    2d) passes on reload. Content might not be laid out when document.onload() fires
    Fully correct (like FF), unlike Legacy which fails 2 tests.
    fast/box-sizing/replaced.html
    
    2e) some relayout multicol weirdness
    fast/multicol/dynamic/relayout-abspos-in-relpos-spanner.html
    ietestcenter/css3/multicolumn/column-containing-block-001.htm
    ietestcenter/css3/multicolumn/column-width-applies-to-008.htm
    ietestcenter/css3/multicolumn/column-width-applies-to-014.htm
    
    2f) unusual test: svg, shadow roots, i am not sure what is going on
    svg/foreign-object-under-shadow-root-under-hidden.html
    
    
    
    Bug: 740993
    Change-Id: I0eab6ec0ee87bdb10c9a69df0e18f19bcaafef68
    Reviewed-on: https://chromium-review.googlesource.com/738870
    Commit-Queue: Koji Ishii <kojii@chromium.org>
    Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
    Reviewed-by: default avatarIan Kilpatrick <ikilpatrick@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#513087}
    fc5997e3
TestExpectations 325 KB