audioworkletprocessor-param-getter-overridden.https.html (2058B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title> 5 Test if AudioWorkletProcessor with invalid parameters array getter 6 </title> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="/webaudio/resources/audit.js"></script> 10 </head> 11 <body> 12 <script id="layout-test-code"> 13 let audit = Audit.createTaskRunner(); 14 15 // Arbitrarily determined. Any numbers should work. 16 let sampleRate = 16000; 17 let renderLength = 1280; 18 let context; 19 let filePath = 'processors/invalid-param-array-processor.js'; 20 21 audit.define('Initializing AudioWorklet and Context', async (task) => { 22 context = new OfflineAudioContext(1, renderLength, sampleRate); 23 await context.audioWorklet.addModule(filePath); 24 task.done(); 25 }); 26 27 audit.define('Verifying AudioParam in AudioWorkletNode', 28 async (task, should) => { 29 let buffer = context.createBuffer(1, 2, context.sampleRate); 30 buffer.getChannelData(0)[0] = 1; 31 32 let source = new AudioBufferSourceNode(context); 33 source.buffer = buffer; 34 source.loop = true; 35 source.start(); 36 37 let workletNode1 = 38 new AudioWorkletNode(context, 'invalid-param-array-1'); 39 let workletNode2 = 40 new AudioWorkletNode(context, 'invalid-param-array-2'); 41 workletNode1.connect(workletNode2).connect(context.destination); 42 43 // Manually invoke the param getter. 44 source.connect(workletNode2.parameters.get('invalidParam')); 45 46 const renderedBuffer = await context.startRendering(); 47 48 // |workletNode2| should be no-op after the parameter getter is 49 // invoked. Therefore, the rendered result should be silent. 50 should(renderedBuffer.getChannelData(0), 'The rendered buffer') 51 .beConstantValueOf(0); 52 task.done(); 53 } 54 ); 55 56 audit.run(); 57 </script> 58 </body> 59 </html>