broadcast-channel.html (1089B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="utils.js"></script> 5 <script src="deferred-promise-utils.js"></script> 6 <script> 7 8 const params = new URLSearchParams(location.search); 9 10 // The main test page (restriction-broadcast-channel.html) loads the initiator 11 // page, then the initiator page will prerender itself with the `prerendering` 12 // parameter. 13 const isPrerendering = params.has('prerendering'); 14 15 if (!isPrerendering) { 16 loadInitiatorPage(); 17 } else { 18 const prerenderEventCollector = new PrerenderEventCollector(); 19 20 // Create separate channels as a sender channel cannot receive a message sent 21 // by itself. 22 const sender = new BroadcastChannel('test'); 23 const receiver = new BroadcastChannel('test'); 24 25 const promise = new Promise(resolve => { 26 receiver.onmessage = e => { 27 prerenderEventCollector.addEvent(`received message: ${e.data}`); 28 resolve(); 29 }; 30 }); 31 sender.postMessage('hello'); 32 33 prerenderEventCollector.start(promise, 'BroadcastChannel'); 34 } 35 </script>