test_midi_device_implicit_open_close.html (1904B)
1 <html> 2 <head> 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> 7 </head> 8 9 <body onload="runTests()"> 10 <script class="testbody" type="application/javascript"> 11 SimpleTest.waitForExplicitFinish(); 12 13 async function runTests() { 14 await MIDITestUtils.permissionSetup(true); 15 let access = await navigator.requestMIDIAccess({ "sysex": false }); 16 ok(true, "MIDI Access Request successful"); 17 is(access.sysexEnabled, false, "Sysex should be false"); 18 19 var checkCount = 0; 20 var input; 21 var output; 22 function checkCallbacks(port) { 23 if (checkCount < 2) { 24 ok(port.connection === "open", "Got port " + port.connection + " for " + port.name); 25 } else { 26 ok(port.connection === "closed", "Got port " + port.connection + " for " + port.name); 27 } 28 29 checkCount++; 30 if (checkCount == 4) { 31 input.onstatechange = undefined; 32 output.onstatechange = undefined; 33 SimpleTest.finish(); 34 } 35 } 36 function checkReturn(event) { 37 ok(true, "Got echo message back"); 38 MIDITestUtils.checkPacket(event.data, [0x90, 0x00, 0x7f]); 39 input.close(); 40 output.close(); 41 } 42 43 input = access.inputs.get(await MIDITestUtils.inputInfo.id); 44 output = access.outputs.get(await MIDITestUtils.outputInfo.id); 45 input.onstatechange = (event) => { checkCallbacks(event.port); }; 46 output.onstatechange = (event) => { checkCallbacks(event.port); }; 47 // Ports are closed. Fire rest of tests. 48 input.onmidimessage = checkReturn; 49 output.send([0x90, 0x00, 0x7F]); 50 } 51 </script> 52 </body> 53 </html>