https://bugs.webkit.org/show_bug.cgi?id=46421, make multi-column layout work with vertical text.

Reviewed by Dan Bernstein.

Added new tests in fast/multicol/vertical-lr and fast/multicol/vertical-rl.

Source/WebCore: 

* css/html.css:
Update p, blockquote and h1-h6 to respect directionality so that column layout tests that use those
elements work properly.

* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::placeBoxesInBlockDirection):
Fix a flipping bug with the computation of lineTopIncludingMargins where it could be incorrectly shrunk
in some cases (causing lines to all stack on top of one another).

* rendering/InlineTextBox.h:
(WebCore::InlineTextBox::calculateBoundaries):
Fix calculateBoundaries to be physical rather than logical.

* rendering/LayoutState.cpp:
(WebCore::LayoutState::addForcedColumnBreak):
* rendering/LayoutState.h:
Rename childY to childLogicalOffset.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::layoutBlock):
(WebCore::RenderBlock::addOverflowFromChildren):
(WebCore::RenderBlock::addOverflowFromFloats):
(WebCore::RenderBlock::collapseMargins):
(WebCore::RenderBlock::estimateLogicalTopPosition):
(WebCore::RenderBlock::layoutBlockChild):
(WebCore::RenderBlock::markForPaginationRelayoutIfNeeded):
(WebCore::RenderBlock::paintColumnRules):
(WebCore::RenderBlock::paintColumnContents):
(WebCore::RenderBlock::paintFloats):
(WebCore::RenderBlock::selectionGaps):
(WebCore::RenderBlock::removeFloatingObjectsBelow):
(WebCore::RenderBlock::addOverhangingFloats):
(WebCore::RenderBlock::hitTestFloats):
(WebCore::RenderBlock::hitTestColumns):
(WebCore::RenderBlock::calcColumnWidth):
(WebCore::RenderBlock::desiredColumnWidth):
(WebCore::RenderBlock::columnRectAt):
(WebCore::RenderBlock::layoutColumns):
(WebCore::RenderBlock::adjustPointToColumnContents):
(WebCore::RenderBlock::adjustRectForColumns):
(WebCore::RenderBlock::flipForWritingModeIncludingColumns):
(WebCore::RenderBlock::adjustForColumns):
(WebCore::RenderBlock::adjustForBorderFit):
(WebCore::RenderBlock::nextPageLogicalTop):
(WebCore::RenderBlock::applyBeforeBreak):
(WebCore::RenderBlock::applyAfterBreak):
(WebCore::RenderBlock::adjustForUnsplittableChild):
(WebCore::RenderBlock::adjustLinePositionForPagination):
* rendering/RenderBlock.h:
(WebCore::RenderBlock::logicalRightOffsetForContent):
(WebCore::RenderBlock::logicalLeftOffsetForContent):
(WebCore::RenderBlock::leftForFloatIncludingMargin):
(WebCore::RenderBlock::topForFloatIncludingMargin):
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlock::layoutInlineChildren):
(WebCore::RenderBlock::determineStartPosition):
Reworking of all the RenderBlock column functions to support flipping and vertical modes.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::offsetFromContainer):
(WebCore::RenderBox::flipForWritingModeIncludingColumns):
Patch offsetFromContainer to be aware of flipped block writing modes when dealing with column layouts.

* rendering/RenderBox.h:
(WebCore::RenderBox::clientLogicalBottom):
Fix a bug in clientLogicalBottom where it didn't add in the right border/padding.
        
* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::layoutBlock):
Better terminology for pagination.

* rendering/RenderInline.cpp:
(WebCore::RenderInline::offsetFromContainer):
(WebCore::RenderInline::mapLocalToContainer):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintChildLayerIntoColumns):
(WebCore::RenderLayer::hitTestChildLayerColumns):
(WebCore::RenderLayer::localBoundingBox):
(WebCore::RenderLayer::boundingBox):
Patch painting in RenderLayers to be vertical-text-aware.
    
