• Aleks Totic's avatar
    LayoutNG inline outline initial implementation · 087318f1
    Aleks Totic authored
    I think that this patch is a good starting point for outline implementation.
    It implements a basic outline painting algorithm:
    - Outlines are painted by containing self painting fragment.
    - Outlines are computed as:
       traverse fragment's descendants
       combine outlines for fragments with common layout objects
       paint combined outlines, using first fragment as DisplayItem
    
    There are many problems:
    - All descendant fragments are traversed for each outline paint, even if
      there are no outlines to be painted.
      Fix: detect outline existence while descendants are being painted,
      and only call this code if there are outlines.
    
    There are 119 tests in our test suite that trigger inline outline paint code.
    With this patch, we get 4 regressions:
    fast/history/visited-link-hover-outline-color.html
    paint/invalidation/overflow/inline-block-overflow-repaint.html
    paint/invalidation/overflow/inline-box-overflow-repaint.html
      cause: improper invalidation
    fast/inline/nested-text-descendants.html
      cause: inline text position
    
    15 additional tests pass.
    
    Bug: 714962
    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: Icccd225abac7e38fd9a871ee2914ff8d235474e3
    Reviewed-on: https://chromium-review.googlesource.com/887633
    Commit-Queue: Aleks Totic <atotic@chromium.org>
    Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
    Reviewed-by: default avatarEmil A Eklund <eae@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#532270}
    087318f1
TestExpectations 284 KB