<!DOCTYPE HTML>
<meta charset=utf-8>
<title>Element Timing: observe element with inline background image</title>
<body>
<style>
body {
  margin: 0;
}
#target {
  width: 100px;
  height: 50px;
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAQMAAAC3/F3+AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEX/AAD///9BHTQRAAAAAWJLR0QB/wIt3gAAAAtJREFUCNdjYMAHAAAeAAFuhUcyAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE5LTA0LTA1VDIwOjA4OjQxKzAyOjAwPa6EZwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOS0wNC0wNVQyMDowODo0MSswMjowMEzzPNsAAAAASUVORK5CYII=);
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/element-timing-helpers.js"></script>
<script>
  let beforeRender = performance.now();
  async_test(function (t) {
    assert_implements(window.PerformanceElementTiming, "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];
        // Only the first characters of the data URI are included in the entry.
        const uriPrefix = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKAQMAAAC3/F3+AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAA';
        checkElementWithoutResourceTiming(entry, uriPrefix, 'my_div', 'target',
            beforeRender, document.getElementById('target'));
        // The background image is a red square of length 10.
        checkRect(entry, [0, 100, 0, 50]);
        checkNaturalSize(entry, 10, 10);
      })
    );
    observer.observe({entryTypes: ['element']});
  }, 'Element with elementtiming attribute and inline background image is observable.');
</script>
<div id='target' elementtiming='my_div'></div>
</body>
