Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: third_party/WebKit/LayoutTests/external/wpt/css/css-grid-1/support/check-layout-th.js

Issue 2919473002: [css-grid] Apply flow-aware logic for margins during stretching (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 (function() {
2 // Test is initiated from body.onload, so explicit done() call is required.
3 setup({ explicit_done: true });
4
5 function checkSubtreeExpectedValues(t, parent, prefix)
6 {
7 var checkedLayout = checkExpectedValues(t, parent, prefix);
8 Array.prototype.forEach.call(parent.childNodes, function(node) {
9 checkedLayout |= checkSubtreeExpectedValues(t, node, prefix);
10 });
11 return checkedLayout;
12 }
13
14 function checkAttribute(output, node, attribute)
15 {
16 var result = node.getAttribute && node.getAttribute(attribute);
17 output.checked |= !!result;
18 return result;
19 }
20
21 function assert_tolerance(actual, expected, message)
22 {
23 if (isNaN(expected) || Math.abs(actual - expected) >= 1) {
24 assert_equals(actual, Number(expected), message);
25 }
26 }
27
28 function checkExpectedValues(t, node, prefix)
29 {
30 var output = { checked: false };
31
32 var expectedWidth = checkAttribute(output, node, "data-expected-width");
33 if (expectedWidth) {
34 assert_tolerance(node.offsetWidth, expectedWidth, prefix + "width");
35 }
36
37 var expectedHeight = checkAttribute(output, node, "data-expected-height");
38 if (expectedHeight) {
39 assert_tolerance(node.offsetHeight, expectedHeight, prefix + "height");
40 }
41
42 var expectedOffset = checkAttribute(output, node, "data-offset-x");
43 if (expectedOffset) {
44 assert_tolerance(node.offsetLeft, expectedOffset, prefix + "offsetLeft") ;
45 }
46
47 var expectedOffset = checkAttribute(output, node, "data-offset-y");
48 if (expectedOffset) {
49 assert_tolerance(node.offsetTop, expectedOffset, prefix + "offsetTop");
50 }
51
52 var expectedWidth = checkAttribute(output, node, "data-expected-client-width ");
53 if (expectedWidth) {
54 assert_tolerance(node.clientWidth, expectedWidth, prefix + "clientWidth" );
55 }
56
57 var expectedHeight = checkAttribute(output, node, "data-expected-client-heig ht");
58 if (expectedHeight) {
59 assert_tolerance(node.clientHeight, expectedHeight, prefix + "clientHeig ht");
60 }
61
62 var expectedWidth = checkAttribute(output, node, "data-expected-scroll-width ");
63 if (expectedWidth) {
64 assert_tolerance(node.scrollWidth, expectedWidth, prefix + "scrollWidth" );
65 }
66
67 var expectedHeight = checkAttribute(output, node, "data-expected-scroll-heig ht");
68 if (expectedHeight) {
69 assert_tolerance(node.scrollHeight, expectedHeight, prefix + "scrollHeig ht");
70 }
71
72 var expectedWidth = checkAttribute(output, node, "data-expected-bounding-cli ent-rect-width");
73 if (expectedWidth) {
74 assert_tolerance(node.getBoundingClientRect().width, expectedWidth, pref ix + "getBoundingClientRect().width");
75 }
76
77 var expectedOffset = checkAttribute(output, node, "data-total-x");
78 if (expectedOffset) {
79 var totalLeft = node.clientLeft + node.offsetLeft;
80 assert_tolerance(totalLeft, expectedOffset, prefix +
81 "clientLeft+offsetLeft (" + node.clientLeft + " + " + n ode.offsetLeft + ")");
82 }
83
84 var expectedOffset = checkAttribute(output, node, "data-total-y");
85 if (expectedOffset) {
86 var totalTop = node.clientTop + node.offsetTop;
87 assert_tolerance(totalTop, expectedOffset, prefix +
88 "clientTop+offsetTop (" + node.clientTop + " + " + node .offsetTop + ")");
89 }
90
91 var expectedDisplay = checkAttribute(output, node, "data-expected-display");
92 if (expectedDisplay) {
93 var actualDisplay = getComputedStyle(node).display;
94 assert_equals(actualDisplay, expectedDisplay, prefix + "display");
95 }
96
97 var expectedPaddingTop = checkAttribute(output, node, "data-expected-padding -top");
98 if (expectedPaddingTop) {
99 var actualPaddingTop = getComputedStyle(node).paddingTop;
100 // Trim the unit "px" from the output.
101 actualPaddingTop = actualPaddingTop.slice(0, -2);
102 assert_equals(actualPaddingTop, expectedPaddingTop, prefix + "padding-to p");
103 }
104
105 var expectedPaddingBottom = checkAttribute(output, node, "data-expected-padd ing-bottom");
106 if (expectedPaddingBottom) {
107 var actualPaddingBottom = getComputedStyle(node).paddingBottom;
108 // Trim the unit "px" from the output.
109 actualPaddingBottom = actualPaddingBottom.slice(0, -2);
110 assert_equals(actualPaddingBottom, expectedPaddingBottom, prefix + "padd ing-bottom");
111 }
112
113 var expectedPaddingLeft = checkAttribute(output, node, "data-expected-paddin g-left");
114 if (expectedPaddingLeft) {
115 var actualPaddingLeft = getComputedStyle(node).paddingLeft;
116 // Trim the unit "px" from the output.
117 actualPaddingLeft = actualPaddingLeft.slice(0, -2);
118 assert_equals(actualPaddingLeft, expectedPaddingLeft, prefix + "padding- left");
119 }
120
121 var expectedPaddingRight = checkAttribute(output, node, "data-expected-paddi ng-right");
122 if (expectedPaddingRight) {
123 var actualPaddingRight = getComputedStyle(node).paddingRight;
124 // Trim the unit "px" from the output.
125 actualPaddingRight = actualPaddingRight.slice(0, -2);
126 assert_equals(actualPaddingRight, expectedPaddingRight, prefix + "paddin g-right");
127 }
128
129 var expectedMarginTop = checkAttribute(output, node, "data-expected-margin-t op");
130 if (expectedMarginTop) {
131 var actualMarginTop = getComputedStyle(node).marginTop;
132 // Trim the unit "px" from the output.
133 actualMarginTop = actualMarginTop.slice(0, -2);
134 assert_equals(actualMarginTop, expectedMarginTop, prefix + "margin-top") ;
135 }
136
137 var expectedMarginBottom = checkAttribute(output, node, "data-expected-margi n-bottom");
138 if (expectedMarginBottom) {
139 var actualMarginBottom = getComputedStyle(node).marginBottom;
140 // Trim the unit "px" from the output.
141 actualMarginBottom = actualMarginBottom.slice(0, -2);
142 assert_equals(actualMarginBottom, expectedMarginBottom, prefix + "margin -bottom");
143 }
144
145 var expectedMarginLeft = checkAttribute(output, node, "data-expected-margin- left");
146 if (expectedMarginLeft) {
147 var actualMarginLeft = getComputedStyle(node).marginLeft;
148 // Trim the unit "px" from the output.
149 actualMarginLeft = actualMarginLeft.slice(0, -2);
150 assert_equals(actualMarginLeft, expectedMarginLeft, prefix + "margin-lef t");
151 }
152
153 var expectedMarginRight = checkAttribute(output, node, "data-expected-margin -right");
154 if (expectedMarginRight) {
155 var actualMarginRight = getComputedStyle(node).marginRight;
156 // Trim the unit "px" from the output.
157 actualMarginRight = actualMarginRight.slice(0, -2);
158 assert_equals(actualMarginRight, expectedMarginRight, prefix + "margin-r ight");
159 }
160
161 return output.checked;
162 }
163
164 window.checkLayout = function(selectorList, outputContainer)
165 {
166 if (!selectorList) {
167 console.error("You must provide a CSS selector of nodes to check.");
168 return;
169 }
170 var nodes = document.querySelectorAll(selectorList);
171 var testNumber = 0;
172 nodes = Array.prototype.slice.call(nodes);
173 nodes.reverse();
174 var checkedLayout = false;
175 Array.prototype.forEach.call(nodes, function(node) {
176 test(function(t) {
177 var container = node.parentNode.className == 'container' ? node.pare ntNode : node;
178 var prefix = "\n" + container.outerHTML + "\n";
179 var passed = false;
180 try {
181 checkedLayout |= checkExpectedValues(t, node.parentNode, prefix) ;
182 checkedLayout |= checkSubtreeExpectedValues(t, node, prefix);
183 passed = true;
184 } finally {
185 checkedLayout |= !passed;
186 }
187 }, selectorList + ' ' + String(++testNumber));
188 });
189 if (!checkedLayout) {
190 console.error("No valid data-* attributes found in selector list : " + s electorList);
191 }
192 done();
193 };
194
195 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698