<!DOCTYPE html>
<html>
<head>
  <title>CSSOM View - extensions to the Document interface</title>
  <link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
  <link rel="help" href="http://www.w3.org/TR/cssom-view/#extensions-to-the-document-interface">
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
  <style>
    .container {
      display: flex;
      width: 500px;
      height: 100px;
    }

    .map {
      flex: 1 1 auto;
      position: relative;
    }

    .box {
      flex: 0 0 auto;
    }

    .child {
      width: 183.66px;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="map"></div>
    <div class="box" id="box">
      <div class="child"></div>
    </div>
  </div>

  <script>
    const box = document.getElementById('box');
    const rect = box.getBoundingClientRect();

    test(() => {
      assert_equals(document.elementFromPoint(rect.x, rect.y), box);
    }, 'Hit test top left corner of box');

    test(() => {
      assert_equals(document.elementFromPoint(rect.x + rect.width - 1, rect.y), box);
    }, 'Hit test top right corner of box');

    test(() => {
      assert_equals(document.elementFromPoint(rect.x, rect.y + rect.height - 1), box);
    }, 'Hit test bottom left corner of box');

    test(() => {
      assert_equals(document.elementFromPoint(rect.x + rect.width - 1, rect.y + rect.height - 1), box);
    }, 'Hit test lower left corner of box');
  </script>
</body>
</html>
