Title: [101703] trunk
Revision
101703
Author
[email protected]
Date
2011-12-01 13:51:16 -0800 (Thu, 01 Dec 2011)

Log Message

Need to implement flex-flow: row-reverse
https://bugs.webkit.org/show_bug.cgi?id=70778

Reviewed by Ojan Vafai.

Source/WebCore:

We can't just change the direction of the FlexOrderIterator because we want the overflow to be
on the left side.  Instead, we apply similar logic as when we're laying out RTL content. Putting
the check in isLeftToRightFlow() lets us flip the flexbox's border and padding and the flexitems'
margins.  We then layout from right to left in layoutAndPlaceChildren.

Also remove 2 uncalled functions.

* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::isReverseFlow):
(WebCore::RenderFlexibleBox::isLeftToRightFlow):
* rendering/RenderFlexibleBox.h:

LayoutTests:

* css3/flexbox/flex-flow-expected.txt:
* css3/flexbox/flex-flow.html: Added test cases to make sure start and end still apply to the text flow direction.
* css3/flexbox/flex-flow-border-expected.txt:
* css3/flexbox/flex-flow-border.html: Single flexitem, so reverse does nothing
* css3/flexbox/flex-flow-margins-auto-size-expected.txt:
* css3/flexbox/flex-flow-margins-auto-size.html: Ditto.  The orthogonal tests fail, but they've always failed.
* css3/flexbox/flex-flow-margins-expected.txt:
* css3/flexbox/flex-flow-margins.html: Ditto.
* css3/flexbox/flex-flow-orientations-expected.txt:
* css3/flexbox/flex-flow-orientations.html: This test has 2 flexitems, the positions of which are now flipped.
* css3/flexbox/flex-flow-overflow-expected.txt:
* css3/flexbox/flex-flow-overflow.html: The overflow should go in the opposite direction. That is, the overflow
of rtl should be the same as row-reverse.
* css3/flexbox/flex-flow-padding-expected.txt:
* css3/flexbox/flex-flow-padding.html: Single flexitem, no change.

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (101702 => 101703)


