tor-browser

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

close-connecting-async.any.js (1309B)


      1 // META: script=../../../constants.sub.js
      2 // META: variant=?default
      3 // META: variant=?wpt_flags=h2
      4 // META: variant=?wss
      5 
      6 async_test(t => {
      7  const ws = new WebSocket(SCHEME_DOMAIN_PORT + '/handshake_sleep_2');
      8  let closeMethodReturned = false;
      9  let errorEventSeen = false;
     10  let closeEventSeen = false;
     11  ws.onerror = t.step_func(() => {
     12    assert_true(closeMethodReturned, 'ws.close() should have returned');
     13    assert_false(errorEventSeen, 'error event should only fire once');
     14    errorEventSeen = true;
     15    assert_false(closeEventSeen, 'error event should come before close event');
     16  });
     17  ws.onclose = t.step_func_done(() => {
     18    assert_true(closeMethodReturned, 'ws.close() should have returned');
     19    assert_true(errorEventSeen, 'error event should have fired');
     20    assert_false(closeEventSeen, 'close event should only fire once');
     21    closeEventSeen = true;
     22    assert_equals(ws.readyState, WebSocket.CLOSED,
     23                  'readyState should be CLOSED');
     24  });
     25  assert_equals(ws.readyState, WebSocket.CONNECTING,
     26                'readyState should be CONNECTING');
     27  ws.close();
     28  closeMethodReturned = true;
     29  assert_equals(ws.readyState, WebSocket.CLOSING,
     30                'readyState should be CLOSING');
     31 }, 'close event should be fired asynchronously when WebSocket is connecting');