Source/WebCore:
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Dec 2019 16:57:44 +0000 (16:57 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Dec 2019 16:57:44 +0000 (16:57 +0000)
Remove behavior that makes <br> boxes 0-height in quirks mode
https://bugs.webkit.org/show_bug.cgi?id=205004

Reviewed by Zalan Bujtas.

Implementation of the <br> quirk includes zeroing its height. This has no layout or rendering effects,
it exists purely to maintain render tree dump output for tests.

This patch removes this behavior but maintains the render tree dump output on the RenderTreeAsText
level (thus avoiding giant test rebasing), and makes it easier to get the same output from all paths.

* rendering/InlineBox.cpp:
(WebCore::InlineBox::logicalHeight const):
(WebCore::InlineBox::baselinePosition const):
(WebCore::InlineBox::lineHeight const):

Remove the hack from line boxes.

* rendering/RenderLineBreak.cpp:
(WebCore::RenderLineBreak::boundingBoxForRenderTreeDump const):

Add special bounding box code for this case.
This can be removed in future with a test rebase.

* rendering/RenderLineBreak.h:
* rendering/RenderTreeAsText.cpp:
(WebCore::RenderTreeAsText::writeRenderObject):
* rendering/SimpleLineLayoutResolver.cpp:
(WebCore::SimpleLineLayout::RunResolver::Run::rect const):

Remove the hack from simple lines.

(WebCore::SimpleLineLayout::RunResolver::RunResolver):
* rendering/SimpleLineLayoutResolver.h:
(WebCore::SimpleLineLayout::RunResolver::Run::baselineOffset const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::atBegin const):
* rendering/line/LineLayoutTraversal.h:
(WebCore::LineLayoutTraversal::Box::baselineOffset const):
(WebCore::LineLayoutTraversal::Box::isHorizontal const):
(WebCore::LineLayoutTraversal::Box::useLineBreakBoxRenderTreeDumpQuirk const):
* rendering/line/LineLayoutTraversalComplexPath.h:
(WebCore::LineLayoutTraversal::ComplexPath::isHorizontal const):
(WebCore::LineLayoutTraversal::ComplexPath::baselineOffset const):
(WebCore::LineLayoutTraversal::ComplexPath::useLineBreakBoxRenderTreeDumpQuirk const):
* rendering/line/LineLayoutTraversalDisplayRunPath.h:
(WebCore::LineLayoutTraversal::DisplayRunPath::baselineOffset const):
(WebCore::LineLayoutTraversal::DisplayRunPath::isHorizontal const):
(WebCore::LineLayoutTraversal::DisplayRunPath::useLineBreakBoxRenderTreeDumpQuirk const):
(WebCore::LineLayoutTraversal::DisplayRunPath::isLastOnLine const):
(WebCore::LineLayoutTraversal::DisplayRunPath::lineBox const):
* rendering/line/LineLayoutTraversalSimplePath.h:
(WebCore::LineLayoutTraversal::SimplePath::baselineOffset const):
(WebCore::LineLayoutTraversal::SimplePath::isHorizontal const):
(WebCore::LineLayoutTraversal::SimplePath::useLineBreakBoxRenderTreeDumpQuirk const):

LayoutTests:
Remove hack that makes <br> boxes 0-height in quirks mode
https://bugs.webkit.org/show_bug.cgi?id=205004

Reviewed by Zalan Bujtas.

A few changes due to aligning simple line path with complex, rounding, and some vertical text details.

* fast/multicol/pagination-h-horizontal-bt-expected.txt:
* fast/multicol/pagination-v-horizontal-bt-expected.txt:
* fast/ruby/position-after-expected.txt:
* platform/ios/fast/writing-mode/border-styles-vertical-lr-expected.txt:
* platform/ios/fast/writing-mode/english-bt-text-expected.txt:
* platform/ios/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
* platform/mac/fast/text/international/bidi-layout-across-linebreak-expected.txt:
* platform/mac/fast/text/svg-font-face-with-kerning-expected.txt:
* platform/mac/fast/writing-mode/border-styles-vertical-lr-expected.txt:
* platform/mac/fast/writing-mode/english-bt-text-expected.txt:
* platform/mac/fast/writing-mode/text-orientation-basic-expected.txt:
* platform/mac/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
* platform/win/fast/text/international/bidi-layout-across-linebreak-expected.txt:
* platform/win/fast/writing-mode/english-bt-text-expected.txt:
* platform/win/fast/writing-mode/text-orientation-basic-expected.txt:
* platform/win/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@253326 268f45cc-cd09-0410-ab3c-d52691b4dbfc

28 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/multicol/pagination-h-horizontal-bt-expected.txt
LayoutTests/fast/multicol/pagination-v-horizontal-bt-expected.txt
LayoutTests/fast/ruby/position-after-expected.txt
LayoutTests/platform/ios/fast/writing-mode/border-styles-vertical-lr-expected.txt
LayoutTests/platform/ios/fast/writing-mode/english-bt-text-expected.txt
LayoutTests/platform/ios/tables/mozilla_expected_failures/bugs/bug56024-expected.txt
LayoutTests/platform/mac/fast/text/international/bidi-layout-across-linebreak-expected.txt
LayoutTests/platform/mac/fast/text/svg-font-face-with-kerning-expected.txt
LayoutTests/platform/mac/fast/writing-mode/border-styles-vertical-lr-expected.txt
LayoutTests/platform/mac/fast/writing-mode/english-bt-text-expected.txt
LayoutTests/platform/mac/fast/writing-mode/text-orientation-basic-expected.txt
LayoutTests/platform/mac/tables/mozilla_expected_failures/bugs/bug56024-expected.txt
LayoutTests/platform/win/fast/text/international/bidi-layout-across-linebreak-expected.txt
LayoutTests/platform/win/fast/writing-mode/english-bt-text-expected.txt
LayoutTests/platform/win/fast/writing-mode/text-orientation-basic-expected.txt
LayoutTests/platform/win/tables/mozilla_expected_failures/bugs/bug56024-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/rendering/InlineBox.cpp
Source/WebCore/rendering/RenderLineBreak.cpp
Source/WebCore/rendering/RenderLineBreak.h
Source/WebCore/rendering/RenderTreeAsText.cpp
Source/WebCore/rendering/SimpleLineLayoutResolver.cpp
Source/WebCore/rendering/SimpleLineLayoutResolver.h
Source/WebCore/rendering/line/LineLayoutTraversal.h
Source/WebCore/rendering/line/LineLayoutTraversalComplexPath.h
Source/WebCore/rendering/line/LineLayoutTraversalDisplayRunPath.h
Source/WebCore/rendering/line/LineLayoutTraversalSimplePath.h

index 9372814..2cb6807 100644 (file)
@@ -1,3 +1,29 @@
+2019-12-10  Antti Koivisto  <antti@apple.com>
+
+        Remove hack that makes <br> boxes 0-height in quirks mode
+        https://bugs.webkit.org/show_bug.cgi?id=205004
+
+        Reviewed by Zalan Bujtas.
+
+        A few changes due to aligning simple line path with complex, rounding, and some vertical text details.
+
+        * fast/multicol/pagination-h-horizontal-bt-expected.txt:
+        * fast/multicol/pagination-v-horizontal-bt-expected.txt:
+        * fast/ruby/position-after-expected.txt:
+        * platform/ios/fast/writing-mode/border-styles-vertical-lr-expected.txt:
+        * platform/ios/fast/writing-mode/english-bt-text-expected.txt:
+        * platform/ios/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
+        * platform/mac/fast/text/international/bidi-layout-across-linebreak-expected.txt:
+        * platform/mac/fast/text/svg-font-face-with-kerning-expected.txt:
+        * platform/mac/fast/writing-mode/border-styles-vertical-lr-expected.txt:
+        * platform/mac/fast/writing-mode/english-bt-text-expected.txt:
+        * platform/mac/fast/writing-mode/text-orientation-basic-expected.txt:
+        * platform/mac/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
+        * platform/win/fast/text/international/bidi-layout-across-linebreak-expected.txt:
+        * platform/win/fast/writing-mode/english-bt-text-expected.txt:
+        * platform/win/fast/writing-mode/text-orientation-basic-expected.txt:
+        * platform/win/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
+        
 2019-12-09  Patrick Griffis  <pgriffis@igalia.com>
 
         Import secure cookie tests from WPT
index fe403f5..e036951 100644 (file)
@@ -19,8 +19,8 @@ layer at (0,-337) size 800x922 backgroundClip at (0,0) size 1600x585 clip at (0,
         RenderBR {BR} at (3,453) size 0x50
         RenderText {#text} at (3,503) size 250x50
           text run at (3,503) width 250: "Lorem"
-        RenderBR {BR} at (253,513) size 0x0
+        RenderBR {BR} at (253,543) size 0x0
         RenderInline {SPAN} at (0,0) size 250x50 [color=#FF0000]
           RenderText {#text} at (3,577) size 250x50
             text run at (3,577) width 250: "ipsum"
-          RenderBR {BR} at (253,587) size 0x0
+          RenderBR {BR} at (253,617) size 0x0
index ecc7464..f281558 100644 (file)
@@ -19,8 +19,8 @@ layer at (0,-322) size 785x922 backgroundClip at (0,0) size 785x1200 clip at (0,
         RenderBR {BR} at (3,453) size 0x50
         RenderText {#text} at (3,503) size 250x50
           text run at (3,503) width 250: "Lorem"
-        RenderBR {BR} at (253,513) size 0x0
+        RenderBR {BR} at (253,543) size 0x0
         RenderInline {SPAN} at (0,0) size 250x50 [color=#FF0000]
           RenderText {#text} at (3,592) size 250x50
             text run at (3,592) width 250: "ipsum"
-          RenderBR {BR} at (253,602) size 0x0
+          RenderBR {BR} at (253,632) size 0x0
index c71b7f9..df688c0 100644 (file)
@@ -88,7 +88,7 @@ layer at (0,0) size 800x600
               RenderRubyText {RT} at (0,-20) size 100x20 [color=#FFA500]
                 RenderText {#text} at (45,0) size 10x10
                   text run at (45,0) width 10: "y"
-                RenderBR {BR} at (55,2) size 0x0
+                RenderBR {BR} at (55,8) size 0x0
                 RenderText {#text} at (45,10) size 10x10
                   text run at (45,10) width 10: "y"
               RenderRubyBase (anonymous) at (0,0) size 100x20
index 1274f16..2f4a52b 100644 (file)
@@ -5,120 +5,120 @@ layer at (0,0) size 800x600
     RenderBody {BODY} at (20,8) size 760x584
       RenderBlock {DIV} at (0,20) size 256x544
         RenderBlock {DIV} at (0,0) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px solid #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px solid #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (166,83) size 19x4
           text run at (166,83) width 4: " "
         RenderBlock {DIV} at (0,87) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px groove #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px groove #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (166,170) size 19x4
           text run at (166,170) width 4: " "
         RenderBlock {DIV} at (0,174) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px ridge #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px ridge #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (166,257) size 19x4
           text run at (166,257) width 4: " "
         RenderBlock {DIV} at (0,261) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px outset #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px outset #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (166,344) size 19x4
           text run at (166,344) width 4: " "
         RenderBlock {DIV} at (0,348) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px inset #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px inset #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (166,431) size 19x4
           text run at (166,431) width 4: " "
         RenderBlock {DIV} at (0,435) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px double #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px double #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (0,0) size 0x0
       RenderBlock {DIV} at (276,20) size 256x544
         RenderBlock {DIV} at (0,0) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px solid #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px solid #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (166,83) size 19x4
           text run at (166,83) width 4: " "
         RenderBlock {DIV} at (0,87) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px groove #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px groove #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (166,170) size 19x4
           text run at (166,170) width 4: " "
         RenderBlock {DIV} at (0,174) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px ridge #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px ridge #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (166,257) size 19x4
           text run at (166,257) width 4: " "
         RenderBlock {DIV} at (0,261) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px outset #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px outset #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (166,344) size 19x4
           text run at (166,344) width 4: " "
         RenderBlock {DIV} at (0,348) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px inset #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px inset #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (166,431) size 19x4
           text run at (166,431) width 4: " "
         RenderBlock {DIV} at (0,435) size 256x83
-          RenderInline {SPAN} at (0,0) size 240x83 [bgcolor=#DDDDDD] [border: (20px double #808080)]
-            RenderText {#text} at (28,35) size 72x48
-              text run at (28,35) width 48: "   "
-            RenderBR {BR} at (42,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 248x83 [bgcolor=#DDDDDD] [border: (20px double #808080)]
+            RenderText {#text} at (20,35) size 72x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (34,83) size 0x0
             RenderText {#text} at (156,0) size 72x48
               text run at (156,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
index 3dc89af..83bcb0d 100644 (file)
@@ -8,6 +8,6 @@ layer at (0,0) size 800x600
         RenderText {#text} at (2,2) size 543x19
           text run at (2,2) width 306: "Here is some text in a horizontal-bt block flow. "
           text run at (307,2) width 238: "The block direction is bottom-to-top."
-        RenderBR {BR} at (544,6) size 1x0
+        RenderBR {BR} at (544,17) size 1x0
         RenderText {#text} at (2,22) size 225x19
           text run at (2,22) width 225: "This line should also be horizontal."
index ec97770..b147161 100644 (file)
@@ -16,7 +16,7 @@ layer at (0,0) size 800x104
                         text run at (1,21) width 250: "Al Gore are expected to show a kinder,"
                         text run at (1,41) width 294: "gentler side Wednesday in the second of three"
                         text run at (1,61) width 185: "nationally televised debates. "
-                      RenderBR {BR} at (185,61) size 1x19
+                      RenderBR {BR} at (185,76) size 1x0
             RenderTableCell {TD} at (302,2) size 96x82 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
               RenderBlock (anonymous) at (1,1) size 94x80
                 RenderInline {FONT} at (0,0) size 84x79 [color=#CC3333]
index 441ae93..a05f616 100644 (file)
@@ -165,7 +165,7 @@ layer at (0,0) size 800x492
             RenderTableCell {TD} at (47,269) size 46x41 [border: (1px solid #008000)] [r=7 c=1 rs=1 cs=1]
               RenderText {#text} at (3,3) size 20x18
                 text run at (3,3) width 20: "a ("
-              RenderBR {BR} at (22,3) size 1x18
+              RenderBR {BR} at (22,18) size 1x0
               RenderText {#text} at (3,21) size 21x18
                 text run at (3,21) width 21: "] b"
             RenderTableCell {TD} at (92,269) size 35x41 [border: (1px solid #008000)] [r=7 c=2 rs=1 cs=1]
index 30d48e1..d0f7514 100644 (file)
@@ -7,7 +7,7 @@ layer at (0,0) size 800x600
         RenderText {#text} at (0,1) size 207x34
           text run at (0,1) width 207: "This is a test of kerning when"
           text run at (0,19) width 157: "using SVG web fonts. "
-        RenderBR {BR} at (156,32) size 1x0
+        RenderBR {BR} at (156,33) size 1x0
         RenderBR {BR} at (0,37) size 0x16
         RenderText {#text} at (0,55) size 230x34
           text run at (0,55) width 230: "Wow, The V/A Team's Task Was"
index 0278ac6..469a95a 100644 (file)
@@ -5,120 +5,120 @@ layer at (0,0) size 800x600
     RenderBody {BODY} at (20,8) size 760x584
       RenderBlock {DIV} at (0,20) size 256x544
         RenderBlock {DIV} at (0,0) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px solid #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px solid #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (167,83) size 18x4
           text run at (167,83) width 4: " "
         RenderBlock {DIV} at (0,87) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px groove #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px groove #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (167,170) size 18x4
           text run at (167,170) width 4: " "
         RenderBlock {DIV} at (0,174) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px ridge #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px ridge #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (167,257) size 18x4
           text run at (167,257) width 4: " "
         RenderBlock {DIV} at (0,261) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px outset #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px outset #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (167,344) size 18x4
           text run at (167,344) width 4: " "
         RenderBlock {DIV} at (0,348) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px inset #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px inset #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (167,431) size 18x4
           text run at (167,431) width 4: " "
         RenderBlock {DIV} at (0,435) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px double #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px double #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (0,0) size 0x0
       RenderBlock {DIV} at (276,20) size 256x544
         RenderBlock {DIV} at (0,0) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px solid #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px solid #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (167,83) size 18x4
           text run at (167,83) width 4: " "
         RenderBlock {DIV} at (0,87) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px groove #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px groove #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (167,170) size 18x4
           text run at (167,170) width 4: " "
         RenderBlock {DIV} at (0,174) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px ridge #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px ridge #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (167,257) size 18x4
           text run at (167,257) width 4: " "
         RenderBlock {DIV} at (0,261) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px outset #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px outset #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (167,344) size 18x4
           text run at (167,344) width 4: " "
         RenderBlock {DIV} at (0,348) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px inset #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px inset #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
         RenderText {#text} at (167,431) size 18x4
           text run at (167,431) width 4: " "
         RenderBlock {DIV} at (0,435) size 256x83
-          RenderInline {SPAN} at (0,0) size 242x83 [bgcolor=#DDDDDD] [border: (20px double #808080)]
-            RenderText {#text} at (27,35) size 74x48
-              text run at (27,35) width 48: "   "
-            RenderBR {BR} at (43,83) size 0x0
+          RenderInline {SPAN} at (0,0) size 249x83 [bgcolor=#DDDDDD] [border: (20px double #808080)]
+            RenderText {#text} at (20,35) size 74x48
+              text run at (20,35) width 48: "   "
+            RenderBR {BR} at (36,83) size 0x0
             RenderText {#text} at (155,0) size 74x48
               text run at (155,0) width 48: "   "
           RenderText {#text} at (0,0) size 0x0
index b27d7ab..9e6f811 100644 (file)
@@ -8,6 +8,6 @@ layer at (0,0) size 800x600
         RenderText {#text} at (2,2) size 542x18
           text run at (2,2) width 305: "Here is some text in a horizontal-bt block flow. "
           text run at (306,2) width 238: "The block direction is bottom-to-top."
-        RenderBR {BR} at (543,6) size 1x0
+        RenderBR {BR} at (543,16) size 1x0
         RenderText {#text} at (2,20) size 225x18
           text run at (2,20) width 225: "This line should also be horizontal."
index 688530e..0c10f67 100644 (file)
@@ -20,37 +20,37 @@ layer at (0,0) size 785x722
       RenderBlock {DIV} at (0,106) size 388x600
         RenderBlock {DIV} at (0,0) size 194x398 [border: (1px solid #008000)]
           RenderInline {SPAN} at (0,0) size 40x173
-            RenderText {#text} at (2,1) size 40x173
-              text run at (2,1) width 173: "Hello world"
-          RenderBR {BR} at (10,173) size 0x1
+            RenderText {#text} at (3,1) size 40x173
+              text run at (3,1) width 173: "Hello world"
+          RenderBR {BR} at (11,173) size 0x1
           RenderInline {SPAN} at (0,0) size 40x337
-            RenderText {#text} at (44,1) size 40x337
-              text run at (44,1) width 337: "Hello world"
-          RenderBR {BR} at (52,337) size 0x1
+            RenderText {#text} at (45,1) size 40x337
+              text run at (45,1) width 337: "Hello world"
+          RenderBR {BR} at (53,337) size 0x1
           RenderInline {SPAN} at (0,0) size 36x198
-            RenderText {#text} at (94,1) size 36x198
-              text run at (94,1) width 198: "Hello world"
-          RenderBR {BR} at (112,198) size 0x1
+            RenderText {#text} at (93,1) size 36x198
+              text run at (93,1) width 198: "Hello world"
+          RenderBR {BR} at (100,198) size 0x1
           RenderInline {SPAN} at (0,0) size 36x396
-            RenderText {#text} at (148,1) size 36x396
-              text run at (148,1) width 396: "Hello world"
-          RenderBR {BR} at (166,397) size 0x0
+            RenderText {#text} at (147,1) size 36x396
+              text run at (147,1) width 396: "Hello world"
+          RenderBR {BR} at (154,397) size 0x0
         RenderText {#text} at (0,0) size 0x0
         RenderBlock {DIV} at (194,0) size 194x398 [border: (1px solid #008000)]
           RenderInline {SPAN} at (0,0) size 40x173
-            RenderText {#text} at (2,1) size 40x173
-              text run at (2,1) width 173: "Hello world"
-          RenderBR {BR} at (10,173) size 0x1
+            RenderText {#text} at (3,1) size 40x173
+              text run at (3,1) width 173: "Hello world"
+          RenderBR {BR} at (11,173) size 0x1
           RenderInline {SPAN} at (0,0) size 40x337
-            RenderText {#text} at (44,1) size 40x337
-              text run at (44,1) width 337: "Hello world"
-          RenderBR {BR} at (52,337) size 0x1
+            RenderText {#text} at (45,1) size 40x337
+              text run at (45,1) width 337: "Hello world"
+          RenderBR {BR} at (53,337) size 0x1
           RenderInline {SPAN} at (0,0) size 36x198
-            RenderText {#text} at (94,1) size 36x198
-              text run at (94,1) width 198: "Hello world"
-          RenderBR {BR} at (112,198) size 0x1
+            RenderText {#text} at (93,1) size 36x198
+              text run at (93,1) width 198: "Hello world"
+          RenderBR {BR} at (100,198) size 0x1
           RenderInline {SPAN} at (0,0) size 36x396
-            RenderText {#text} at (148,1) size 36x396
-              text run at (148,1) width 396: "Hello world"
-          RenderBR {BR} at (166,397) size 0x0
+            RenderText {#text} at (147,1) size 36x396
+              text run at (147,1) width 396: "Hello world"
+          RenderBR {BR} at (154,397) size 0x0
         RenderText {#text} at (0,0) size 0x0
index 711c6a3..baa6195 100644 (file)
@@ -16,7 +16,7 @@ layer at (0,0) size 800x96
                         text run at (1,19) width 250: "Al Gore are expected to show a kinder,"
                         text run at (1,37) width 294: "gentler side Wednesday in the second of three"
                         text run at (1,55) width 185: "nationally televised debates. "
-                      RenderBR {BR} at (185,55) size 1x18
+                      RenderBR {BR} at (185,69) size 1x0
             RenderTableCell {TD} at (302,2) size 96x74 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
               RenderBlock (anonymous) at (1,1) size 94x72
                 RenderInline {FONT} at (0,0) size 84x72 [color=#CC3333]
index be9a114..12f2f55 100644 (file)
@@ -165,7 +165,7 @@ layer at (0,0) size 800x492
             RenderTableCell {TD} at (47,269) size 46x41 [border: (1px solid #008000)] [r=7 c=1 rs=1 cs=1]
               RenderText {#text} at (3,3) size 20x18
                 text run at (3,3) width 20: "a ("
-              RenderBR {BR} at (22,3) size 1x18
+              RenderBR {BR} at (22,18) size 1x0
               RenderText {#text} at (3,21) size 21x18
                 text run at (3,21) width 21: "] b"
             RenderTableCell {TD} at (92,269) size 35x41 [border: (1px solid #008000)] [r=7 c=2 rs=1 cs=1]
index 42c2814..ea465ac 100644 (file)
@@ -8,6 +8,6 @@ layer at (0,0) size 800x600
         RenderText {#text} at (2,2) size 531x18
           text run at (2,2) width 300: "Here is some text in a horizontal-bt block flow. "
           text run at (302,2) width 231: "The block direction is bottom-to-top."
-        RenderBR {BR} at (533,6) size 0x0
+        RenderBR {BR} at (533,16) size 0x0
         RenderText {#text} at (2,20) size 220x18
           text run at (2,20) width 220: "This line should also be horizontal."
index 12c35da..139d903 100644 (file)
@@ -20,13 +20,13 @@ layer at (0,0) size 785x704
       RenderBlock {DIV} at (0,88) size 168x600
         RenderBlock {DIV} at (0,0) size 168x175 [border: (1px solid #008000)]
           RenderInline {SPAN} at (0,0) size 40x173
-            RenderText {#text} at (2,1) size 40x173
-              text run at (2,1) width 173: "Hello world"
-          RenderBR {BR} at (10,174) size 0x0
+            RenderText {#text} at (3,1) size 40x173
+              text run at (3,1) width 173: "Hello world"
+          RenderBR {BR} at (11,174) size 0x0
           RenderInline {SPAN} at (0,0) size 40x173
-            RenderText {#text} at (44,1) size 40x173
-              text run at (44,1) width 173: "Hello world"
-          RenderBR {BR} at (52,174) size 0x0
+            RenderText {#text} at (45,1) size 40x173
+              text run at (45,1) width 173: "Hello world"
+          RenderBR {BR} at (53,174) size 0x0
           RenderInline {SPAN} at (0,0) size 41x173
             RenderText {#text} at (85,1) size 41x173
               text run at (85,1) width 173: "Hello world"
@@ -39,13 +39,13 @@ layer at (0,0) size 785x704
           text run at (126,175) width 9: " "
         RenderBlock {DIV} at (0,184) size 168x175 [border: (1px solid #008000)]
           RenderInline {SPAN} at (0,0) size 40x173
-            RenderText {#text} at (2,1) size 40x173
-              text run at (2,1) width 173: "Hello world"
-          RenderBR {BR} at (10,174) size 0x0
+            RenderText {#text} at (3,1) size 40x173
+              text run at (3,1) width 173: "Hello world"
+          RenderBR {BR} at (11,174) size 0x0
           RenderInline {SPAN} at (0,0) size 40x173
-            RenderText {#text} at (44,1) size 40x173
-              text run at (44,1) width 173: "Hello world"
-          RenderBR {BR} at (52,174) size 0x0
+            RenderText {#text} at (45,1) size 40x173
+              text run at (45,1) width 173: "Hello world"
+          RenderBR {BR} at (53,174) size 0x0
           RenderInline {SPAN} at (0,0) size 41x173
             RenderText {#text} at (85,1) size 41x173
               text run at (85,1) width 173: "Hello world"
index dec63af..d90bd20 100644 (file)
@@ -16,7 +16,7 @@ layer at (0,0) size 800x96
                         text run at (1,19) width 295: "Al Gore are expected to show a kinder, gentler"
                         text run at (1,37) width 242: "side Wednesday in the second of three"
                         text run at (1,55) width 180: "nationally televised debates. "
-                      RenderBR {BR} at (181,55) size 0x18
+                      RenderBR {BR} at (181,69) size 0x0
             RenderTableCell {TD} at (302,2) size 96x74 [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
               RenderBlock (anonymous) at (1,1) size 94x72
                 RenderInline {FONT} at (0,0) size 83x72 [color=#CC3333]
index 49f653e..4492c6a 100644 (file)
@@ -1,5 +1,62 @@
 2019-12-10  Antti Koivisto  <antti@apple.com>
 
+        Remove behavior that makes <br> boxes 0-height in quirks mode
+        https://bugs.webkit.org/show_bug.cgi?id=205004
+
+        Reviewed by Zalan Bujtas.
+
+        Implementation of the <br> quirk includes zeroing its height. This has no layout or rendering effects,
+        it exists purely to maintain render tree dump output for tests.
+
+        This patch removes this behavior but maintains the render tree dump output on the RenderTreeAsText
+        level (thus avoiding giant test rebasing), and makes it easier to get the same output from all paths.
+
+        * rendering/InlineBox.cpp:
+        (WebCore::InlineBox::logicalHeight const):
+        (WebCore::InlineBox::baselinePosition const):
+        (WebCore::InlineBox::lineHeight const):
+
+        Remove the hack from line boxes.
+
+        * rendering/RenderLineBreak.cpp:
+        (WebCore::RenderLineBreak::boundingBoxForRenderTreeDump const):
+
+        Add special bounding box code for this case.
+        This can be removed in future with a test rebase.
+
+        * rendering/RenderLineBreak.h:
+        * rendering/RenderTreeAsText.cpp:
+        (WebCore::RenderTreeAsText::writeRenderObject):
+        * rendering/SimpleLineLayoutResolver.cpp:
+        (WebCore::SimpleLineLayout::RunResolver::Run::rect const):
+
+        Remove the hack from simple lines.
+
+        (WebCore::SimpleLineLayout::RunResolver::RunResolver):
+        * rendering/SimpleLineLayoutResolver.h:
+        (WebCore::SimpleLineLayout::RunResolver::Run::baselineOffset const):
+        (WebCore::SimpleLineLayout::RunResolver::Iterator::atBegin const):
+        * rendering/line/LineLayoutTraversal.h:
+        (WebCore::LineLayoutTraversal::Box::baselineOffset const):
+        (WebCore::LineLayoutTraversal::Box::isHorizontal const):
+        (WebCore::LineLayoutTraversal::Box::useLineBreakBoxRenderTreeDumpQuirk const):
+        * rendering/line/LineLayoutTraversalComplexPath.h:
+        (WebCore::LineLayoutTraversal::ComplexPath::isHorizontal const):
+        (WebCore::LineLayoutTraversal::ComplexPath::baselineOffset const):
+        (WebCore::LineLayoutTraversal::ComplexPath::useLineBreakBoxRenderTreeDumpQuirk const):
+        * rendering/line/LineLayoutTraversalDisplayRunPath.h:
+        (WebCore::LineLayoutTraversal::DisplayRunPath::baselineOffset const):
+        (WebCore::LineLayoutTraversal::DisplayRunPath::isHorizontal const):
+        (WebCore::LineLayoutTraversal::DisplayRunPath::useLineBreakBoxRenderTreeDumpQuirk const):
+        (WebCore::LineLayoutTraversal::DisplayRunPath::isLastOnLine const):
+        (WebCore::LineLayoutTraversal::DisplayRunPath::lineBox const):
+        * rendering/line/LineLayoutTraversalSimplePath.h:
+        (WebCore::LineLayoutTraversal::SimplePath::baselineOffset const):
+        (WebCore::LineLayoutTraversal::SimplePath::isHorizontal const):
+        (WebCore::LineLayoutTraversal::SimplePath::useLineBreakBoxRenderTreeDumpQuirk const):
+
+2019-12-10  Antti Koivisto  <antti@apple.com>
+
         [LFC][Integration] Output hyphen strings
         https://bugs.webkit.org/show_bug.cgi?id=205058
 
index 3204b8d..879774a 100644 (file)
@@ -132,7 +132,7 @@ float InlineBox::logicalHeight() const
 
     const RenderStyle& lineStyle = this->lineStyle();
     if (renderer().isTextOrLineBreak())
-        return behavesLikeText() ? lineStyle.fontMetrics().height() : 0;
+        return lineStyle.fontMetrics().height();
     if (is<RenderBox>(renderer()) && parent())
         return isHorizontal() ? downcast<RenderBox>(renderer()).height() : downcast<RenderBox>(renderer()).width();
 
@@ -147,15 +147,11 @@ float InlineBox::logicalHeight() const
 
 int InlineBox::baselinePosition(FontBaseline baselineType) const
 {
-    if (renderer().isLineBreak() && !behavesLikeText())
-        return 0;
     return boxModelObject()->baselinePosition(baselineType, m_bitfields.firstLine(), isHorizontal() ? HorizontalLine : VerticalLine, PositionOnContainingLine);
 }
 
 LayoutUnit InlineBox::lineHeight() const
 {
-    if (renderer().isLineBreak() && !behavesLikeText())
-        return 0;
     return boxModelObject()->lineHeight(m_bitfields.firstLine(), isHorizontal() ? HorizontalLine : VerticalLine, PositionOnContainingLine);
 }
 
index d0019a8..74090ae 100644 (file)
@@ -177,6 +177,28 @@ IntRect RenderLineBreak::linesBoundingBox() const
     return enclosingIntRect(box->rect());
 }
 
+IntRect RenderLineBreak::boundingBoxForRenderTreeDump() const
+{
+    auto box = LineLayoutTraversal::elementBoxFor(*this);
+    if (!box)
+        return { };
+
+    auto rect = box->rect();
+
+    // FIXME: Remove and rebase the tests.
+    bool inQuirksMode = !document().inNoQuirksMode();
+    if (inQuirksMode && !isWBR() && box->useLineBreakBoxRenderTreeDumpQuirk()) {
+        if (!box->isHorizontal()) {
+            auto baseline = style().isFlippedBlocksWritingMode() ? rect.x() + box->baselineOffset() : rect.maxX() - box->baselineOffset();
+            return enclosingIntRect(FloatRect(FloatPoint(baseline, rect.y()), FloatSize(0, rect.height())));
+        }
+        auto baseline = rect.y() + box->baselineOffset();
+        return enclosingIntRect(FloatRect(FloatPoint(rect.x(), baseline), FloatSize(rect.width(), 0)));
+    }
+
+    return enclosingIntRect(rect);
+}
+
 void RenderLineBreak::absoluteRects(Vector<IntRect>& rects, const LayoutPoint& accumulatedOffset) const
 {
     auto box = LineLayoutTraversal::elementBoxFor(*this);
index 29a3d5c..edfeff5 100644 (file)
@@ -48,6 +48,7 @@ public:
     void dirtyLineBoxes(bool fullLayout);
 
     IntRect linesBoundingBox() const;
+    IntRect boundingBoxForRenderTreeDump() const;
 
     void absoluteRects(Vector<IntRect>&, const LayoutPoint& accumulatedOffset) const override;
     void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const override;
index 8611279..ebe3bb4 100644 (file)
@@ -206,7 +206,7 @@ void RenderTreeAsText::writeRenderObject(TextStream& ts, const RenderObject& o,
             adjustForTableCells = false;
     } else if (o.isBR()) {
         const RenderLineBreak& br = downcast<RenderLineBreak>(o);
-        IntRect linesBox = br.linesBoundingBox();
+        IntRect linesBox = br.boundingBoxForRenderTreeDump();
         r = IntRect(linesBox.x(), linesBox.y(), linesBox.width(), linesBox.height());
         if (!br.inlineBoxWrapper())
             adjustForTableCells = false;
index 7ac7890..14c61c7 100644 (file)
@@ -67,14 +67,7 @@ FloatRect RunResolver::Run::rect() const
     float baseline = computeBaselinePosition();
     FloatPoint position = linePosition(run.logicalLeft, baseline - resolver.m_ascent);
     FloatSize size = lineSize(run.logicalLeft, run.logicalRight, resolver.m_ascent + resolver.m_descent + resolver.m_visualOverflowOffset);
-    bool moveLineBreakToBaseline = false;
-    if (run.start == run.end && m_iterator != resolver.begin() && resolver.m_inQuirksMode) {
-        auto previousRun = m_iterator;
-        --previousRun;
-        moveLineBreakToBaseline = !previousRun.simpleRun().isEndOfLine;
-    }
-    if (moveLineBreakToBaseline)
-        return FloatRect(FloatPoint(position.x(), baseline), FloatSize(size.width(), std::max<float>(0, resolver.m_ascent - resolver.m_baseline.toFloat())));
+
     return FloatRect(position, size);
 }
 
@@ -154,7 +147,6 @@ RunResolver::RunResolver(const RenderBlockFlow& flow, const Layout& layout)
     , m_ascent(flow.style().fontCascade().fontMetrics().ascent())
     , m_descent(flow.style().fontCascade().fontMetrics().descent())
     , m_visualOverflowOffset(visualOverflowForDecorations(flow.style(), nullptr).bottom)
-    , m_inQuirksMode(flow.document().inQuirksMode())
 {
 }
 
index 0e6fe25..f74a803 100644 (file)
@@ -58,6 +58,7 @@ public:
         float expansion() const;
         ExpansionBehavior expansionBehavior() const;
         int baselinePosition() const;
+        int baselineOffset() const { return m_iterator.resolver().m_baseline; }
         StringView text() const;
         String textWithHyphen() const;
         const RenderObject& renderer() const;
@@ -90,6 +91,8 @@ public:
 
         Run operator*() const;
 
+        bool atBegin() const;
+
     private:
         const SimpleLineLayout::Run& simpleRun() const;
         unsigned lineIndex() const { return m_lineIndex; }
@@ -131,7 +134,6 @@ private:
     const float m_ascent;
     const float m_descent;
     const float m_visualOverflowOffset;
-    const bool m_inQuirksMode;
 };
 
 class LineResolver {
@@ -254,6 +256,11 @@ inline RunResolver::Run RunResolver::Iterator::operator*() const
     return Run(*this);
 }
 
+inline bool RunResolver::Iterator::atBegin() const
+{
+    return *this == resolver().begin();
+}
+
 inline const SimpleLineLayout::Run& RunResolver::Iterator::simpleRun() const
 {
     return layout().runAt(m_runIndex);
index e91be52..71b926e 100644 (file)
@@ -61,9 +61,13 @@ public:
     FloatRect rect() const;
     FloatRect logicalRect() const;
 
+    float baselineOffset() const;
+
     bool isLeftToRightDirection() const;
+    bool isHorizontal() const;
     bool dirOverride() const;
     bool isLineBreak() const;
+    bool useLineBreakBoxRenderTreeDumpQuirk() const;
 
 protected:
     friend class ElementBoxIterator;
@@ -170,6 +174,13 @@ inline FloatRect Box::logicalRect() const
     });
 }
 
+inline float Box::baselineOffset() const
+{
+    return WTF::switchOn(m_pathVariant, [](auto& path) {
+        return path.baselineOffset();
+    });
+}
+
 inline bool Box::isLeftToRightDirection() const
 {
     return WTF::switchOn(m_pathVariant, [](auto& path) {
@@ -177,6 +188,13 @@ inline bool Box::isLeftToRightDirection() const
     });
 }
 
+inline bool Box::isHorizontal() const
+{
+    return WTF::switchOn(m_pathVariant, [](auto& path) {
+        return path.isHorizontal();
+    });
+}
+
 inline bool Box::dirOverride() const
 {
     return WTF::switchOn(m_pathVariant, [](auto& path) {
@@ -191,6 +209,13 @@ inline bool Box::isLineBreak() const
     });
 }
 
+inline bool Box::useLineBreakBoxRenderTreeDumpQuirk() const
+{
+    return WTF::switchOn(m_pathVariant, [](auto& path) {
+        return path.useLineBreakBoxRenderTreeDumpQuirk();
+    });
+}
+
 inline bool TextBox::hasHyphen() const
 {
     return WTF::switchOn(m_pathVariant, [](auto& path) {
@@ -245,5 +270,6 @@ inline bool TextBox::isLast() const
     });
 }
 
+
 }
 }
index 3643288..e151ae8 100644 (file)
@@ -44,8 +44,15 @@ public:
     FloatRect logicalRect() const { return m_inlineBox->logicalFrameRect(); }
 
     bool isLeftToRightDirection() const { return m_inlineBox->isLeftToRightDirection(); }
+    bool isHorizontal() const { return m_inlineBox->isHorizontal(); }
     bool dirOverride() const { return m_inlineBox->dirOverride(); }
     bool isLineBreak() const { return m_inlineBox->isLineBreak(); }
+    float baselineOffset() const { return m_inlineBox->baselinePosition(AlphabeticBaseline); }
+
+    bool useLineBreakBoxRenderTreeDumpQuirk() const
+    {
+        return !m_inlineBox->behavesLikeText();
+    }
 
     bool hasHyphen() const { return inlineTextBox()->hasHyphen(); }
     StringView text() const { return StringView(inlineTextBox()->renderer().text()).substring(inlineTextBox()->start(), inlineTextBox()->len()); }
index 185e27d..cfc315f 100644 (file)
@@ -58,10 +58,21 @@ public:
         return { position, logicalRect.size() };
     }
 
+    float baselineOffset() const { return lineBox().baselineOffset(); }
+
     bool isLeftToRightDirection() const { return true; }
+    bool isHorizontal() const { return true; }
     bool dirOverride() const { return false; }
     bool isLineBreak() const { return run().isLineBreak(); }
 
+    bool useLineBreakBoxRenderTreeDumpQuirk() const
+    {
+        if (!m_runIndex)
+            return false;
+        auto& previous = runs()[m_runIndex - 1];
+        return previous.lineIndex() == run().lineIndex();
+    }
+
     bool hasHyphen() const { return run().textContext()->needsHyphen(); }
     StringView text() const { return run().textContext()->content(); }
     unsigned localStartOffset() const { return run().textContext()->start(); }
@@ -73,7 +84,7 @@ public:
         if (isLast())
             return true;
         auto& next = runs()[m_runIndex + 1];
-        return run().lineIndex() != next.lineIndex();
+        return run().lineIndex() == next.lineIndex();
     }
     bool isLast() const
     {
@@ -93,6 +104,7 @@ public:
 private:
     const Display::InlineContent::Runs& runs() const { return m_inlineContent->runs; }
     const Display::Run& run() const { return runs()[m_runIndex]; }
+    const Display::LineBox& lineBox() const { return m_inlineContent->lineBoxForRun(run()); }
 
     RefPtr<const Display::InlineContent> m_inlineContent;
     size_t m_endIndex { 0 };
index f16d721..15822ae 100644 (file)
@@ -41,10 +41,22 @@ public:
     FloatRect rect() const { return (*m_iterator).rect(); }
     FloatRect logicalRect() const { return rect(); }
 
+    float baselineOffset() const { return (*m_iterator).baselineOffset(); }
+
     bool isLeftToRightDirection() const { return true; }
+    bool isHorizontal() const { return true; }
     bool dirOverride() const { return false; }
     bool isLineBreak() const { return (*m_iterator).isLineBreak(); }
 
+    bool useLineBreakBoxRenderTreeDumpQuirk() const
+    {
+        if (m_iterator.atBegin())
+            return false;
+        auto previous = m_iterator;
+        --previous;
+        return !(*previous).isEndOfLine();
+    }
+
     bool hasHyphen() const { return (*m_iterator).hasHyphen(); }
     StringView text() const { return (*m_iterator).text(); }
     unsigned localStartOffset() const { return (*m_iterator).localStart(); }