tor-browser

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

websockets-test-helpers.sub.js (2154B)


      1 // The file including this must also include `/websockets/constants.sub.js to
      2 // pick up the necessary constants.
      3 
      4 // Opens a new WebSocket connection.
      5 async function openWebSocket(remoteContextHelper) {
      6  let return_value = await remoteContextHelper.executeScript((domain) => {
      7    return new Promise((resolve) => {
      8      var webSocketInNotRestoredReasonsTests = new WebSocket(domain + '/echo');
      9      webSocketInNotRestoredReasonsTests.onopen = () => { resolve(42); };
     10    });
     11  }, [SCHEME_DOMAIN_PORT]);
     12  assert_equals(return_value, 42);
     13 }
     14 
     15 // Opens a new WebSocket connection and then close it.
     16 async function openThenCloseWebSocket(remoteContextHelper) {
     17  let return_value = await remoteContextHelper.executeScript((domain) => {
     18    return new Promise((resolve) => {
     19      var testWebSocket = new WebSocket(domain + '/echo');
     20      testWebSocket.onopen = () => { testWebSocket.close() };
     21      testWebSocket.onclose = () => { resolve(42) };
     22    });
     23  }, [SCHEME_DOMAIN_PORT]);
     24  assert_equals(return_value, 42);
     25 }
     26 
     27 // Opens a new WebSocket connection and close it in pagehide event listener.
     28 async function openWebSocketAndCloseItInPageHide(remoteContextHelper) {
     29  let return_value = await remoteContextHelper.executeScript((domain) => {
     30    window.wsErrorOccurred = false;
     31    window.wsCloseOccurred = false;
     32 
     33    return new Promise((resolve) => {
     34      var testWebSocket = new WebSocket(domain + '/echo');
     35      testWebSocket.onopen = () => {
     36        // Close WebSocket during pagehide (BFCache entry)
     37        window.addEventListener(
     38          'pagehide',
     39          () => testWebSocket.close()
     40        );
     41        resolve(42);
     42      };
     43      testWebSocket.onerror = () => { window.wsErrorOccurred = true; };
     44      testWebSocket.onclose = () => { window.wsCloseOccurred = true; };
     45    });
     46  }, [SCHEME_DOMAIN_PORT]);
     47  assert_equals(return_value, 42);
     48 }
     49 
     50 // Reads wsErrorOccurred and wsCloseOccurred from the remote context.
     51 async function readWebSocketCloseAndErrorFlags(remoteContext) {
     52  return await remoteContext.executeScript(() => {
     53    return {
     54      wsError: window.wsErrorOccurred,
     55      wsClose: window.wsCloseOccurred
     56    };
     57  });
     58 }