| <!DOCTYPE html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/speculation-rules/prerender/resources/utils.js"></script> |
| <script src="/speculation-rules/prerender/resources/deferred-promise-utils.js"></script> |
| |
| <script> |
| const params = new URLSearchParams(location.search); |
| |
| // The main test page (restriction-midi.https.html) loads the initiator page, |
| // then the initiator page will prerender itself with the `prerendering` |
| // parameter. |
| const isPrerendering = params.has('prerendering'); |
| |
| if (!isPrerendering) { |
| loadInitiatorPage(); |
| } else { |
| const prerenderEventCollector = new PrerenderEventCollector(); |
| const promise = new Promise((resolve, reject) => { |
| navigator.requestMIDIAccess({sysex: params.get("sysex") === "true"}).then( |
| _ => { resolve(); }, |
| e => { |
| // Chromium rejects the promise on trybots with an error like: |
| // ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: |
| // Permission denied |
| // |
| // See https://crbug.com/371230 for a similar bug. |
| // |
| // Just ignore any errors for now. The test passes if the promise |
| // settles after activation. |
| resolve(); |
| }); |
| }); |
| prerenderEventCollector.start(promise, 'navigator.requestMIDIAccess'); |
| } |
| |
| </script> |