MessageEvent_onmessage_postMessage_infinite_loop.html (1003B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>MessageEvent: onmessage infinite loop</title> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 </head> 8 <body> 9 <script> 10 'use strict'; 11 12 // The test passes if the onmessage / postMessage loop does not prevent the 13 // step_timeout task from ever being run. In particular there should be no 14 // infinite loop or stack overflow. 15 async_test(function(t) { 16 var channel = new MessageChannel(); 17 var count = 0; 18 channel.port1.addEventListener("message", t.step_func(function() { 19 count++; 20 assert_less_than(count, 1000, "There were many message events without " + 21 "t.step_timeout ever being called."); 22 })); 23 channel.port1.addEventListener("message", t.step_func(function() { 24 channel.port2.postMessage(0); 25 })); 26 channel.port1.start(); 27 channel.port2.postMessage(0); 28 29 t.step_timeout(function() { t.done(); }, 0); 30 }, "onmessage calling source postMessage"); 31 </script>