blob: 39b9be56e6484e78fee1e86d4974ef09ec37b4ca [file] [log] [blame]
'use strict';
// Test if the JS code execution in AudioWorkletGlobalScope can handle the
// denormals properly. For more details, see:
// https://esdiscuss.org/topic/float-denormal-issue-in-javascript-processor-node-in-web-audio-api
promise_test(async () => {
// In the main thread, the denormals should be non-zeros.
assert_not_equals(Number.MIN_VALUE, 0.0,
'The denormals should be non-zeros.');
const context = new AudioContext();
await context.audioWorklet.addModule(
'./processors/denormal-test-processor.js');
const denormalTestProcessor = new AudioWorkletNode(context, 'denormal-test');
return new Promise(resolve => {
denormalTestProcessor.port.onmessage = resolve;
denormalTestProcessor.connect(context.destination);
}).then(event => {
// In the AudioWorkletGlobalScope, the denormals should be non-zeros too.
assert_true(
event.data.result,
'The denormals should be non-zeros in AudioWorkletGlobalScope.');
});
}, 'Test denormal behavior in AudioWorkletGlobalScope');