1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
<!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>
|