tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_midi_device_connect_disconnect.html (1933B)


      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 output;
     16 
     17       let midi_access;
     18       try {
     19         midi_access = await navigator.requestMIDIAccess({ "sysex": false });
     20         ok(true, "MIDI Access Request successful");
     21       } catch (e) {
     22         ok(false, "MIDI Access Request failed!");
     23         SimpleTest.finish();
     24         return;
     25       }
     26       is(midi_access.sysexEnabled, false, "Sysex should be false");
     27       output = midi_access.outputs.get(await MIDITestUtils.outputInfo.id);
     28       let statePromiseRes;
     29       let statePromise = new Promise((res) => { statePromiseRes = res; });
     30       await output.open();
     31       let stateChangeHandler = (event) => {
     32         if (event.port == output) {
     33           return;
     34         }
     35         statePromiseRes(event.port);
     36       };
     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");
     42 
     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);
     49       SimpleTest.finish();
     50     }
     51    </script>
     52  </body>
     53 </html>