[CSS Regions] Break after doesn't work correctly with auto-height regions
authorabucur@adobe.com <abucur@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 13 Mar 2013 18:32:14 +0000 (18:32 +0000)
committerabucur@adobe.com <abucur@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 13 Mar 2013 18:32:14 +0000 (18:32 +0000)
https://bugs.webkit.org/show_bug.cgi?id=112241

Reviewed by David Hyatt.

Source/WebCore:

The change correctly returns the break position during the normal layout phase for
auto-height regions. The problem doesn't exist during the constrained layout phase
so it only affects the size of the auto-height regions by incorrectly positioning
the content inside the flow.

Test: fast/regions/autoheight-break-after.html

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::applyAfterBreak): Include the margin offset in the returned break position.

LayoutTests:

This reference test verifies the correct break positioned is computed when there are auto-height regions during
the normal layout phase.
The test includes an auto-height region, a region with a specified size and an auto-height region. The first
region ends with a paragraph with a forced break after. During the normal layout phase, if the paragraph margin
is not included in the break offset, the next paragraph is incorrectly positioned and it will result in an
incorrectly sized last region.
In the constrained layout phase, the break position is returned correctly, the paragraph is positioned further down
causing overflow in the auto-height region.

* fast/regions/autoheight-break-after-expected.html: Added.
* fast/regions/autoheight-break-after.html: Added.

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

LayoutTests/ChangeLog
LayoutTests/fast/regions/autoheight-break-after-expected.html [new file with mode: 0644]
LayoutTests/fast/regions/autoheight-break-after.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/rendering/RenderBlock.cpp

index fc95bce..eb01748 100644 (file)
@@ -1,3 +1,22 @@
+2013-03-13  Andrei Bucur  <abucur@adobe.com>
+
+        [CSS Regions] Break after doesn't work correctly with auto-height regions
+        https://bugs.webkit.org/show_bug.cgi?id=112241
+
+        Reviewed by David Hyatt.
+
+        This reference test verifies the correct break positioned is computed when there are auto-height regions during
+        the normal layout phase.
+        The test includes an auto-height region, a region with a specified size and an auto-height region. The first
+        region ends with a paragraph with a forced break after. During the normal layout phase, if the paragraph margin
+        is not included in the break offset, the next paragraph is incorrectly positioned and it will result in an
+        incorrectly sized last region.
+        In the constrained layout phase, the break position is returned correctly, the paragraph is positioned further down
+        causing overflow in the auto-height region.
+
+        * fast/regions/autoheight-break-after-expected.html: Added.
+        * fast/regions/autoheight-break-after.html: Added.
+
 2013-03-13  Philip Rogers  <pdr@google.com>
 
         Fix body background image geometry calculation
