test_midi_device_sysex.html (2024B)
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 var sysexCheckCount = 0; 16 var checkCount = 0; 17 var input; 18 var output; 19 function checkSysexReceive(event) { 20 checkCount++; 21 sysexCheckCount++; 22 if (sysexCheckCount == 1) { 23 is(event.data[0], 0xF0, "Echoed sysex message via sysex port"); 24 } else { 25 is(event.data[0], 0x90, "Echoed regular message via sysex port"); 26 } 27 if (checkCount == 5) { 28 SimpleTest.finish(); 29 } 30 } 31 32 function checkNoSysexReceive(event) { 33 checkCount++; 34 is(event.data[0], 0x90, "Echoed regular message via non-sysex port"); 35 if (checkCount == 5) { 36 SimpleTest.finish() 37 } 38 } 39 40 // Request access without sysex. 41 let access_regular = await navigator.requestMIDIAccess({ "sysex": false }); 42 let access_sysex = await navigator.requestMIDIAccess({ "sysex": true }); 43 ok(true, "MIDI Access Request successful"); 44 ok(true, "Check for sysex message drop"); 45 input = access_regular.inputs.get(await MIDITestUtils.inputInfo.id); 46 output = access_sysex.outputs.get(await MIDITestUtils.outputInfo.id); 47 let input_sysex = access_sysex.inputs.get(await MIDITestUtils.inputInfo.id); 48 input_sysex.onmidimessage = checkSysexReceive; 49 input.onmidimessage = checkNoSysexReceive; 50 output.send([0xF0, 0x00, 0xF7]); 51 output.send([0x90, 0x00, 0x01]); 52 output.send([0x90, 0x00, 0x01]); 53 } 54 </script> 55 </body> 56 </html>