tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>