<!DOCTYPE html> <html> <head> <title> postMessage to same-origin iframe with MessagePort array [100 ports] </title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> <body> <div id=log></div> <div style="display:none"> <iframe width="70%" onload="PostMessageTest()" src="./support/ChildWindowPostMessage.htm"></iframe> </div> <script> var description = "Test Description: postMessage to same-origin iframe with MessagePort array containing 100 ports."; var t = async_test(description); var TOTALPORTS = 100; var LocalPorts = []; var RemotePorts = []; var PassedResult = 0; var sum = 0; var TARGET = document.querySelector("iframe").contentWindow; function PostMessageTest() { test(function() { assert_own_property(window, "MessageChannel", "window"); var channels = []; for (var i=0; i<TOTALPORTS; i++) { channels[i] = new MessageChannel(); LocalPorts[i] = channels[i].port1; LocalPorts[i].foo = i; RemotePorts[i] = channels[i].port2; LocalPorts[i].onmessage = t.step_func(function(e) { assert_equals(e.target.foo, e.data); PassedResult++; sum += e.data; if (PassedResult == TOTALPORTS) { assert_equals(sum, 4950); t.done(); } }); } TARGET.postMessage("ports", "*", RemotePorts); }, "MessageChannel is supported."); } window.onmessage = function(e) { if (e.data === "ports") { for (var i=0; i<TOTALPORTS; i++) { LocalPorts[i].postMessage(LocalPorts[i].foo); } } } </script> </body> </html>