3 <title>WebMIDI Listener Test
</title>
4 <script src=
"/tests/SimpleTest/SimpleTest.js"></script>
5 <link rel=
"stylesheet" type=
"text/css" href=
"/tests/SimpleTest/test.css" />
6 <script type=
"application/javascript" src=
"MIDITestUtils.js"></script>
9 <body onload=
"runTests()">
10 <script class=
"testbody" type=
"application/javascript">
11 SimpleTest.waitForExplicitFinish();
13 async function runTests() {
14 await MIDITestUtils.permissionSetup(true);
19 midi_access = await navigator.requestMIDIAccess({
"sysex": false });
20 ok(true,
"MIDI Access Request successful");
22 ok(false,
"MIDI Access Request failed!");
26 is(midi_access.sysexEnabled, false,
"Sysex should be false");
27 output = midi_access.outputs.get(await MIDITestUtils.outputInfo.id);
29 let statePromise = new Promise((res) =
> { statePromiseRes = res; });
31 let stateChangeHandler = (event) =
> {
32 if (event.port == output) {
35 statePromiseRes(event.port);
37 midi_access.addEventListener(
"statechange", stateChangeHandler);
38 // Send command to connect new port.
39 output.send([
0x90,
0x01,
0x00]);
40 let p = await statePromise;
41 is(p.state,
"connected",
"Device " + p.name +
" connected");
43 // Rebuild our promise, we'll need to await another one.
44 statePromise = new Promise((res) =
> { statePromiseRes = res; });
45 output.send([
0x90,
0x02,
0x00]);
46 p = await statePromise;
47 is(p.state,
"disconnected",
"Device " + p.name +
" disconnected");
48 midi_access.removeEventListener(
"statechange", stateChangeHandler);