chromium/third_party/blink/web_tests/transforms/bounding-rect-zoom.html

<head>
<script type="text/javascript">

function rectsShouldBeEqual(baseline, other, outputElt)
{
  if (baseline.left != other.left ||
      baseline.top != other.top ||
      baseline.right != other.right ||
      baseline.bottom != other.bottom)
      outputElt.innerHTML = '<span style="color:red;"><b>FAIL<BR></b></span>' +
          "left should be " + baseline.left + " but is " + other.left + "<BR>" +
          "top should be " + baseline.top + " but is " + other.top + "<BR>" +
          "right should be " + baseline.right + " but is " + other.right + "<BR>" +
          "bottom should be " + baseline.bottom + " but is " + other.bottom;
  else
      outputElt.innerHTML = '<span style="color:green;"><b>PASS</b></span>';
}

function testGetClientBoundingRect(zoom)
{
    var baseline = document.getElementById("baseline1");
    var moveme = document.getElementById("moveme1");

    var bounds = baseline.getBoundingClientRect();
    moveme.style.left = bounds.left / zoom;
    moveme.style.top = bounds.top / zoom;
    moveme.style.width = (bounds.right - bounds.left) / zoom;
    moveme.style.height = (bounds.bottom - bounds.top) / zoom;

    var newBounds = moveme.getBoundingClientRect();
    rectsShouldBeEqual(bounds, newBounds, document.getElementById("results1"));
}

function testGetClientRects(zoom)
{
    var baseline = document.getElementById("baseline2");
    var moveme = document.getElementById("moveme2");

    var boundsList = baseline.getClientRects();
    moveme.style.left = boundsList[0].left / zoom;
    moveme.style.top = boundsList[0].top / zoom;
    moveme.style.width = (boundsList[0].right - boundsList[0].left) / zoom;
    moveme.style.height = (boundsList[0].bottom - boundsList[0].top) / zoom;

    var newBoundList = moveme.getClientRects();
    rectsShouldBeEqual(boundsList[0], newBoundList[0], document.getElementById("results2"));
}

function runTest()
{
  document.body.style.zoom = "0.9";
  testGetClientBoundingRect(0.9);
  testGetClientRects(0.9);
}
</script>
</head>
<body onload="runTest();">

<p>Tests that these functions account for full page zoom.<br>There should be no red visible.</p>

<table width="100%"><tr><td width="200px">getClientBoundingRect():

<div id="baseline1" style="position:absolute; left:100px; top:100px; width:100px; height:100px; background-color:red;"></div>
<div id="moveme1" style="position:absolute; left:0px; top:0px; width:50px; height:50px; background-color:green;"></div>
<div id="results1" style="position:absolute; left:10px; top:220px">...</div>

</td><td>getClientRects():

<div id="baseline2" style="position:absolute; left:300px; top:100px; width:100px; height:100px; background-color:red;"></div>
<div id="moveme2" style="position:absolute; left:0px; top:0px; width:50px; height:50px; background-color:green;"></div>
<div id="results2" style="position:absolute; left:220px; top:220px">...</div>

</td>

</body>