<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Element Timing: observe cross-origin images but without renderTime</title>
<body>
<style>
body {
  margin: 0;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/element-timing-helpers.js"></script>
<script>
  async_test((t) => {
    assert_implements(window.PerformanceElementTiming, "PerformanceElementTiming is not implemented");
    let img;
    const pathname = 'http://{{domains[www]}}:{{ports[http][1]}}'
          + '/element-timing/resources/square100.png';
    const observer = new PerformanceObserver(
      t.step_func_done((entryList) => {
        assert_equals(entryList.getEntries().length, 1);
        const entry = entryList.getEntries()[0];
        checkElement(entry, pathname, 'my_image', 'the_id', 0, img);
        assert_equals(entry.renderTime, 0,
          'The renderTime of a cross-origin image should be 0.');
        checkRect(entry, [0, 100, 0, 100]);
        checkNaturalSize(entry, 100, 100);
      })
    );
    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.
    // TODO(npm): change observer to use buffered flag.
    window.onload = t.step_func(() => {
      // Add a cross origin image resource.
      img = document.createElement('img');
      img.src = pathname;
      img.setAttribute('elementtiming', 'my_image');
      img.setAttribute('id', 'the_id');
      document.body.appendChild(img);
    });
  }, 'Cross-origin image element is NOT observable.');
</script>

</body>
