| <!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> |