blob: de31f71427d5cd29e61935e8f82217e1c8bc0341 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>
Test dynamic registerProcessor() calls in AudioWorkletGlobalScope
</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
const t = async_test('Dynamic registration in AudioWorkletGlobalScope');
const realtimeContext = new AudioContext();
const filePath = 'processors/dynamic-register-processor.js';
// Test if registering an AudioWorkletProcessor dynamically (after the
// initial module script loading) works correctly. In the construction of
// nodeB (along with ProcessorB), it registers ProcessorA's definition.
realtimeContext.audioWorklet.addModule(filePath).then(() => {
const nodeB = new AudioWorkletNode(realtimeContext, 'ProcessorB');
assert_true(nodeB instanceof AudioWorkletNode,
'nodeB should be instance of AudioWorkletNode');
nodeB.port.postMessage({});
nodeB.port.onmessage = () => {
const nodeA = new AudioWorkletNode(realtimeContext, 'ProcessorA');
t.step(() => {
assert_true(nodeA instanceof AudioWorkletNode,
'nodeA should be instance of AudioWorkletNode');
});
t.done();
};
});
</script>
</body>
</html>