Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1126)

Side by Side Diff: third_party/WebKit/LayoutTests/webmidi/add-port.html

Issue 2487113002: Web MIDI: fix a regression of r430234 (Closed)
Patch Set: fix a bug that was discussed offline Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <script src="../resources/testharness.js"></script>
3 <script src="../resources/testharnessreport.js"></script>
4 <script src="../http/tests/resources/permissions-helper.js"></script>
5 <script>
6 async_test(t => {
7 var sysexHeader = [ 0xf0, 0x00, 0x02, 0x0d, 0x7f ];
8 var sysexFooter = [ 0xf7 ];
9 var sysexPayloadToAddInputAsConnected = [ 0x00, 0x00 ];
10 var sysexPayloadToAddOutputAsConnected = [ 0x00, 0x01 ];
11 var sysexPayloadToAddInputAsOpened = [ 0x00, 0x02 ];
12 var sysexPayloadToAddOutputAsOpened = [ 0x00, 0x03 ];
13 var noteOn = [ 0x90, 0x45, 0x7f ];
14
15 function createSysex(payload) {
16 return sysexHeader.concat(payload).concat(sysexFooter);
17 }
18
19 t.step(() => {
20 Promise.all([
21 PermissionsHelper.setPermission('midi', 'granted'),
22 PermissionsHelper.setPermission('midi-sysex', 'granted')
23 ]).then(() => {
24 return navigator.requestMIDIAccess({sysex : true});
25 }).then(a => {
26 var started = false;
27 var receivedMessages = 0;
28 var receiveMessage = e => {
29 t.step(() => {
30 assert_array_equals(
31 e.data, noteOn, 'received message should be noteOn');
32 });
33 if (++receivedMessages != 2)
34 return;
35 t.done();
36 };
37
38 a.onstatechange = e => {
39 // Wait until three outputs and three inputs appear.
40 if (a.inputs.size != 3 || a.outputs.size != 3 || started)
41 return;
42 started = true;
43
44 // Set an event handler respectively for newly connected ports.
45 var inputs = a.inputs.values();
46 inputs.next();
47 inputs.next().value.onmidimessage = receiveMessage;
48 inputs.next().value.onmidimessage = receiveMessage;
49
50 // Send a message respectively, and see if it is loopbacked.
51 var outputs = a.outputs.values();
52 outputs.next();
53 outputs.next().value.send(noteOn);
54 outputs.next().value.send(noteOn);
55 };
56
57 output = a.outputs.values().next().value;
58
59 // Send sysex messages to request dynamically adding mock devices.
60 output.send(createSysex(sysexPayloadToAddInputAsConnected));
61 output.send(createSysex(sysexPayloadToAddOutputAsConnected));
62 output.send(createSysex(sysexPayloadToAddInputAsOpened));
63 output.send(createSysex(sysexPayloadToAddOutputAsOpened));
64 }).catch(e => assert_unreached(e));
65 });
66 }, "Test if newly connected ports work correctly");
67 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698