https://github.com/web-platform-tests/wpt
Raw File
Tip revision: ffa8120532d7c0f9a8f2eb4aca9e13073ab557cd authored by Marcos Cáceres on 28 November 2018, 04:56:37 UTC
Another typo
Tip revision: ffa8120
idlharness.any.js
// META: global=window,worker
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js

// https://w3c.github.io/performance-timeline/

'use strict';

promise_test(async t => {
  const observe = new Promise((resolve, reject) => {
    try {
      self.observer = new PerformanceObserver((entries, observer) => {
        self.entryList = entries;
        self.mark = entries.getEntries()[0];
        resolve();
      });
      observer.observe({ entryTypes: ['mark'] });
      performance.mark('test');
    } catch (e) {
      reject(e);
    }
  });
  const timeout = new Promise((_, reject) => {
    t.step_timeout(() => reject('Timed out waiting for observation'), 3000);
  });
  const user = await fetch('/interfaces/user-timing.idl').then(r => r.text());
  const execute_test = () => {
    idl_test(
      ['performance-timeline'],
      ['hr-time', 'dom'],
      idl_array => {
        idl_array.add_idls(user, {only: ['PerformanceMark']});
        idl_array.add_objects({
          Performance: ['performance'],
          // NOTE: PerformanceMark cascadingly tests PerformanceEntry
          PerformanceMark: ['mark'],
          PerformanceObserver: ['observer'],
          PerformanceObserverEntryList: ['entryList'],
        });
      }
    );
  };

  return Promise.race([observe, timeout]).then(
    execute_test,
    reason => {
      execute_test();
      return Promise.reject(reason);
    }
  );
})
back to top