* rendering/RenderObject.cpp:
(WebCore::RenderObject::mapLocalToContainer):
Add code to be flipped block-aware with columns.

* rendering/RenderTable.cpp:
(WebCore::RenderTable::layout):
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::layout):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::layoutRows):
Fix pagination to use better terminology.
        
* rendering/RenderText.cpp:
(WebCore::RenderText::absoluteQuads):
(WebCore::RenderText::absoluteQuadsForRange):
Fix a bug where vertical text wasn't taken into account.

LayoutTests: 

* fast/multicol/break-properties-expected.txt:
* fast/multicol/break-properties.html:
* fast/multicol/float-truncation.html:
* fast/multicol/vertical-lr: Added.
* fast/multicol/vertical-lr/border-padding-pagination.html: Added.
* fast/multicol/vertical-lr/break-properties-expected.txt: Added.
* fast/multicol/vertical-lr/break-properties.html: Added.
* fast/multicol/vertical-lr/column-break-with-balancing.html: Added.
* fast/multicol/vertical-lr/column-count-with-rules.html: Added.
* fast/multicol/vertical-lr/column-rules.html: Added.
* fast/multicol/vertical-lr/float-avoidance.html: Added.
* fast/multicol/vertical-lr/float-multicol.html: Added.
* fast/multicol/vertical-lr/float-paginate-complex.html: Added.
* fast/multicol/vertical-lr/float-paginate.html: Added.
* fast/multicol/vertical-lr/float-truncation-expected.txt: Added.
* fast/multicol/vertical-lr/float-truncation.html: Added.
* fast/multicol/vertical-lr/gap-non-negative-expected.txt: Added.
* fast/multicol/vertical-lr/gap-non-negative.html: Added.
* fast/multicol/vertical-lr/image-inside-nested-blocks-with-border-expected.txt: Added.
* fast/multicol/vertical-lr/image-inside-nested-blocks-with-border.html: Added.
* fast/multicol/vertical-lr/nested-columns.html: Added.
* fast/multicol/vertical-lr/resources: Added.
* fast/multicol/vertical-lr/resources/blimp.png: Added.
* fast/multicol/vertical-lr/unsplittable-inline-block.html: Added.
* fast/multicol/vertical-rl: Added.
* fast/multicol/vertical-rl/border-padding-pagination.html: Added.
* fast/multicol/vertical-rl/break-properties-expected.txt: Added.
* fast/multicol/vertical-rl/break-properties.html: Added.
* fast/multicol/vertical-rl/column-break-with-balancing.html: Added.
* fast/multicol/vertical-rl/column-count-with-rules.html: Added.
* fast/multicol/vertical-rl/column-rules.html: Added.
* fast/multicol/vertical-rl/float-avoidance.html: Added.
* fast/multicol/vertical-rl/float-multicol.html: Added.
* fast/multicol/vertical-rl/float-paginate-complex.html: Added.
* fast/multicol/vertical-rl/float-paginate.html: Added.
* fast/multicol/vertical-rl/float-truncation-expected.txt: Added.
* fast/multicol/vertical-rl/float-truncation.html: Added.
* fast/multicol/vertical-rl/gap-non-negative-expected.txt: Added.
* fast/multicol/vertical-rl/gap-non-negative.html: Added.
* fast/multicol/vertical-rl/image-inside-nested-blocks-with-border-expected.txt: Added.
* fast/multicol/vertical-rl/image-inside-nested-blocks-with-border.html: Added.
* fast/multicol/vertical-rl/nested-columns.html: Added.
* fast/multicol/vertical-rl/resources: Added.
* fast/multicol/vertical-rl/resources/blimp.png: Added.
* fast/multicol/vertical-rl/unsplittable-inline-block.html: Added.
* platform/mac/fast/multicol/vertical-lr: Added.
* platform/mac/fast/multicol/vertical-lr/border-padding-pagination-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-lr/border-padding-pagination-expected.png: Added.
* platform/mac/fast/multicol/vertical-lr/border-padding-pagination-expected.txt: Added.
* platform/mac/fast/multicol/vertical-lr/column-break-with-balancing-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-lr/column-break-with-balancing-expected.png: Added.
* platform/mac/fast/multicol/vertical-lr/column-break-with-balancing-expected.txt: Added.
* platform/mac/fast/multicol/vertical-lr/column-count-with-rules-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-lr/column-count-with-rules-expected.png: Added.
* platform/mac/fast/multicol/vertical-lr/column-count-with-rules-expected.txt: Added.
* platform/mac/fast/multicol/vertical-lr/column-rules-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-lr/column-rules-expected.png: Added.
* platform/mac/fast/multicol/vertical-lr/column-rules-expected.txt: Added.
* platform/mac/fast/multicol/vertical-lr/float-avoidance-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-lr/float-avoidance-expected.png: Added.
* platform/mac/fast/multicol/vertical-lr/float-avoidance-expected.txt: Added.
* platform/mac/fast/multicol/vertical-lr/float-multicol-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-lr/float-multicol-expected.png: Added.
* platform/mac/fast/multicol/vertical-lr/float-multicol-expected.txt: Added.
* platform/mac/fast/multicol/vertical-lr/float-paginate-complex-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-lr/float-paginate-complex-expected.png: Added.
* platform/mac/fast/multicol/vertical-lr/float-paginate-complex-expected.txt: Added.
* platform/mac/fast/multicol/vertical-lr/float-paginate-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-lr/float-paginate-expected.png: Added.
* platform/mac/fast/multicol/vertical-lr/float-paginate-expected.txt: Added.
* platform/mac/fast/multicol/vertical-lr/nested-columns-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-lr/nested-columns-expected.png: Added.
* platform/mac/fast/multicol/vertical-lr/nested-columns-expected.txt: Added.
* platform/mac/fast/multicol/vertical-lr/unsplittable-inline-block-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-lr/unsplittable-inline-block-expected.png: Added.
* platform/mac/fast/multicol/vertical-lr/unsplittable-inline-block-expected.txt: Added.
* platform/mac/fast/multicol/vertical-rl: Added.
* platform/mac/fast/multicol/vertical-rl/border-padding-pagination-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-rl/border-padding-pagination-expected.png: Added.
* platform/mac/fast/multicol/vertical-rl/border-padding-pagination-expected.txt: Added.
* platform/mac/fast/multicol/vertical-rl/column-break-with-balancing-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-rl/column-break-with-balancing-expected.png: Added.
* platform/mac/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt: Added.
* platform/mac/fast/multicol/vertical-rl/column-count-with-rules-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-rl/column-count-with-rules-expected.png: Added.
* platform/mac/fast/multicol/vertical-rl/column-count-with-rules-expected.txt: Added.
* platform/mac/fast/multicol/vertical-rl/column-rules-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-rl/column-rules-expected.png: Added.
* platform/mac/fast/multicol/vertical-rl/column-rules-expected.txt: Added.
* platform/mac/fast/multicol/vertical-rl/float-avoidance-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-rl/float-avoidance-expected.png: Added.
* platform/mac/fast/multicol/vertical-rl/float-avoidance-expected.txt: Added.
* platform/mac/fast/multicol/vertical-rl/float-multicol-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-rl/float-multicol-expected.png: Added.
* platform/mac/fast/multicol/vertical-rl/float-multicol-expected.txt: Added.
* platform/mac/fast/multicol/vertical-rl/float-paginate-complex-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-rl/float-paginate-complex-expected.png: Added.
* platform/mac/fast/multicol/vertical-rl/float-paginate-complex-expected.txt: Added.
* platform/mac/fast/multicol/vertical-rl/float-paginate-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-rl/float-paginate-expected.png: Added.
* platform/mac/fast/multicol/vertical-rl/float-paginate-expected.txt: Added.
* platform/mac/fast/multicol/vertical-rl/nested-columns-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-rl/nested-columns-expected.png: Added.
* platform/mac/fast/multicol/vertical-rl/nested-columns-expected.txt: Added.
* platform/mac/fast/multicol/vertical-rl/unsplittable-inline-block-expected.checksum: Added.
* platform/mac/fast/multicol/vertical-rl/unsplittable-inline-block-expected.png: Added.
* platform/mac/fast/multicol/vertical-rl/unsplittable-inline-block-expected.txt: Added.