diff --git a/LayoutTests/fast/regions/autoheight-break-after-expected.html b/LayoutTests/fast/regions/autoheight-break-after-expected.html
new file mode 100644 (file)
index 0000000..a38c729
--- /dev/null
@@ -0,0 +1,35 @@
+<!doctype html>
+<html>
+    <head>
+        <style>
+            .region {
+                width: 200px;
+                margin: 10px;
+                float: left;
+            }
+            .regionAuto {
+                border: thick solid red;
+            }
+            .regionNonAuto {
+                height: 200px;
+                border: thick solid blue;
+            }
+            #break_after {
+                -webkit-region-break-after: always;
+                margin-bottom: 100px;
+            }
+            .region > p {
+                font-family: Ahem;
+                font-size: 10px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=112241"> [CSS Regions] Break after doesn't work correctly with auto-height regions</a>.</p>
+        <p>There are three regions: one with auto-height (red), one with a specified height (blue) and the last one with auto-height (red). The first region contains a paragraph with a break after. The last auto-height region should fit the lorem ipsum content fragment.</p>
+        <p>On success, you should not see overflow in the last region.</p>
+        <div class="region regionAuto"><p id="break_after">BreakAfter</p></div>
+        <div class="region regionNonAuto"><p style="margin-bottom: 0px;">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tempor est eu turpis tincidunt at sollicitudin felis fermentum. Nullam sollicitudin eros at elit facilisis condimentum. Ut tempor, nunc at volutpat cursus, sapien mi gravida velit, ut ullamcorper felis nunc ac risus. Suspendisse vel eros</p></div>
+        <div class="region regionAuto"><p style="margin-top: 0px;">tortor, non cursus metus. Nam hendrerit pharetra sapien, sodales mattis arcu varius a. Curabitur non arcu id sem hendrerit tincidunt vel a nisi. Phasellus at erat nec nunc consectetur posuere. Aliquam consequat tempus pulvinar. Pellentesque ut sapien quis urna vestibulum dignissim.</p></div>
+    </body>
+</html>
diff --git a/LayoutTests/fast/regions/autoheight-break-after.html b/LayoutTests/fast/regions/autoheight-break-after.html
new file mode 100644 (file)
index 0000000..d3fd065
--- /dev/null
@@ -0,0 +1,41 @@
+<!doctype html>
+<html>
+    <head>
+        <style>
+            .region {
+                width: 200px;
+                margin: 10px;
+                float: left;
+                -webkit-flow-from: flow;
+            }
+            .regionAuto {
+                border: thick solid red;
+            }
+            .regionNonAuto {
+                height: 200px;
+                border: thick solid blue;
+            }
+            .content {
+                font-family: Ahem;
+                font-size: 10px;
+                -webkit-flow-into: flow;
+            }
+            #break_after {
+                -webkit-region-break-after: always;
+                margin-bottom: 100px;
+            }
+        </style>
+    </head>
+    <body>
+        <p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=112241"> [CSS Regions] Break after doesn't work correctly with auto-height regions</a>.</p>
+        <p>There are three regions: one with auto-height (red), one with a specified height (blue) and the last one with auto-height (red). The first region contains a paragraph with a break after. The last auto-height region should fit the lorem ipsum content fragment.</p>
+        <p>On success, you should not see overflow in the last region.</p>
+        <div class="content">
+            <p id="break_after">BreakAfter</p>
+            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque tempor est eu turpis tincidunt at sollicitudin felis fermentum. Nullam sollicitudin eros at elit facilisis condimentum. Ut tempor, nunc at volutpat cursus, sapien mi gravida velit, ut ullamcorper felis nunc ac risus. Suspendisse vel eros tortor, non cursus metus. Nam hendrerit pharetra sapien, sodales mattis arcu varius a. Curabitur non arcu id sem hendrerit tincidunt vel a nisi. Phasellus at erat nec nunc consectetur posuere. Aliquam consequat tempus pulvinar. Pellentesque ut sapien quis urna vestibulum dignissim.</p>
+        </div>
+        <div class="region regionAuto"></div>
+        <div class="region regionNonAuto"></div>
+        <div class="region regionAuto"></div>
+    </body>
+</html>
index 9e38012..94d4229 100644 (file)
@@ -1,3 +1,20 @@
+2013-03-13  Andrei Bucur  <abucur@adobe.com>
+
+        [CSS Regions] Break after doesn't work correctly with auto-height regions
+        https://bugs.webkit.org/show_bug.cgi?id=112241
+
+        Reviewed by David Hyatt.
+
+        The change correctly returns the break position during the normal layout phase for
+        auto-height regions. The problem doesn't exist during the constrained layout phase
+        so it only affects the size of the auto-height regions by incorrectly positioning
+        the content inside the flow.
+
+        Test: fast/regions/autoheight-break-after.html
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::applyAfterBreak): Include the margin offset in the returned break position.
+
 2013-03-12  Andrey Kosyakov  <caseq@chromium.org>
 
         Web Inspector: coalesce repeating timeline records
index 373b91e..24e4ebd 100644 (file)
@@ -7320,7 +7320,7 @@ LayoutUnit RenderBlock::applyAfterBreak(RenderBox* child, LayoutUnit logicalOffs
         if (checkRegionBreaks) {
             LayoutUnit offsetBreakAdjustment = 0;
             if (flowThread->addForcedRegionBreak(offsetFromLogicalTopOfFirstPage() + logicalOffset + marginOffset, child, false, &offsetBreakAdjustment))
-                return logicalOffset + offsetBreakAdjustment;
+                return logicalOffset + marginOffset + offsetBreakAdjustment;
         }
         return nextPageLogicalTop(logicalOffset, IncludePageBoundary);
     }