blob: e3fb6e533df8ccaa88564f836239e0c9e9c1d5e4 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>
Test if AudioWorkletProcessor with invalid parameters array getter
</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">
let audit = Audit.createTaskRunner();
// Arbitrarily determined. Any numbers should work.
let sampleRate = 16000;
let renderLength = 1280;
let context;
let filePath = 'processors/invalid-param-array-processor.js';
audit.define('Initializing AudioWorklet and Context', async (task) => {
context = new OfflineAudioContext(1, renderLength, sampleRate);
await context.audioWorklet.addModule(filePath);
task.done();
});
audit.define('Verifying AudioParam in AudioWorkletNode',
async (task, should) => {
let buffer = context.createBuffer(1, 2, context.sampleRate);
buffer.getChannelData(0)[0] = 1;
let source = new AudioBufferSourceNode(context);
source.buffer = buffer;
source.loop = true;
source.start();
let workletNode1 =
new AudioWorkletNode(context, 'invalid-param-array-1');
let workletNode2 =
new AudioWorkletNode(context, 'invalid-param-array-2');
workletNode1.connect(workletNode2).connect(context.destination);
// Manually invoke the param getter.
source.connect(workletNode2.parameters.get('invalidParam'));
const renderedBuffer = await context.startRendering();
// |workletNode2| should be no-op after the parameter getter is
// invoked. Therefore, the rendered result should be silent.
should(renderedBuffer.getChannelData(0), 'The rendered buffer')
.beConstantValueOf(0);
task.done();
}
);
audit.run();
</script>
</body>
</html>