tor-browser

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

ordering.html (2269B)


      1 <body></body>
      2 <script>
      3  const BC0_FIRST_MSG = 'from BC0 - first';
      4  const BC1_FIRST_MSG = 'from BC1 - first';
      5  const BC2_FIRST_MSG = 'from BC2 - first';
      6  const BC3_FIRST_MSG = 'from BC3 - first';
      7  const BC0_SECOND_MSG = 'from BC0 - second';
      8  const BC1_SECOND_MSG = 'from BC1 - second';
      9  const BC2_SECOND_MSG = 'from BC2 - second';
     10  const BC3_SECOND_MSG = 'done';
     11  const BC0_TARGET_NAME = 'BC1';
     12  const BC1_TARGET_NAME = 'BC1';
     13  const BC2_TARGET_NAME = 'BC2';
     14  const BC3_TARGET_NAME = 'BC3';
     15  const MULTI_FRAME_ORDERING_TEST_CHANNEL_NAME = 'multi-frame-order';
     16 
     17  var bc1, bc2, bc3;
     18  var sentMessageCountForBc1 = 0;
     19  var sentMessageCountForBc2 = 0;
     20  var sentMessageCountForBc3 = 0;
     21 
     22  var bc1_handler = e => {
     23    window.top.logReceivedMessage(BC1_TARGET_NAME, e);
     24    switch(sentMessageCountForBc1) {
     25      case 0:
     26        bc3 = new BroadcastChannel(MULTI_FRAME_ORDERING_TEST_CHANNEL_NAME);
     27        bc3.onmessage = bc3_handler;
     28        bc1.postMessage(BC1_FIRST_MSG);
     29        break;
     30      case 1:
     31        bc1.postMessage(BC1_SECOND_MSG);
     32        break;
     33      case 2:
     34        bc1.close();
     35        return;
     36    }
     37    sentMessageCountForBc1 += 1;
     38  }
     39  var bc2_handler = e => {
     40    window.top.logReceivedMessage(BC2_TARGET_NAME, e);
     41    switch(sentMessageCountForBc2) {
     42      case 0:
     43        bc2.postMessage(BC2_FIRST_MSG);
     44        bc2.postMessage(BC2_SECOND_MSG);
     45        sentMessageCountForBc2 += 2;
     46        break;
     47      case 2:
     48        bc2.close();
     49        return;
     50    }
     51  };
     52  var bc3_handler = e => {
     53    window.top.logReceivedMessage(BC3_TARGET_NAME, e);
     54    switch(sentMessageCountForBc3) {
     55      case 0:
     56        bc3.postMessage(BC3_FIRST_MSG);
     57        break;
     58      case 1:
     59        bc3.postMessage(BC3_SECOND_MSG);
     60        break;
     61      case 2:
     62        bc3.close();
     63        return;
     64    }
     65    sentMessageCountForBc3 += 1;
     66  };
     67 
     68  window.onload = function() {
     69    const params = new URLSearchParams(window.location.search);
     70    if (params.get('id') === 'iframe1') {
     71      bc1 = new BroadcastChannel(MULTI_FRAME_ORDERING_TEST_CHANNEL_NAME);
     72      bc1.onmessage = bc1_handler;
     73    } else if (params.get('id')  === 'iframe2') {
     74      bc2 = new BroadcastChannel(MULTI_FRAME_ORDERING_TEST_CHANNEL_NAME);
     75      bc2.onmessage = bc2_handler;
     76    }
     77  }
     78 </script>