• Rune Lillesveen's avatar
    Don't do whitespace re-attachment for ::first-letter. · 046e4ea7
    Rune Lillesveen authored
    If we have a white-space node before the text node with the first
    letter, we would try to re-attach the white-space node with an incorrect
    previous in-flow LayoutObject because we attach the ::first-letter after
    all children have been attached, not where the ::first-letter would end
    up in the layout tree.
    
    We don't need to re-attach whitespace after ::first-letter because:
    
    * We always create a remaining LayoutTextFragment for the text node
      which contains the first formatted letter. Wether the remaining text
      consists of white-space or is even empty.
    
    * If the LayoutObject sibling following first-letter+remaining-text
      consists of white-space, it would have gotten a LayoutObject when
      attaching the LayoutText for the text node where the first-letter
      comes from.
    
    That is, we will always have a LayoutObject for a white-space LayoutText
    sibling of a first-letter LayoutObject.
    
    Split out a separate method for ::first-letter for less complexity and
    cost with which WhitespaceAttacher to use.
    
    Bug: 876150
    Change-Id: Ib1f34f0ba596d5fa5f1c7fcbd7c75550dd4f9d12
    Reviewed-on: https://chromium-review.googlesource.com/1183231Reviewed-by: default avatarXiaocheng Hu <xiaochengh@chromium.org>
    Commit-Queue: Rune Lillesveen <futhark@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#584866}
    046e4ea7
first-letter-next-sibling-crash-expected.txt 98 Bytes