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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/webmidi/add-port.html
diff --git a/third_party/WebKit/LayoutTests/webmidi/add-port.html b/third_party/WebKit/LayoutTests/webmidi/add-port.html
new file mode 100644
index 0000000000000000000000000000000000000000..66f250461e031e4d84edf2b9ee32156f1ba56acf
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/webmidi/add-port.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<script src="../http/tests/resources/permissions-helper.js"></script>
+<script>
+async_test(t => {
+ var sysexHeader = [ 0xf0, 0x00, 0x02, 0x0d, 0x7f ];
+ var sysexFooter = [ 0xf7 ];
+ var sysexPayloadToAddInputAsConnected = [ 0x00, 0x00 ];
+ var sysexPayloadToAddOutputAsConnected = [ 0x00, 0x01 ];
+ var sysexPayloadToAddInputAsOpened = [ 0x00, 0x02 ];
+ var sysexPayloadToAddOutputAsOpened = [ 0x00, 0x03 ];
+ var noteOn = [ 0x90, 0x45, 0x7f ];
+
+ function createSysex(payload) {
+ return sysexHeader.concat(payload).concat(sysexFooter);
+ }
+
+ t.step(() => {
+ Promise.all([
+ PermissionsHelper.setPermission('midi', 'granted'),
+ PermissionsHelper.setPermission('midi-sysex', 'granted')
+ ]).then(() => {
+ return navigator.requestMIDIAccess({sysex : true});
+ }).then(a => {
+ var started = false;
+ var receivedMessages = 0;
+ var receiveMessage = e => {
+ t.step(() => {
+ assert_array_equals(
+ e.data, noteOn, 'received message should be noteOn');
+ });
+ if (++receivedMessages != 2)
+ return;
+ t.done();
+ };
+
+ a.onstatechange = e => {
+ // Wait until three outputs and three inputs appear.
+ if (a.inputs.size != 3 || a.outputs.size != 3 || started)
+ return;
+ started = true;
+
+ // Set an event handler respectively for newly connected ports.
+ var inputs = a.inputs.values();
+ inputs.next();
+ inputs.next().value.onmidimessage = receiveMessage;
+ inputs.next().value.onmidimessage = receiveMessage;
+
+ // Send a message respectively, and see if it is loopbacked.
+ var outputs = a.outputs.values();
+ outputs.next();
+ outputs.next().value.send(noteOn);
+ outputs.next().value.send(noteOn);
+ };
+
+ output = a.outputs.values().next().value;
+
+ // Send sysex messages to request dynamically adding mock devices.
+ output.send(createSysex(sysexPayloadToAddInputAsConnected));
+ output.send(createSysex(sysexPayloadToAddOutputAsConnected));
+ output.send(createSysex(sysexPayloadToAddInputAsOpened));
+ output.send(createSysex(sysexPayloadToAddOutputAsOpened));
+ }).catch(e => assert_unreached(e));
+ });
+}, "Test if newly connected ports work correctly");
+</script>

Powered by Google App Engine
This is Rietveld 408576698