tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>