6 background-color: pink;
7 outline: 1px solid black;
11 display: -webkit-flexbox;
12 background-color: grey;
26 -webkit-writing-mode: horizontal-tb;
29 -webkit-writing-mode: horizontal-bt;
32 -webkit-writing-mode: vertical-rl;
35 -webkit-writing-mode: vertical-lr;
38 -webkit-flex-flow: row;
41 -webkit-flex-flow: row-reverse;
44 -webkit-flex-flow: column;
47 -webkit-flex-flow: column-reverse;
50 margin: 10px 20px 30px 40px;
53 margin: 13px 2px 17px 8px;
56 -webkit-margin-before: 10px;
57 -webkit-margin-after: 30px;
58 -webkit-margin-start: 40px;
59 -webkit-margin-end: 20px;
62 -webkit-margin-before: 13px;
63 -webkit-margin-after: 17px;
64 -webkit-margin-start: 8px;
65 -webkit-margin-end: 2px;
67 .flexbox > :nth-child(1) {
68 background-color: blue;
70 .flexbox > :nth-child(2) {
71 background-color: green;
73 .flexbox > :nth-child(3) {
74 background-color: red;
78 if (window.layoutTestController)
79 layoutTestController.dumpAsText();
81 <script src="resources/flexbox.js"></script>
82 <body onload="checkFlexBoxen()">
85 function positionAsString(position)
87 return 'data-offset-x="' + position[0] + '" data-offset-y="' + position[1] + '"';
90 function asString(expectations)
92 return 'data-expected-width="' + expectations[0] + '" data-expected-height="' + expectations[1] + '" ' + positionAsString(expectations.slice(2, 4));
95 var physicalContainerSize = [160, 140];
96 var physicalFlexBoxPosition = [40, 10];
98 var physicalExpectations = {
101 container: physicalContainerSize,
102 flexbox: physicalFlexBoxPosition,
103 column: [20, 70, 118, 23],
104 row: [90, 20, 48, 23]
107 container: physicalContainerSize,
108 flexbox: physicalFlexBoxPosition,
109 column: [20, 70, 48, 23],
110 row: [90, 20, 48, 23]
115 container: physicalContainerSize,
116 flexbox: physicalFlexBoxPosition,
117 column: [20, 70, 118, 23],
118 row: [90, 20, 48, 73]
121 container: physicalContainerSize,
122 flexbox: physicalFlexBoxPosition,
123 column: [20, 70, 48, 23],
124 row: [90, 20, 48, 73]
129 container: physicalContainerSize,
130 flexbox: physicalFlexBoxPosition,
131 column: [90, 20, 48, 73],
132 row: [20, 70, 48, 23]
135 container: physicalContainerSize,
136 flexbox: physicalFlexBoxPosition,
137 column: [90, 20, 48, 23],
138 row: [20, 70, 48, 23]
143 container: physicalContainerSize,
144 flexbox: physicalFlexBoxPosition,
145 column: [90, 20, 48, 73],
146 row: [20, 70, 118, 23]
149 container: physicalContainerSize,
150 flexbox: physicalFlexBoxPosition,
151 column: [90, 20, 48, 23],
152 row: [20, 70, 118, 23]
157 var logicalExpectations = {
160 container: [160, 140],
162 column: [20, 70, 92, 23],
163 row: [90, 20, 22, 23]
166 container: [160, 140],
168 column: [20, 70, 48, 23],
169 row: [90, 20, 48, 23]
174 container: [160, 140],
176 column: [20, 70, 92, 47],
177 row: [90, 20, 22, 97]
180 container: [160, 140],
182 column: [20, 70, 48, 47],
183 row: [90, 20, 48, 97]
188 container: [140, 160],
190 column: [70, 20, 23, 92],
191 row: [20, 90, 23, 22]
194 container: [140, 160],
196 column: [70, 20, 23, 48],
197 row: [20, 90, 23, 48]
202 container: [140, 160],
204 column: [70, 20, 47, 92],
205 row: [20, 90, 97, 22]
208 container: [140, 160],
210 column: [70, 20, 47, 48],
211 row: [20, 90, 97, 48]
216 var writingModes = ['horizontal-tb', 'horizontal-bt', 'vertical-lr', 'vertical-rl'];
217 // FIXME: Test row-reverse and column-reverse.
218 var flexFlows = ['row', 'column'];
219 var directions = ['rtl', 'ltr'];
220 var marginTypes = ['physical', 'logical'];
222 writingModes.forEach(function(writingMode) {
223 flexFlows.forEach(function(flexFlow) {
224 directions.forEach(function(direction) {
225 marginTypes.forEach(function(marginType) {
226 var flexboxClassName = writingMode + ' ' + direction + ' ' + flexFlow + ' ' + marginType;
227 var title = document.createElement('div');
228 title.className = 'title';
229 title.innerHTML = flexboxClassName;
230 document.body.appendChild(title);
232 var expectations = (marginType == 'physical') ? physicalExpectations : logicalExpectations;
233 expectations = expectations[writingMode][direction];
234 var flexboxExpectations = positionAsString(expectations.flexbox);
236 var flexItemExpectations = asString(expectations[flexFlow]);
238 var container = document.createElement('div');
239 container.className = 'container';
240 container.setAttribute('data-expected-width', expectations.container[0]);
241 container.setAttribute('data-expected-height', expectations.container[1]);
243 container.innerHTML = '<div class="flexbox ' + flexboxClassName + '" ' + flexboxExpectations + '>\n' +
244 '<div style="width: -webkit-flex(1 20px); height: -webkit-flex(1 20px);" ' + flexItemExpectations + '></div>\n' +
247 document.body.appendChild(container);