postMessage_crosssite.sub.htm (1011B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <body> 5 <script> 6 async function addIframeAndReceiveMessage(path) { 7 let url = new URL('resources/transfer-arraybuffer-to-parent.html', location); 8 url.hostname = '{{hosts[alt][]}}'; 9 10 let frame = document.createElement('iframe'); 11 try { 12 frame.src = url; 13 document.body.appendChild(frame); 14 return await new Promise((resolve, reject) => { 15 window.addEventListener('message', e => resolve(e)); 16 window.addEventListener('messageerror', e => reject(new Error('received messageerror'))); 17 }); 18 } finally { 19 frame.remove(); 20 } 21 } 22 23 promise_test(async () => { 24 let messageEvent = await addIframeAndReceiveMessage('resources/transfer-arraybuffer-to-parent.html'); 25 assert_class_string(messageEvent.data, 'ArrayBuffer'); 26 assert_array_equals(new Uint8Array(messageEvent.data), [42, 222]); 27 }, "cross-site windows can send transferred ArrayBuffer"); 28 </script> 29 </body>