Revision 750cfaf984c93f0cc80cf28110fe0c6333fcfbb4 authored by Tarun Bansal on 15 March 2018, 17:56:27 UTC, committed by Blink WPT Bot on 15 March 2018, 18:14:49 UTC
Also, add tests for other client hints.

Finally. use the built-in sub pipe to enable running the
cross-origin test.

Bug: 817049
Change-Id: Ib4155f50e0ffd3a0447cf250cd4018b650f3b419
Reviewed-on: https://chromium-review.googlesource.com/963403
Commit-Queue: Tarun Bansal <tbansal@chromium.org>
Reviewed-by: Robert Ma <robertma@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543433}
1 parent d56bf78
Raw File
po-observe.html
<!DOCTYPE HTML>
<meta charset=utf-8>
<title>PerformanceObservers: PerformanceObserverInit.buffered</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="performanceobservers.js"></script>
<h1>PerformanceObservers: PerformanceObserverInit.buffered</h1>
<p>
PerformanceObserverInit.buffered should retrieve previously buffered entries
</p>
<div id="log"></div>
<script>
  async_test(function (t) {
    function initTest() {
      new PerformanceObserver(function (entryList, observer) {
        entryList.getEntries().forEach(function(entry) {
          if (shouldExclude(entry)) {
            return;
          }

          observedEntries.push(entry);
          if (observedEntries.length === entryTypes.length) {
            observer.disconnect();
            runTest();
          }
        });
      }).observe({entryTypes});

      // creates a `resource` entry
      var img = document.createElement("img");
      img.src = "./resources/square.png";
      document.body.appendChild(img);

      performance.mark("markName"); // creates a `mark` entry
      performance.measure("measureName"); // creates a `measure` entry
    }
    function shouldExclude(entry) {
      // exclude all `resource` entries that aren't for "square.png"
      return entry.entryType === "resource" &&
             entry.name.indexOf("square.png") === -1;
    }
    function runTest() {
      // this PerformanceObserver is a nop because we've already been notified about all of our `entryTypes`
      var po_nop = new PerformanceObserver(function (entryList, observer) {
        if (entryList.getEntries().find(function(entry) {
          return !shouldExclude(entry);
        })) {
          assert_unreached("this PerformanceObserver callback should never be called");
        }
      });
      po_nop.observe({
        entryTypes,
        buffered: false
      });

      // this PerformanceObserver should be notified about the previously buffered entries
      const bufferedEntries = [];
      new PerformanceObserver(function (entryList, observer) {
        entryList.getEntries().forEach(function(entry) {
          if (shouldExclude(entry)) {
            return;
          }

          bufferedEntries.push(entry);
          if (bufferedEntries.length === entryTypes.length) {
            observer.disconnect();
            po_nop.disconnect();
            checkEntries(bufferedEntries, observedEntries);
            t.done();
          }
        });
      }).observe({
        entryTypes,
        buffered: true
      });
    }

    const entryTypes = ["navigation", "resource", "mark", "measure"];
    const observedEntries = [];
    initTest();
  }, "PerformanceObserverInit.buffered should retrieve previously buffered entries");

</script>
back to top