blob: f87ff2cf7c3c57d9bf6517af2572ad8ec177a16f [file] [log] [blame]
<p>
Test that fixed integral lengths round-trip correctly through zooming.
</p>
<p>
The test queries <tt>offsetWidth</tt> and <tt>offsetHeight</tt> of a 1&times;10-pixel rectangle under zooming by a factor of <i>k</i>/100 for 100 &le; <i>k</i> &le; 200.
</p>
<pre id="console"></pre>
<div id="container">
<div id="target" style="width: 1px; height: 10px;"></div>
<div id="subpixel-test" style="width: 4.5px; height: 10px;"></div>
</div>
<script>
function log(message)
{
var console = document.getElementById("console");
console.appendChild(document.createTextNode(message + "\n"));
}
if (window.testRunner)
testRunner.dumpAsText();
var target = document.getElementById("target");
var containerStyle = document.getElementById("container").style;
var zoom;
var failed = false;
var rect = document.getElementById('subpixel-test').getBoundingClientRect();
var hasSubpixelSupport = rect.right - rect.left == 4.5;
for (zoom = 100; zoom <= 200; zoom += 1) {
containerStyle.setProperty("zoom", zoom / 100);
if (target.offsetWidth != 1 || target.offsetHeight != 10) {
if (hasSubpixelSupport && (target.offsetWidth == 1 || target.offsetWidth == 2) && (target.offsetHeight == 10 || target.offsetHeight == 11))
continue; // With subpixel layout and pixel snapping we extend the box with one pixel at certain zoom levels.
failed = true;
log("FAIL at " + zoom + "% magnification: 1 mapped to " + target.offsetWidth + " and 10 mapped to " + target.offsetHeight + ".");
}
}
if (!failed)
log("PASS");
</script>