1<!doctype html> 2<html> 3<head> 4<meta charset=utf-8> 5<title></title> 6<script src=/resources/testharness.js></script> 7<script src=/resources/testharnessreport.js></script> 8</head> 9<body> 10<script> 11<!-- 12promise_test(t => { 13 return new Promise((resolve) => { 14 let ifr = document.createElement("iframe"); 15 ifr.src = 16 "data:text/html,<script> let bc = new BroadcastChannel(\"test\");" + 17 "bc.onmessage = (e) => {" + 18 " if (e.data == \"ping\") bc.postMessage('pong');"+ 19 " else parent.postMessage({workerMessageOrigin: e.data, messageOrigin: e.origin}, \"*\"); };" + 20 "new Worker(URL.createObjectURL(new Blob([\"" + 21 "let bc2 = new BroadcastChannel('test'); bc2.postMessage('ping'); " + 22 "bc2.onmessage = e => bc2.postMessage(e.origin);" + 23 "\"], {type: 'text/javascript'}))); </script>"; 24 window.addEventListener("message", t.step_func(e => { 25 assert_equals(e.data.workerMessageOrigin, "null"); 26 assert_equals(e.data.messageOrigin, "null"); 27 resolve(); 28 }), {once: true}); 29 document.body.appendChild(ifr); 30 }); 31}, "Opaque origin should be serialized to \"null\""); 32//--> 33</script> 34</body> 35</html> 36