// META: script=/resources/WebIDLParser.js // META: script=/resources/idlharness.js // META: script=/resources/testdriver.js // META: script=/resources/testdriver-vendor.js // META: timeout=long // https://webaudio.github.io/web-midi-api/ 'use strict'; idl_test( ['webmidi'], ['html', 'dom', 'permissions'], async idl_array => { idl_array.add_objects({ MIDIPort: [], MIDIMessageEvent: [ 'new MIDIMessageEvent("type", { data: new Uint8Array([0]) })' ], MIDIConnectionEvent: ['new MIDIConnectionEvent("type")'], }) // Chromium requires the sysex permission to allow any type of MIDI await test_driver.set_permission({name: 'midi', sysex: true}, 'granted'); self.access = await navigator.requestMIDIAccess(); self.inputs = access.inputs; self.outputs = access.outputs; idl_array.add_objects({ MIDIInputMap: ['inputs'] }); idl_array.add_objects({ MIDIOutputMap: ['outputs'] }); idl_array.add_objects({ MIDIAccess: ['access'] }); if (inputs.size) { self.input = Array.from(access.inputs.values())[0]; idl_array.add_objects({ MIDIInput: ['input'] }); } if (outputs.size) { self.output = Array.from(access.outputs.values())[0]; idl_array.add_objects({ MIDIOutput: ['output'] }); } } );