summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/service-workers/service-worker/fetch-audio-tainting.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/service-workers/service-worker/fetch-audio-tainting.https.html')
-rw-r--r--testing/web-platform/tests/service-workers/service-worker/fetch-audio-tainting.https.html47
1 files changed, 47 insertions, 0 deletions
diff --git a/testing/web-platform/tests/service-workers/service-worker/fetch-audio-tainting.https.html b/testing/web-platform/tests/service-workers/service-worker/fetch-audio-tainting.https.html
new file mode 100644
index 0000000000..9821759bc7
--- /dev/null
+++ b/testing/web-platform/tests/service-workers/service-worker/fetch-audio-tainting.https.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/test-helpers.sub.js?pipe=sub"></script>
+<script>
+promise_test(async (t) => {
+ const SCOPE = 'resources/empty.html';
+ const SCRIPT = 'resources/fetch-rewrite-worker.js';
+ const host_info = get_host_info();
+ const REMOTE_ORIGIN = host_info.HTTPS_REMOTE_ORIGIN;
+
+ const reg = await service_worker_unregister_and_register(t, SCRIPT, SCOPE);
+ await wait_for_state(t, reg.installing, 'activated');
+ const frame = await with_iframe(SCOPE);
+
+ const doc = frame.contentDocument;
+ const win = frame.contentWindow;
+
+ const context = new win.AudioContext();
+ try {
+ context.suspend();
+ const audio = doc.createElement('audio');
+ audio.autoplay = true;
+ const source = context.createMediaElementSource(audio);
+ const spn = context.createScriptProcessor(16384, 1, 1);
+ source.connect(spn).connect(context.destination);
+ const url = `${REMOTE_ORIGIN}/webaudio/resources/sin_440Hz_-6dBFS_1s.wav`;
+ audio.src = '/test?url=' + encodeURIComponent(url);
+ doc.body.appendChild(audio);
+
+ await new Promise((resolve) => {
+ audio.addEventListener('playing', resolve);
+ });
+ await context.resume();
+ const event = await new Promise((resolve) => {
+ spn.addEventListener('audioprocess', resolve);
+ });
+ const data = event.inputBuffer.getChannelData(0);
+ for (const e of data) {
+ assert_equals(e, 0);
+ }
+ } finally {
+ context.close();
+ }
+ }, 'Verify CORS XHR of fetch() in a Service Worker');
+</script>