<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Element Timing: observe a rectangular image</title>
<body>
<style>
body {
  margin: 20px;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/element-timing-helpers.js"></script>
<script>
  let beforeRender;
  let img;
  async_test(function (t) {
    if (!window.PerformanceElementTiming) {
      assert_unreached("PerformanceElementTiming is not implemented");
    }
    const observer = new PerformanceObserver(
      t.step_func_done(function(entryList) {
        assert_equals(entryList.getEntries().length, 1);
        const entry = entryList.getEntries()[0];
        const index = window.location.href.lastIndexOf('/');
        // Subtracting 14 to remove 'element-timing'.
        const pathname = window.location.href.substring(0, index - 14) +
            'images/black-rectangle.png';
        checkElement(entry, pathname, 'my_image', 'rectangle', beforeRender, img);
        // Assume viewport has size at least 100, so the element is fully visible.
        checkRect(entry, [20, 120, 20, 70]);
        checkNaturalSize(entry, 100, 50);
      })
    );
    observer.observe({entryTypes: ['element']});
    // We add the image during onload to be sure that the observer is registered
    // in time for it to observe the element timing.
    window.onload = () => {
      // Add image of width equal to 100 and height equal to 50.
      img = document.createElement('img');
      img.src = '/images/black-rectangle.png';
      img.id = 'rectangle';
      img.setAttribute('elementtiming', 'my_image');
      document.body.appendChild(img);
      beforeRender = performance.now();
    };
  }, 'Element with rectangular image has correct rect and instrinsic size.');
</script>
</body>
