blob: a72def565939a436150d460d4cef409b408e6dd1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
|
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Writing Modes Test: Shrink-to-fit with orthogonal children</title>
<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
<meta name="assert" content="Shrink-to-fit with orthogonal children">
<meta name="flags" content="ahem dom combo">
<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2015-12-23 -->
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
.test {
border:thin solid;
font:20px/1 Ahem;
}
.target {
color:blue;
height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
writing-mode:vertical-rl;
}
.border {
border-right:blue solid .5em;
}
.next {
color:orange;
}
.inline-block {
display:inline-block;
}
.float {
float:left;
}
h3 {
clear:both;
}
h3.fail {
color:red;
}
table {
border-spacing:0px;
}
td {
padding:0px;
}
</style>
<div id="log"></div>
<div id="container">
<p>Test passes if the X-position of the <b>left</b> edge of the orange box and the <b>right</b> edge of the blue box are the same.
<p>If script is enabled, there should be one or more PASS and no FAIL.
<h3>1: Shrink-to-fit inline-block with a child of orthogonal block</h3>
<div class="test">
<div class="inline-block"><div class="target">HH</div></div><span class="next">ZZ</span>
</div>
<h3>2: Shrink-to-fit inline-block with a child of orthogonal inline</h3>
<div class="test">
<div class="inline-block"><span class="target">HH</span></div><span class="next">ZZ</span>
</div>
<h3>3: Shrink-to-fit inline-block with a child of orthogonal block with borders</h3>
<div class="test">
<div class="inline-block"><div class="target border">HHH</div></div><span class="next">ZZ</span>
</div>
<h3>4: Shrink-to-fit inline-block with a child of orthogonal inline with borders</h3>
<div class="test">
<div class="inline-block"><span class="target border">HHH</span></div><span class="next">ZZ</span>
</div>
<h3>5: Shrink-to-fit inline-block with a child of orthogonal block in inline-block</h3>
<div class="test">
<div class="inline-block"><div class="inline-block"><div class="target">HH</div></div></div><span class="next">ZZ</span>
</div>
<h3>6: Shrink-to-fit inline-block with a child of orthogonal inline in inline-block</h3>
<div class="test">
<div class="inline-block"><div class="inline-block"><span class="target">HH</span></div></div><span class="next">ZZ</span>
</div>
<h3>7: Shrink-to-fit inline-block with a child of orthogonal block with borders in inline-block</h3>
<div class="test">
<div class="inline-block"><div class="inline-block"><div class="target border">HHH</div></div></div><span class="next">ZZ</span>
</div>
<h3>8: Shrink-to-fit inline-block with a child of orthogonal inline with borders in inline-block</h3>
<div class="test">
<div class="inline-block"><div class="inline-block"><span class="target border">HHH</span></div></div><span class="next">ZZ</span>
</div>
<h3>9: Shrink-to-fit float with a child of orthogonal block</h3>
<div class="test">
<div class="float"><div class="target">HH</div></div><span class="next">ZZ</span>
</div>
<h3>10: Shrink-to-fit float with a child of orthogonal inline</h3>
<div class="test">
<div class="float"><span class="target">HH</span></div><span class="next">ZZ</span>
</div>
<h3>11: Shrink-to-fit float with a child of orthogonal block with borders</h3>
<div class="test">
<div class="float"><div class="target border">HHH</div></div><span class="next">ZZ</span>
</div>
<h3>12: Shrink-to-fit float with a child of orthogonal inline with borders</h3>
<div class="test">
<div class="float"><span class="target border">HHH</span></div><span class="next">ZZ</span>
</div>
<h3>13: Shrink-to-fit float with a child of orthogonal block in inline-block</h3>
<div class="test">
<div class="float"><div class="inline-block"><div class="target">HH</div></div></div><span class="next">ZZ</span>
</div>
<h3>14: Shrink-to-fit float with a child of orthogonal inline in inline-block</h3>
<div class="test">
<div class="float"><div class="inline-block"><span class="target">HH</span></div></div><span class="next">ZZ</span>
</div>
<h3>15: Shrink-to-fit float with a child of orthogonal block with borders in inline-block</h3>
<div class="test">
<div class="float"><div class="inline-block"><div class="target border">HHH</div></div></div><span class="next">ZZ</span>
</div>
<h3>16: Shrink-to-fit float with a child of orthogonal inline with borders in inline-block</h3>
<div class="test">
<div class="float"><div class="inline-block"><span class="target border">HHH</span></div></div><span class="next">ZZ</span>
</div>
<h3>17: Shrink-to-fit table-cell with a child of orthogonal block</h3>
<div class="test">
<table><tr><td><div class="target">HH</div></td><td class="next">ZZ</td></tr></table>
</div>
<h3>18: Shrink-to-fit table-cell with a child of orthogonal inline</h3>
<div class="test">
<table><tr><td><span class="target">HH</span></td><td class="next">ZZ</td></tr></table>
</div>
<h3>19: Shrink-to-fit table-cell with a child of orthogonal block with borders</h3>
<div class="test">
<table><tr><td><div class="target border">HHH</div></td><td class="next">ZZ</td></tr></table>
</div>
<h3>20: Shrink-to-fit table-cell with a child of orthogonal inline with borders</h3>
<div class="test">
<table><tr><td><span class="target border">HHH</span></td><td class="next">ZZ</td></tr></table>
</div>
<h3>21: Shrink-to-fit table-cell with a child of orthogonal block in inline-block</h3>
<div class="test">
<table><tr><td><div class="inline-block"><div class="target">HH</div></div></td><td class="next">ZZ</td></tr></table>
</div>
<h3>22: Shrink-to-fit table-cell with a child of orthogonal inline in inline-block</h3>
<div class="test">
<table><tr><td><div class="inline-block"><span class="target">HH</span></div></td><td class="next">ZZ</td></tr></table>
</div>
<h3>23: Shrink-to-fit table-cell with a child of orthogonal block with borders in inline-block</h3>
<div class="test">
<table><tr><td><div class="inline-block"><div class="target border">HHH</div></div></td><td class="next">ZZ</td></tr></table>
</div>
<h3>24: Shrink-to-fit table-cell with a child of orthogonal inline with borders in inline-block</h3>
<div class="test">
<table><tr><td><div class="inline-block"><span class="target border">HHH</span></div></td><td class="next">ZZ</td></tr></table>
</div>
</div>
<script>
if (window.location.search == "?wait") {
console.log("Sleeping 5 secs for debug");
setup({explicit_done:true});
window.setTimeout(run, 5000);
} else {
run();
}
function run() {
Array.prototype.forEach.call(document.querySelectorAll(".test"), function (node) {
var title = node.previousElementSibling.textContent;
test(function () {
try {
var targetNode = node.querySelector(".target");
var fontSize = parseFloat(getComputedStyle(targetNode).fontSize);
var targetBounds = targetNode.getBoundingClientRect();
assert_less_than_equal(targetBounds.width, fontSize * 2.01, "writing-mode is vertical")
var nextNode = node.querySelector(".next");
var nextBounds = nextNode.getBoundingClientRect();
assert_equals(nextBounds.left - targetBounds.right, 0, "the left edge of the orange box touches the right edge of the blue box");
} catch (e) {
node.previousElementSibling.classList.add("fail");
throw e;
}
}, title);
});
done();
}
</script>
|