| <!DOCTYPE html> |
| <html> |
| <head> |
| <title> |
| Test cross-thread passing of AudioWorkletNodeOptions |
| </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"> |
| const audit = Audit.createTaskRunner(); |
| const context = new AudioContext(); |
| |
| let filePath = 'processors/option-test-processor.js'; |
| |
| // Create a OptionTestProcessor and feed |processorData| to it. The |
| // processor should echo the received data to the node's |onmessage| |
| // handler. |
| audit.define('valid-processor-data', (task, should) => { |
| context.audioWorklet.addModule(filePath).then(() => { |
| let processorOptions = { |
| description: 'foo', |
| payload: [0, 1, 2, 3] |
| }; |
| |
| let optionTestNode = |
| new AudioWorkletNode(context, 'option-test-processor', { |
| processorOptions: processorOptions |
| }); |
| |
| optionTestNode.port.onmessage = (event) => { |
| should(event.data.processorOptions.description, |
| '|description| field in processorOptions from processor("' + |
| event.data.processorOptions.description + '")') |
| .beEqualTo(processorOptions.description, |
| 'the field in node constructor options ("' + |
| processorOptions.description + '")'); |
| should(event.data.processorOptions.payload, |
| '|payload| array in processorOptions from processor([' + |
| event.data.processorOptions.payload + '])') |
| .beEqualToArray([0, 1, 2, 3], |
| 'the array in node constructor options ([' + |
| event.data.processorOptions.payload + '])'); |
| task.done(); |
| }; |
| }); |
| }); |
| |
| |
| // Passing empty option dictionary should work without a problem. |
| audit.define('empty-option', (task, should) => { |
| context.audioWorklet.addModule(filePath).then(() => { |
| let optionTestNode = |
| new AudioWorkletNode(context, 'option-test-processor'); |
| |
| optionTestNode.port.onmessage = (event) => { |
| should(Object.keys(event.data).length, |
| 'Number of properties in data from processor') |
| .beEqualTo(2); |
| should(event.data.numberOfInputs, |
| '|numberOfInputs| field in data from processor') |
| .beEqualTo(1); |
| should(event.data.numberOfOutputs, |
| '|numberOfOutputs| field in data from processor') |
| .beEqualToArray(1); |
| task.done(); |
| }; |
| }); |
| }); |
| |
| |
| audit.run(); |
| </script> |
| </body> |
| </html> |