blob: 0245066ace47fe5f9fcc320e7c68a8d21b94d507 [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../http/tests/resources/permissions-helper.js"></script>
<script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script>
<script src="file:///gen/media/midi/midi_service.mojom.js"></script>
<script src="../http/tests/webmidi/mock-midiservice.js"></script>
<script>
promise_test(async () => {
// Obtain the first MIDIAccess instance without a sysex permission.
await PermissionsHelper.setPermission('midi', 'granted');
const nosysex_access = await navigator.requestMIDIAccess();
// See if a sysex message can not be sent over the first instance.
const nosysex_outport = nosysex_access.outputs.values().next().value;
const sysex_message = [0xf0, 0x00, 0x01, 0x02, 0xf7];
assert_throws("InvalidAccessError", () => {
nosysex_outport.send(sysex_message);
});
// Obtain the second MIDIAccess instance with a sysex permission.
await PermissionsHelper.setPermission('midi-sysex', 'granted');
const sysex_access = await navigator.requestMIDIAccess({sysex: true});
// See if a sysex message can be sent correctly over the second instance.
const sysex_loopback_inport = sysex_access.inputs.values().next().value;
received_data = await new Promise((resolve, reject) => {
sysex_loopback_inport.onmidimessage = e => resolve(e.data);
const sysex_outport = sysex_access.outputs.values().next().value;
sysex_outport.send(sysex_message);
});
assert_array_equals(sysex_message, received_data);
}, "Test if the second MIDIAccess with stronger authority works correctly");
</script>