| <!DOCTYPE html> | 
 | <script src="../resources/testharness.js"></script> | 
 | <script src="../resources/testharnessreport.js"></script> | 
 | <script src="resources/bluetooth-helpers.js"></script> | 
 | <body> | 
 |   <script> | 
 |   "use strict"; | 
 |  | 
 |   const numIframes = 5; | 
 |  | 
 |   async_test(test => { | 
 |     let readiesReceived = 0; | 
 |     window.onmessage = messageEvent => test.step(() => { | 
 |       if (messageEvent.data === 'Ready') { | 
 |         readiesReceived++; | 
 |       } | 
 |       if (readiesReceived < numIframes) { | 
 |         return; | 
 |       } | 
 |  | 
 |       let iframesFinished = 0; | 
 |       window.onmessage = messageEvent => test.step(() => { | 
 |         if (messageEvent.data !== 'Success') { | 
 |           console.error(messageEvent.data); | 
 |         } | 
 |         iframesFinished++; | 
 |         if (iframesFinished === numIframes) { | 
 |           test.done(); | 
 |         } | 
 |       }); | 
 |  | 
 |       Array.prototype.forEach.call(document.querySelectorAll('iframe'), iframe => { | 
 |         callWithKeyDown(() => { | 
 |           iframe.contentWindow.postMessage('Go', '*'); | 
 |         }); | 
 |       }); | 
 |     }); | 
 |  | 
 |     testRunner.setBluetoothMockDataSet('HeartRateAdapter'); | 
 |     for (let i = 0; i < numIframes; i++) { | 
 |       let iframe = document.createElement('iframe'); | 
 |       iframe.src = 'resources/requestDevice-in-iframe.html'; | 
 |       document.body.appendChild(iframe); | 
 |     } | 
 |   }, 'Concurrent requestDevice calls in iframes work.'); | 
 |   </script> | 
 | </body> |