OLD | NEW |
1 <html> | 1 <html> |
2 <head> | 2 <head> |
3 <title>Test for Buzilla Bug 15359: JPEG image not shown when height is specified
as percentage inside a table</title> | 3 <title>Test for Buzilla Bug 15359: JPEG image not shown when height is specified
as percentage inside a table</title> |
4 <script src="../../resources/js-test.js"></script> | 4 <script src="../../resources/js-test.js"></script> |
5 <script> | 5 <script> |
6 if (window.testRunner) { | 6 if (window.testRunner) { |
7 testRunner.waitUntilDone(); | 7 testRunner.waitUntilDone(); |
8 testRunner.dumpAsText(); | 8 testRunner.dumpAsText(); |
9 } | 9 } |
10 | 10 |
(...skipping 12 matching lines...) Expand all Loading... |
23 } | 23 } |
24 | 24 |
25 function getWidth(id) | 25 function getWidth(id) |
26 { | 26 { |
27 return getComputedStyleForElement(document.getElementById(id), 'width'); | 27 return getComputedStyleForElement(document.getElementById(id), 'width'); |
28 } | 28 } |
29 | 29 |
30 function getFullHeight(id) | 30 function getFullHeight(id) |
31 { | 31 { |
32 var element = document.getElementById(id); | 32 var element = document.getElementById(id); |
33 var h = parseFloat(getComputedStyleForElement(element, 'border-top-width')); | 33 var h = parseFloat(getComputedStyleForElement(element, 'height')); |
34 h += parseFloat(getComputedStyleForElement(element, 'padding-top')); | |
35 h += parseFloat(getComputedStyleForElement(element, 'height')); | |
36 h += parseFloat(getComputedStyleForElement(element, 'padding-bottom')); | |
37 h += parseFloat(getComputedStyleForElement(element, 'border-bottom-width')); | |
38 return h + 'px'; | 34 return h + 'px'; |
39 } | 35 } |
40 | 36 |
41 function parsePixelValue(str) | 37 function parsePixelValue(str) |
42 { | 38 { |
43 if (typeof str != "string" || str.length < 3 || str.substr(str.length - 2) !
= "px") { | 39 if (typeof str != "string" || str.length < 3 || str.substr(str.length - 2) !
= "px") { |
44 testFailed(str + " is unparsable."); | 40 testFailed(str + " is unparsable."); |
45 return -1; | 41 return -1; |
46 } | 42 } |
47 return parseFloat(str); | 43 return parseFloat(str); |
48 } | 44 } |
49 | 45 |
50 function is75PercentOf(expression75, expression100) | |
51 { | |
52 var str75 = eval(expression75); | |
53 var str100 = eval(expression100); | |
54 var num75 = parsePixelValue(str75); | |
55 var num100 = parsePixelValue(str100); | |
56 if (num75 < 0 || num100 < 0) | |
57 return; | |
58 if (num75 == Math.floor(num100 * 75 / 100)) | |
59 testPassed(expression75 + " is 75% of " + expression100 + "."); | |
60 else | |
61 testFailed(expression75 + " [" + str75 + "] is not 75% of " + expression
100 + " [" + str100 + "]."); | |
62 } | |
63 | |
64 function test() | 46 function test() |
65 { | 47 { |
66 description("This test checks that text controls with percentage heights wit
hin table cells have the correct height." + | 48 description("This test checks that text controls with percentage heights wit
hin table cells have the correct height." + |
67 "Text controls are in a different test than other replaced elements beca
use their metrics are platform-specific."); | 49 "Text controls are in a different test than other replaced elements beca
use their metrics are platform-specific." + |
| 50 "The reason a 75% control is the same height as a 100% control is becaus
e a replaced element that depends on the" + |
| 51 "height of its parent cell is treated as auto. So by itself it will set
the height of the row. See https://drafts.csswg.org/css-tables-3/#row-layout"); |
68 | 52 |
69 shouldBe("getWidth('input-password-75')", "getWidth('input-password-100')"); | 53 shouldBe("getWidth('input-password-75')", "getWidth('input-password-100')"); |
70 shouldBeTrue("getFullHeight('input-password-75') != '0px'"); | 54 shouldBeTrue("getFullHeight('input-password-75') != '0px'"); |
71 // Note: This behavior doesn't match to IE 8, Firefox 3.5 and Opera 10. | 55 shouldBe("getFullHeight('input-password-75')", "getFullHeight('input-passwor
d-100')"); |
72 is75PercentOf("getFullHeight('input-password-75')", "getFullHeight('input-pa
ssword-100')"); | |
73 | 56 |
74 shouldBe("getWidth('input-text-75')", "getWidth('input-text-100')"); | 57 shouldBe("getWidth('input-text-75')", "getWidth('input-text-100')"); |
75 shouldBeTrue("getFullHeight('input-text-75') != '0px'"); | 58 shouldBeTrue("getFullHeight('input-text-75') != '0px'"); |
76 // Note: This behavior doesn't match to IE 8, Firefox 3.5 and Opera 10. | 59 shouldBe("getFullHeight('input-text-75')", "getFullHeight('input-text-100')"
); |
77 is75PercentOf("getFullHeight('input-text-75')", "getFullHeight('input-text-1
00')"); | |
78 | 60 |
79 shouldBe("getWidth('textarea-75')", "getWidth('textarea-100')"); | 61 shouldBe("getWidth('textarea-75')", "getWidth('textarea-100')"); |
80 shouldBeTrue("getFullHeight('textarea-75') != '0px'"); | 62 shouldBeTrue("getFullHeight('textarea-75') != '0px'"); |
81 // Note: This behavior doesn't match to IE 8, Firefox 3.5 and Opera 10. | 63 shouldBe("getFullHeight('textarea-75')", "getFullHeight('textarea-100')"); |
82 is75PercentOf("getFullHeight('textarea-75')", "getFullHeight('textarea-100')
"); | |
83 | 64 |
84 isSuccessfullyParsed(); | 65 isSuccessfullyParsed(); |
85 | 66 |
86 if (window.testRunner) { | 67 if (window.testRunner) { |
87 testRunner.notifyDone(); | 68 testRunner.notifyDone(); |
88 } | 69 } |
89 } | 70 } |
90 </script> | 71 </script> |
91 </head> | 72 </head> |
92 <body onload="test()"> | 73 <body onload="test()"> |
93 | 74 |
94 <table><tr><td><input type="password" id="input-password-75" style="height: 75%;
"></td></tr></table> | 75 <table><tr><td><input type="password" id="input-password-75" style="height: 75%;
"></td></tr></table> |
95 <table><tr><td><input type="password" id="input-password-100" style="height: 100
%;"></td></tr></table> | 76 <table><tr><td><input type="password" id="input-password-100" style="height: 100
%;"></td></tr></table> |
96 | 77 |
97 <table><tr><td><input type="text" id="input-text-75" style="height: 75%;"></td><
/tr></table> | 78 <table><tr><td><input type="text" id="input-text-75" style="height: 75%;"></td><
/tr></table> |
98 <table><tr><td><input type="text" id="input-text-100" style="height: 100%;"></td
></tr></table> | 79 <table><tr><td><input type="text" id="input-text-100" style="height: 100%;"></td
></tr></table> |
99 | 80 |
100 <table><tr><td><textarea id="textarea-75" style="height: 75%;"></textarea></td><
/tr></table> | 81 <table><tr><td><textarea id="textarea-75" style="height: 75%;"></textarea></td><
/tr></table> |
101 <table><tr><td><textarea id="textarea-100" style="height: 100%;"></textarea></td
></tr></table> | 82 <table><tr><td><textarea id="textarea-100" style="height: 100%;"></textarea></td
></tr></table> |
102 | 83 |
103 <p id="description"></p> | 84 <p id="description"></p> |
104 <div id="console"></div> | 85 <div id="console"></div> |
105 </body> | 86 </body> |
106 </html> | 87 </html> |
OLD | NEW |