| <!DOCTYPE html> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <body> | |
| <script> | |
| async function addIframeAndReceiveMessage(path) { | |
| let url = new URL('resources/transfer-arraybuffer-to-parent.html', location); | |
| url.hostname = '{{hosts[alt][]}}'; | |
| let frame = document.createElement('iframe'); | |
| try { | |
| frame.src = url; | |
| document.body.appendChild(frame); | |
| return await new Promise((resolve, reject) => { | |
| window.addEventListener('message', e => resolve(e)); | |
| window.addEventListener('messageerror', e => reject(new Error('received messageerror'))); | |
| }); | |
| } finally { | |
| frame.remove(); | |
| } | |
| } | |
| promise_test(async () => { | |
| let messageEvent = await addIframeAndReceiveMessage('resources/transfer-arraybuffer-to-parent.html'); | |
| assert_class_string(messageEvent.data, 'ArrayBuffer'); | |
| assert_array_equals(new Uint8Array(messageEvent.data), [42, 222]); | |
| }, "cross-site windows can send transferred ArrayBuffer"); | |
| </script> | |
| </body> |