<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Resource Timing ignores resources with data: URIs</title>
<link rel="author" title="Google" href="http://www.google.com/" />
<link rel="help" href="https://www.w3.org/TR/resource-timing-2/#resources-included-in-the-performanceresourcetiming-interface"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/resource-loaders.js"></script>
</head>
<body>
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAOTm7AAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="></img>
<script>
  promise_test(async t => {
    const promise = new Promise(resolve => {
      new PerformanceObserver(t.step_func(list => {
        const entries = list.getEntries();
        const dataEntries = entries.filter(e => e.name.includes('data:'));
        assert_equals(dataEntries.length, 0, 'There must be no entry for `data: URL`.');
        const blueEntries = entries.filter(e => e.name.includes('blue.png'));
        if (blueEntries.length) {
          // We can finish the test once we see the entry with blue.png.
          resolve();
        }
      })).observe({entryTypes: ['resource']});
    });
    // Wait until the document is loaded.
    await new Promise(resolve => {
      window.addEventListener('load', resolve);
    });
    // Add the blue.png image after document is loaded to ensure we've received
    // all of the previous Resource Timing entries.
    load.image('blue.png');
    return promise;
  }, 'Resources with data: URIs must not be surfaced in Resource Timing');
</script>
</body>
</html>
