<title>Test that document.elementFromPoint supports "double" arguments
and takes into account the scrolloffset.</title>
<style>
    body { margin: 0; width: 1000px; }
</style>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<div style="width: 100.25px;">abc</div>
<script>
test(function() {
  var scrolloffset = 10;
  document.body.scrollLeft = scrolloffset;
  var divElement = document.querySelector("div");

  // Test that elementFromPoint hits div element.
  assert_equals(document.elementFromPoint(100.249 - scrolloffset, 12), divElement);

  if (window.testRunner) {
    // Page zoom factor should not affect result.
    testRunner.setPageZoomFactor(3.0);
    assert_equals(document.elementFromPoint(100.249 - scrolloffset, 12), divElement);

    testRunner.setPageZoomFactor(4.0);
    assert_equals(document.elementFromPoint(100.249 - scrolloffset, 12), divElement);
  }
});
</script>
