| <!DOCTYPE html> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src="../../resources/testdriver.js"></script> |
| <script src="../../resources/testdriver-vendor.js"></script> |
| <script src="../../resources/bluetooth/bluetooth-helpers.js"></script> |
| <script src="../../external/wpt/bluetooth/resources/bluetooth-helpers.js"></script> |
| <script> |
| 'use strict'; |
| const test_desc = 'Concurrent requestDevice calls in iframes work.'; |
| const iframes = []; |
| for (let i = 0; i < 5; i++) { |
| iframes.push(document.createElement('iframe')); |
| } |
| |
| bluetooth_test(() => setUpHealthThermometerAndHeartRateDevices() |
| // 1. Load the iframes. |
| .then(() => { |
| let promises = []; |
| for (let iframe of iframes) { |
| iframe.src = '../../resources/bluetooth/requestDevice-in-iframe.html'; |
| document.body.appendChild(iframe); |
| promises.push(new Promise(resolve => |
| iframe.addEventListener('load', resolve))); |
| } |
| return Promise.all(promises); |
| }) |
| // 2. Request the device from the iframes. |
| .then(() => new Promise(async (resolve) => { |
| let numMessages = 0; |
| window.onmessage = messageEvent => { |
| assert_equals(messageEvent.data, 'Success'); |
| if (++numMessages === iframes.length) { |
| resolve(); |
| } |
| } |
| |
| for (let iframe of iframes) { |
| await callWithTrustedClick( |
| () => iframe.contentWindow.postMessage('Go', '*')); |
| } |
| })), test_desc); |
| </script> |