--- trunk/LayoutTests/ChangeLog	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/ChangeLog	2011-12-01 21:51:16 UTC (rev 101703)
@@ -1,3 +1,26 @@
+2011-12-01  Tony Chang  <[email protected]>
+
+        Need to implement flex-flow: row-reverse
+        https://bugs.webkit.org/show_bug.cgi?id=70778
+
+        Reviewed by Ojan Vafai.
+
+        * css3/flexbox/flex-flow-expected.txt:
+        * css3/flexbox/flex-flow.html: Added test cases to make sure start and end still apply to the text flow direction.
+        * css3/flexbox/flex-flow-border-expected.txt:
+        * css3/flexbox/flex-flow-border.html: Single flexitem, so reverse does nothing
+        * css3/flexbox/flex-flow-margins-auto-size-expected.txt:
+        * css3/flexbox/flex-flow-margins-auto-size.html: Ditto.  The orthogonal tests fail, but they've always failed.
+        * css3/flexbox/flex-flow-margins-expected.txt:
+        * css3/flexbox/flex-flow-margins.html: Ditto.
+        * css3/flexbox/flex-flow-orientations-expected.txt:
+        * css3/flexbox/flex-flow-orientations.html: This test has 2 flexitems, the positions of which are now flipped.
+        * css3/flexbox/flex-flow-overflow-expected.txt:
+        * css3/flexbox/flex-flow-overflow.html: The overflow should go in the opposite direction. That is, the overflow
+        of rtl should be the same as row-reverse.
+        * css3/flexbox/flex-flow-padding-expected.txt:
+        * css3/flexbox/flex-flow-padding.html: Single flexitem, no change.
+
 2011-12-01  Jeff Timanus  <[email protected]>
 
         Cleaning up comments and unused portions of a webgl test, as per review comments.

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-border-expected.txt (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-border-expected.txt	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-border-expected.txt	2011-12-01 21:51:16 UTC (rev 101703)
@@ -14,6 +14,14 @@
 PASS
 horizontal-tb ltr column logical
 PASS
+horizontal-tb rtl row-reverse physical
+PASS
+horizontal-tb rtl row-reverse logical
+PASS
+horizontal-tb ltr row-reverse physical
+PASS
+horizontal-tb ltr row-reverse logical
+PASS
 horizontal-bt rtl row physical
 PASS
 horizontal-bt rtl row logical
@@ -30,6 +38,14 @@
 PASS
 horizontal-bt ltr column logical
 PASS
+horizontal-bt rtl row-reverse physical
+PASS
+horizontal-bt rtl row-reverse logical
+PASS
+horizontal-bt ltr row-reverse physical
+PASS
+horizontal-bt ltr row-reverse logical
+PASS
 vertical-lr rtl row physical
 PASS
 vertical-lr rtl row logical
@@ -46,6 +62,14 @@
 PASS
 vertical-lr ltr column logical
 PASS
+vertical-lr rtl row-reverse physical
+PASS
+vertical-lr rtl row-reverse logical
+PASS
+vertical-lr ltr row-reverse physical
+PASS
+vertical-lr ltr row-reverse logical
+PASS
 vertical-rl rtl row physical
 PASS
 vertical-rl rtl row logical
@@ -62,4 +86,12 @@
 PASS
 vertical-rl ltr column logical
 PASS
+vertical-rl rtl row-reverse physical
+PASS
+vertical-rl rtl row-reverse logical
+PASS
+vertical-rl ltr row-reverse physical
+PASS
+vertical-rl ltr row-reverse logical
+PASS
 

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-border.html (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-border.html	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-border.html	2011-12-01 21:51:16 UTC (rev 101703)
@@ -224,8 +224,8 @@
 }
 
 var writingModes = ['horizontal-tb', 'horizontal-bt', 'vertical-lr', 'vertical-rl'];
-// FIXME: Test row-reverse and column-reverse.
-var flexFlows = ['row', 'column'];
+// FIXME: Test column-reverse.
+var flexFlows = ['row', 'column', 'row-reverse'];
 var directions = ['rtl', 'ltr'];
 var marginTypes = ['physical', 'logical'];
 
@@ -248,7 +248,7 @@
                 container.setAttribute('data-expected-height', expectations.size[1]);
 
                 container.innerHTML = '\n<div class="flexbox ' + flexboxClassName + '" ' + positionAsString(expectations.position) + ' ' + offsetSizeAsString(expectations.size) + '>\n' +
-                    '<div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" ' + asString(expectations[flexFlow]) + '></div>\n' +
+                    '<div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" ' + asString(expectations[flexFlow.replace("-reverse", "")]) + '></div>\n' +
                 '</div>\n';
 
                 document.body.appendChild(container);   

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-expected.txt (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-expected.txt	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-expected.txt	2011-12-01 21:51:16 UTC (rev 101703)
@@ -4,3 +4,5 @@
 PASS
 PASS
 PASS
+PASS
+PASS

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-margins-auto-size-expected.txt (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-margins-auto-size-expected.txt	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-margins-auto-size-expected.txt	2011-12-01 21:51:16 UTC (rev 101703)
@@ -6,6 +6,10 @@
 PASS
 horizontal-tb ltr column
 PASS
+horizontal-tb rtl row-reverse
+PASS
+horizontal-tb ltr row-reverse
+PASS
 horizontal-bt rtl row
 PASS
 horizontal-bt ltr row
@@ -14,6 +18,10 @@
 PASS
 horizontal-bt ltr column
 PASS
+horizontal-bt rtl row-reverse
+PASS
+horizontal-bt ltr row-reverse
+PASS
 vertical-lr rtl row
 FAIL:
 Expected 90 for width, but got 60. 
@@ -42,6 +50,20 @@
 <div class="container" data-expected-width="90" data-expected-height="90"><div class="flexbox vertical-lr ltr column" data-offset-x="40" data-offset-y="10">
 <div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" data-expected-width="20" data-expected-height="20" data-offset-x="48" data-offset-y="23"></div>
 </div></div>
+vertical-lr rtl row-reverse
+FAIL:
+Expected 90 for width, but got 60. 
+
+<div class="container" data-expected-width="90" data-expected-height="90"><div class="flexbox vertical-lr rtl row-reverse" data-offset-x="40" data-offset-y="10">
+<div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" data-expected-width="20" data-expected-height="20" data-offset-x="48" data-offset-y="23"></div>
+</div></div>
+vertical-lr ltr row-reverse
+FAIL:
+Expected 90 for width, but got 60. 
+
+<div class="container" data-expected-width="90" data-expected-height="90"><div class="flexbox vertical-lr ltr row-reverse" data-offset-x="40" data-offset-y="10">
+<div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" data-expected-width="20" data-expected-height="20" data-offset-x="48" data-offset-y="23"></div>
+</div></div>
 vertical-rl rtl row
 FAIL:
 Expected 90 for width, but got 60. 
@@ -70,4 +92,18 @@
 <div class="container" data-expected-width="90" data-expected-height="90"><div class="flexbox vertical-rl ltr column" data-offset-x="40" data-offset-y="10">
 <div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" data-expected-width="20" data-expected-height="20" data-offset-x="48" data-offset-y="23"></div>
 </div></div>
+vertical-rl rtl row-reverse
+FAIL:
+Expected 90 for width, but got 60. 
 
+<div class="container" data-expected-width="90" data-expected-height="90"><div class="flexbox vertical-rl rtl row-reverse" data-offset-x="40" data-offset-y="10">
+<div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" data-expected-width="20" data-expected-height="20" data-offset-x="48" data-offset-y="23"></div>
+</div></div>
+vertical-rl ltr row-reverse
+FAIL:
+Expected 90 for width, but got 60. 
+
+<div class="container" data-expected-width="90" data-expected-height="90"><div class="flexbox vertical-rl ltr row-reverse" data-offset-x="40" data-offset-y="10">
+<div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" data-expected-width="20" data-expected-height="20" data-offset-x="48" data-offset-y="23"></div>
+</div></div>
+

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-margins-auto-size.html (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-margins-auto-size.html	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-margins-auto-size.html	2011-12-01 21:51:16 UTC (rev 101703)
@@ -62,8 +62,8 @@
 // The vertical test cases are failing because of the orthogonal writing modes.
 // https://bugs.webkit.org/show_bug.cgi?id=70769
 var writingModes = ['horizontal-tb', 'horizontal-bt', 'vertical-lr', 'vertical-rl'];
-// FIXME: Test row-reverse and column-reverse.
-var flexFlows = ['row', 'column'];
+// FIXME: Test column-reverse.
+var flexFlows = ['row', 'column', 'row-reverse'];
 var directions = ['rtl', 'ltr'];
 
 writingModes.forEach(function(writingMode) {

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-margins-expected.txt (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-margins-expected.txt	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-margins-expected.txt	2011-12-01 21:51:16 UTC (rev 101703)
@@ -14,6 +14,14 @@
 PASS
 horizontal-tb ltr column logical
 PASS
+horizontal-tb rtl row-reverse physical
+PASS
+horizontal-tb rtl row-reverse logical
+PASS
+horizontal-tb ltr row-reverse physical
+PASS
+horizontal-tb ltr row-reverse logical
+PASS
 horizontal-bt rtl row physical
 PASS
 horizontal-bt rtl row logical
@@ -30,6 +38,14 @@
 PASS
 horizontal-bt ltr column logical
 PASS
+horizontal-bt rtl row-reverse physical
+PASS
+horizontal-bt rtl row-reverse logical
+PASS
+horizontal-bt ltr row-reverse physical
+PASS
+horizontal-bt ltr row-reverse logical
+PASS
 vertical-lr rtl row physical
 PASS
 vertical-lr rtl row logical
@@ -46,6 +62,14 @@
 PASS
 vertical-lr ltr column logical
 PASS
+vertical-lr rtl row-reverse physical
+PASS
+vertical-lr rtl row-reverse logical
+PASS
+vertical-lr ltr row-reverse physical
+PASS
+vertical-lr ltr row-reverse logical
+PASS
 vertical-rl rtl row physical
 PASS
 vertical-rl rtl row logical
@@ -62,4 +86,12 @@
 PASS
 vertical-rl ltr column logical
 PASS
+vertical-rl rtl row-reverse physical
+PASS
+vertical-rl rtl row-reverse logical
+PASS
+vertical-rl ltr row-reverse physical
+PASS
+vertical-rl ltr row-reverse logical
+PASS
 

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-margins.html (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-margins.html	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-margins.html	2011-12-01 21:51:16 UTC (rev 101703)
@@ -214,8 +214,8 @@
 }
 
 var writingModes = ['horizontal-tb', 'horizontal-bt', 'vertical-lr', 'vertical-rl'];
-// FIXME: Test row-reverse and column-reverse.
-var flexFlows = ['row', 'column'];
+// FIXME: Test column-reverse.
+var flexFlows = ['row', 'column', 'row-reverse'];
 var directions = ['rtl', 'ltr'];
 var marginTypes = ['physical', 'logical'];
 
@@ -233,7 +233,7 @@
                 expectations = expectations[writingMode][direction];
                 var flexboxExpectations = positionAsString(expectations.flexbox);
 
-                var flexItemExpectations = asString(expectations[flexFlow]);
+                var flexItemExpectations = asString(expectations[flexFlow.replace("-reverse", "")]);
 
                 var container = document.createElement('div');
                 container.className = 'container';

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-orientations-expected.txt (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-orientations-expected.txt	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-orientations-expected.txt	2011-12-01 21:51:16 UTC (rev 101703)
@@ -6,6 +6,10 @@
 PASS
 horizontal-tb ltr column
 PASS
+horizontal-tb rtl row-reverse
+PASS
+horizontal-tb ltr row-reverse
+PASS
 horizontal-bt rtl row
 PASS
 horizontal-bt ltr row
@@ -14,6 +18,10 @@
 PASS
 horizontal-bt ltr column
 PASS
+horizontal-bt rtl row-reverse
+PASS
+horizontal-bt ltr row-reverse
+PASS
 vertical-lr rtl row
 PASS
 vertical-lr ltr row
@@ -22,6 +30,10 @@
 PASS
 vertical-lr ltr column
 PASS
+vertical-lr rtl row-reverse
+PASS
+vertical-lr ltr row-reverse
+PASS
 vertical-rl rtl row
 PASS
 vertical-rl ltr row
@@ -30,4 +42,8 @@
 PASS
 vertical-rl ltr column
 PASS
+vertical-rl rtl row-reverse
+PASS
+vertical-rl ltr row-reverse
+PASS
 

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-orientations.html (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-orientations.html	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-orientations.html	2011-12-01 21:51:16 UTC (rev 101703)
@@ -78,6 +78,10 @@
         row: {
             rtl: [[80, 0], [60, 0]],
             ltr: [[0, 0], [20, 0]]
+        },
+        'row-reverse': {
+            rtl: [[0, 0], [20, 0]],
+            ltr: [[80, 0], [60, 0]]
         }
     },
     'horizontal-bt': {
@@ -88,6 +92,10 @@
         row: {
             rtl: [[80, 80], [60, 80]],
             ltr: [[0, 80], [20, 80]]
+        },
+        'row-reverse': {
+            rtl: [[0, 80], [20, 80]],
+            ltr: [[80, 80], [60, 80]]
         }
     },
     'vertical-lr': {
@@ -98,6 +106,10 @@
         row: {
             rtl: [[0, 80], [0, 60]],
             ltr: [[0, 0], [0, 20]]
+        },
+        'row-reverse': {
+            rtl: [[0, 0], [0, 20]],
+            ltr: [[0, 80], [0, 60]]
         }
     },
     'vertical-rl': {
@@ -108,13 +120,17 @@
         row: {
             rtl: [[80, 80], [80, 60]],
             ltr: [[80, 0], [80, 20]]
+        },
+        'row-reverse': {
+            rtl: [[80, 0], [80, 20]],
+            ltr: [[80, 80], [80, 60]]
         }
     }
 };
 
 var writingModes = ['horizontal-tb', 'horizontal-bt', 'vertical-lr', 'vertical-rl'];
-// FIXME: Test row-reverse and column-reverse.
-var flexFlows = ['row', 'column'];
+// FIXME: Test column-reverse.
+var flexFlows = ['row', 'column', 'row-reverse'];
 var directions = ['rtl', 'ltr'];
 
 function physicalWritingMode(writingMode, flexFlow, direction)

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-overflow-expected.txt (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-overflow-expected.txt	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-overflow-expected.txt	2011-12-01 21:51:16 UTC (rev 101703)
@@ -6,6 +6,10 @@
 PASS
 horizontal-tb ltr column
 PASS
+horizontal-tb rtl row-reverse
+PASS
+horizontal-tb ltr row-reverse
+PASS
 horizontal-bt rtl row
 PASS
 horizontal-bt ltr row
@@ -14,6 +18,10 @@
 PASS
 horizontal-bt ltr column
 PASS
+horizontal-bt rtl row-reverse
+PASS
+horizontal-bt ltr row-reverse
+PASS
 vertical-lr rtl row
 PASS
 vertical-lr ltr row
@@ -22,6 +30,10 @@
 PASS
 vertical-lr ltr column
 PASS
+vertical-lr rtl row-reverse
+PASS
+vertical-lr ltr row-reverse
+PASS
 vertical-rl rtl row
 PASS
 vertical-rl ltr row
@@ -30,4 +42,8 @@
 PASS
 vertical-rl ltr column
 PASS
+vertical-rl rtl row-reverse
+PASS
+vertical-rl ltr row-reverse
+PASS
 

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-overflow.html (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-overflow.html	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-overflow.html	2011-12-01 21:51:16 UTC (rev 101703)
@@ -90,8 +90,8 @@
 }
 
 var writingModes = ['horizontal-tb', 'horizontal-bt', 'vertical-lr', 'vertical-rl'];
-// FIXME: Test row-reverse and column-reverse.
-var flexFlows = ['row', 'column'];
+// FIXME: Test column-reverse.
+var flexFlows = ['row', 'column', 'row-reverse'];
 var directions = ['rtl', 'ltr'];
 
 writingModes.forEach(function(writingMode) {
@@ -108,8 +108,12 @@
             container.setAttribute('data-expected-width', containerSize[0]);
             container.setAttribute('data-expected-height', containerSize[1]);
 
+            var flowDirection = direction;
+            if (flexFlow.indexOf("-reverse") != -1)
+                flowDirection = direction == "rtl" ? "ltr" : "rtl";
+
             container.innerHTML = '\n<div class="flexbox ' + flexboxClassName + '" ' + sizeAsString(containerSize) + '>\n' +
-                '<div style="width: -webkit-flex(1 105px); height: -webkit-flex(1 105px);" ' + sizeAsString([105, 105])  + ' ' + positionAsString(expectations[writingMode][direction]) + '></div>\n' +
+                '<div style="width: -webkit-flex(1 105px); height: -webkit-flex(1 105px);" ' + sizeAsString([105, 105])  + ' ' + positionAsString(expectations[writingMode][flowDirection]) + '></div>\n' +
             '</div>\n';
 
             document.body.appendChild(container);   

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-padding-expected.txt (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-padding-expected.txt	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-padding-expected.txt	2011-12-01 21:51:16 UTC (rev 101703)
@@ -14,6 +14,14 @@
 PASS
 horizontal-tb ltr column logical
 PASS
+horizontal-tb rtl row-reverse physical
+PASS
+horizontal-tb rtl row-reverse logical
+PASS
+horizontal-tb ltr row-reverse physical
+PASS
+horizontal-tb ltr row-reverse logical
+PASS
 horizontal-bt rtl row physical
 PASS
 horizontal-bt rtl row logical
@@ -30,6 +38,14 @@
 PASS
 horizontal-bt ltr column logical
 PASS
+horizontal-bt rtl row-reverse physical
+PASS
+horizontal-bt rtl row-reverse logical
+PASS
+horizontal-bt ltr row-reverse physical
+PASS
+horizontal-bt ltr row-reverse logical
+PASS
 vertical-lr rtl row physical
 PASS
 vertical-lr rtl row logical
@@ -46,6 +62,14 @@
 PASS
 vertical-lr ltr column logical
 PASS
+vertical-lr rtl row-reverse physical
+PASS
+vertical-lr rtl row-reverse logical
+PASS
+vertical-lr ltr row-reverse physical
+PASS
+vertical-lr ltr row-reverse logical
+PASS
 vertical-rl rtl row physical
 PASS
 vertical-rl rtl row logical
@@ -62,4 +86,12 @@
 PASS
 vertical-rl ltr column logical
 PASS
+vertical-rl rtl row-reverse physical
+PASS
+vertical-rl rtl row-reverse logical
+PASS
+vertical-rl ltr row-reverse physical
+PASS
+vertical-rl ltr row-reverse logical
+PASS
 

Modified: trunk/LayoutTests/css3/flexbox/flex-flow-padding.html (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow-padding.html	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow-padding.html	2011-12-01 21:51:16 UTC (rev 101703)
@@ -227,8 +227,8 @@
 }
 
 var writingModes = ['horizontal-tb', 'horizontal-bt', 'vertical-lr', 'vertical-rl'];
-// FIXME: Test row-reverse and column-reverse.
-var flexFlows = ['row', 'column'];
+// FIXME: Test column-reverse.
+var flexFlows = ['row', 'column', 'row-reverse'];
 var directions = ['rtl', 'ltr'];
 var marginTypes = ['physical', 'logical'];
 
@@ -252,8 +252,8 @@
 
                 // FIXME: In flex-flow column the innermost diff is always 20x20. Is that correct?
                 container.innerHTML = '\n<div class="flexbox ' + flexboxClassName + '">\n' +
-                    '<div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" ' + asString(expectations['flexitem' + flexFlow]) + '>\n' +
-                        '<div style="width:100%; height:100%" ' + asString(expectations['child' + flexFlow]) + '></div>' +
+                    '<div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" ' + asString(expectations['flexitem' + flexFlow.replace('-reverse', '')]) + '>\n' +
+                        '<div style="width:100%; height:100%" ' + asString(expectations['child' + flexFlow.replace('-reverse', '')]) + '></div>' +
                     '</div>\n' +
                 '</div>\n';
 

Modified: trunk/LayoutTests/css3/flexbox/flex-flow.html (101702 => 101703)


--- trunk/LayoutTests/css3/flexbox/flex-flow.html	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/LayoutTests/css3/flexbox/flex-flow.html	2011-12-01 21:51:16 UTC (rev 101703)
@@ -81,6 +81,18 @@
   <div data-expected-width="75" data-offset-x="100" style="width: -webkit-flex(1 0 0); -webkit-margin-end: 100px;"></div>
 </div>
 
+<div class="flexbox row-reverse">
+  <div data-expected-width="75" data-offset-x="525" style="width: -webkit-flex(1 0 0); margin: 0 auto;"></div>
+  <div data-expected-width="350" data-offset-x="175" style="width: -webkit-flex(2 0 0); -webkit-padding-start: 200px"><div data-offset-x="375"></div></div>
+  <div data-expected-width="75" data-offset-x="0" style="width: -webkit-flex(1 0 0); -webkit-margin-end: 100px;"></div>
+</div>
+
+<div class="flexbox rtl row-reverse">
+  <div data-expected-width="75" data-offset-x="0" style="width: -webkit-flex(1 0 0); margin: 0 auto;"></div>
+  <div data-expected-width="350" data-offset-x="75" style="width: -webkit-flex(2 0 0); -webkit-padding-start: 200px"><div data-offset-x="75"></div></div>
+  <div data-expected-width="75" data-offset-x="525" style="width: -webkit-flex(1 0 0); -webkit-margin-end: 100px;"></div>
+</div>
+
 <div style="position: relative;">
 <div class="flexbox column">
   <div data-expected-height="150" data-offset-y="0" style="height: -webkit-flex(1 0 0); margin: auto 200px auto 150px;"></div>

Modified: trunk/Source/WebCore/ChangeLog (101702 => 101703)


--- trunk/Source/WebCore/ChangeLog	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/Source/WebCore/ChangeLog	2011-12-01 21:51:16 UTC (rev 101703)
@@ -1,3 +1,22 @@
+2011-12-01  Tony Chang  <[email protected]>
+
+        Need to implement flex-flow: row-reverse
+        https://bugs.webkit.org/show_bug.cgi?id=70778
+
+        Reviewed by Ojan Vafai.
+
+        We can't just change the direction of the FlexOrderIterator because we want the overflow to be
+        on the left side.  Instead, we apply similar logic as when we're laying out RTL content. Putting
+        the check in isLeftToRightFlow() lets us flip the flexbox's border and padding and the flexitems'
+        margins.  We then layout from right to left in layoutAndPlaceChildren.
+
+        Also remove 2 uncalled functions.
+
+        * rendering/RenderFlexibleBox.cpp:
+        (WebCore::RenderFlexibleBox::isReverseFlow):
+        (WebCore::RenderFlexibleBox::isLeftToRightFlow):
+        * rendering/RenderFlexibleBox.h:
+
 2011-12-01  Daniel Sievers  <[email protected]>
 
         [Chromium] Early returns in calculateDrawTransformsAndVisibilityInternal() are not respected by parent.

Modified: trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp (101702 => 101703)


--- trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp	2011-12-01 21:51:16 UTC (rev 101703)
@@ -206,6 +206,11 @@
     return style()->isColumnFlexFlow();
 }
 
+bool RenderFlexibleBox::isReverseFlow() const
+{
+    return style()->flexFlow() == FlowColumnReverse || style()->flexFlow() == FlowRowReverse;
+}
+
 bool RenderFlexibleBox::isHorizontalFlow() const
 {
     if (isHorizontalWritingMode())
@@ -217,7 +222,7 @@
 {
     if (isColumnFlow())
         return style()->writingMode() == TopToBottomWritingMode || style()->writingMode() == LeftToRightWritingMode;
-    return style()->isLeftToRightDirection();
+    return style()->isLeftToRightDirection() ^ isReverseFlow();
 }
 
 Length RenderFlexibleBox::mainAxisLengthForChild(RenderBox* child) const
@@ -309,22 +314,6 @@
     return borderTop();
 }
 
-LayoutUnit RenderFlexibleBox::flowAwareBorderAfter() const
-{
-    switch (transformedWritingMode()) {
-    case TopToBottomWritingMode:
-        return borderBottom();
-    case BottomToTopWritingMode:
-        return borderTop();
-    case LeftToRightWritingMode:
-        return borderRight();
-    case RightToLeftWritingMode:
-        return borderLeft();
-    }
-    ASSERT_NOT_REACHED();
-    return borderBottom();
-}
-
 LayoutUnit RenderFlexibleBox::crossAxisBorderAndPaddingExtent() const
 {
     return isHorizontalFlow() ? borderAndPaddingHeight() : borderAndPaddingWidth();
@@ -353,22 +342,6 @@
     return paddingTop();
 }
 
-LayoutUnit RenderFlexibleBox::flowAwarePaddingAfter() const
-{
-    switch (transformedWritingMode()) {
-    case TopToBottomWritingMode:
-        return paddingBottom();
-    case BottomToTopWritingMode:
-        return paddingTop();
-    case LeftToRightWritingMode:
-        return paddingRight();
-    case RightToLeftWritingMode:
-        return paddingLeft();
-    }
-    ASSERT_NOT_REACHED();
-    return paddingBottom();
-}
-
 LayoutUnit RenderFlexibleBox::flowAwareMarginStartForChild(RenderBox* child) const
 {
     if (isHorizontalFlow())

Modified: trunk/Source/WebCore/rendering/RenderFlexibleBox.h (101702 => 101703)


--- trunk/Source/WebCore/rendering/RenderFlexibleBox.h	2011-12-01 21:44:54 UTC (rev 101702)
+++ trunk/Source/WebCore/rendering/RenderFlexibleBox.h	2011-12-01 21:51:16 UTC (rev 101703)
@@ -53,6 +53,7 @@
 
     bool hasOrthogonalFlow(RenderBox* child) const;
     bool isColumnFlow() const;
+    bool isReverseFlow() const;
     bool isHorizontalFlow() const;
     bool isLeftToRightFlow() const;
     Length crossAxisLength() const;
@@ -67,11 +68,9 @@
     WritingMode transformedWritingMode() const;
     LayoutUnit flowAwareBorderStart() const;
     LayoutUnit flowAwareBorderBefore() const;
-    LayoutUnit flowAwareBorderAfter() const;
     LayoutUnit crossAxisBorderAndPaddingExtent() const;
     LayoutUnit flowAwarePaddingStart() const;
     LayoutUnit flowAwarePaddingBefore() const;
-    LayoutUnit flowAwarePaddingAfter() const;
     LayoutUnit flowAwareMarginStartForChild(RenderBox* child) const;
     LayoutUnit flowAwareMarginEndForChild(RenderBox* child) const;
     LayoutUnit flowAwareMarginBeforeForChild(RenderBox* child) const;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to