diff options
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.html | 47 |
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> |