blob: 0a9966add85c6cdd35ce54eb05aae0986c5d9b8e [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>
Test onprocessorerror handler in AudioWorkletNode
</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();
const sampleRate = 48000;
const renderLength = sampleRate * 0.1;
let context = new OfflineAudioContext(1, renderLength, sampleRate);
let filePath = 'processors/error-processor.js';
// Test |onprocessorerror| called upon failure of processor constructor.
audit.define('constructor-error',
(task, should) => {
let constructorErrorWorkletNode =
new AudioWorkletNode(context, 'constructor-error');
constructorErrorWorkletNode.onprocessorerror = () => {
// Without 'processorerror' event callback, this test will be
// timed out.
task.done();
};
});
// Test |onprocessorerror| called upon failure of process() method.
audit.define('process-error',
(task, should) => {
let processErrorWorkletNode =
new AudioWorkletNode(context, 'process-error');
processErrorWorkletNode.connect(context.destination);
processErrorWorkletNode.onprocessorerror = () => {
// Without 'processorerror' event callback, this test will be
// timed out.
task.done();
};
context.startRendering();
});
// 'error-processor.js' contains 2 class definitions represents an error
// in the constructor and an error in the process method respectively.
context.audioWorklet.addModule(filePath).then(() => {
audit.run();
});
</script>
</body>
</html>