summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-getoutputtimestamp-cross-realm.html
blob: 5889faf7ccd10b9a67ca3457c8c009dfc16d5e20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html>
  <head>
    <title>
      Testing AudioContext.getOutputTimestamp() method (cross-realm)
    </title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/webaudio/resources/audit.js"></script>
  </head>
  <body>
    <script id="layout-test-code">
      const audit = Audit.createTaskRunner();

      audit.define("getoutputtimestamp-cross-realm", function(task, should) {
        const mainContext = new AudioContext();
        return task.timeout(() => {
          const iframe = document.createElement("iframe");
          document.body.append(iframe);
          const iframeContext = new iframe.contentWindow.AudioContext();

          should(mainContext.getOutputTimestamp().performanceTime, "mainContext's performanceTime")
            .beGreaterThan(iframeContext.getOutputTimestamp().performanceTime, "iframeContext's performanceTime");
          should(iframeContext.getOutputTimestamp.call(mainContext).performanceTime, "mainContext's performanceTime (via iframeContext's method)")
            .beCloseTo(mainContext.getOutputTimestamp().performanceTime, "mainContext's performanceTime", { threshold: 0.01 });
        }, 1000);
      });

      audit.run();
    </script>
  </body>
</html>