git-svn-id: svn://svn.chromium.org/blink/trunk@76726 bbb929c8-8fbe-4397-9dbb-9b2b20218538
diff --git a/Source/WebCore/css/html.css b/Source/WebCore/css/html.css
index 3c75559..135ebf9 100644
--- a/Source/WebCore/css/html.css
+++ b/Source/WebCore/css/html.css
@@ -61,7 +61,10 @@
 
 p {
     display: block;
-    margin: 1.0__qem 0px
+    -webkit-margin-before: 1__qem;
+    -webkit-margin-after: 1__qem;
+    -webkit-margin-start: 0;
+    -webkit-margin-end: 0;
 }
 
 div {
@@ -87,7 +90,10 @@
 
 blockquote {
     display: block;
-    margin: 1__qem 40px 1em 40px
+    -webkit-margin-before: 1__qem;
+    -webkit-margin-after: 1em;
+    -webkit-margin-start: 40px;
+    -webkit-margin-end: 40px;
 }
 
 figcaption {
@@ -96,7 +102,10 @@
 
 figure {
     display: block;
-    margin: 1em 40px 1em 40px
+    -webkit-margin-before: 1em;
+    -webkit-margin-after: 1em;
+    -webkit-margin-start: 40px;
+    -webkit-margin-end: 40px;
 }
 
 q {
@@ -121,7 +130,10 @@
 
 hr {
     display: block;
-    margin: 0.5em auto;
+    -webkit-margin-before: 0.5em;
+    -webkit-margin-after: 0.5em;
+    -webkit-margin-start: auto;
+    -webkit-margin-end: auto;
     border-style: inset;
     border-width: 1px
 }
@@ -135,41 +147,59 @@
 h1 {
     display: block;
     font-size: 2em;
-    margin: .67__qem 0 .67em 0;
+    -webkit-margin-before: 0.67__qem;
+    -webkit-margin-after: 0.67em;
+    -webkit-margin-start: 0;
+    -webkit-margin-end: 0;
     font-weight: bold
 }
 
 h2 {
     display: block;
     font-size: 1.5em;
-    margin: .83__qem 0 .83em 0;
+    -webkit-margin-before: 0.83__qem;
+    -webkit-margin-after: 0.83em;
+    -webkit-margin-start: 0;
+    -webkit-margin-end: 0;
     font-weight: bold
 }
 
 h3 {
     display: block;
     font-size: 1.17em;
-    margin: 1__qem 0 1em 0;
+    -webkit-margin-before: 1__qem;
+    -webkit-margin-after: 1em;
+    -webkit-margin-start: 0;
+    -webkit-margin-end: 0;
     font-weight: bold
 }
 
 h4 {
     display: block;
-    margin: 1.33__qem 0 1.33em 0;
+    -webkit-margin-before: 1.33__qem;
+    -webkit-margin-after: 1.33em;
+    -webkit-margin-start: 0;
+    -webkit-margin-end: 0;
     font-weight: bold
 }
 
 h5 {
     display: block;
     font-size: .83em;
-    margin: 1.67__qem 0 1.67em 0;
+    -webkit-margin-before: 1.67__qem;
+    -webkit-margin-after: 1.67em;
+    -webkit-margin-start: 0;
+    -webkit-margin-end: 0;
     font-weight: bold
 }
 
 h6 {
     display: block;
     font-size: .67em;
-    margin: 2.33__qem 0 2.33em 0;
+    -webkit-margin-before: 2.33__qem;
+    -webkit-margin-after: 2.33em;
+    -webkit-margin-start: 0;
+    -webkit-margin-end: 0;
     font-weight: bold
 }