tor-browser

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

test_dbgglobal.js (2498B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 const {
      7  SocketListener,
      8 } = require("resource://devtools/shared/security/socket.js");
      9 
     10 function run_test() {
     11  // Should get an exception if we try to interact with DevToolsServer
     12  // before we initialize it...
     13  const socketListener = new SocketListener(DevToolsServer, {});
     14  Assert.throws(
     15    () => DevToolsServer.addSocketListener(socketListener),
     16    /DevToolsServer has not been initialized/,
     17    "addSocketListener should throw before it has been initialized"
     18  );
     19  Assert.throws(
     20    DevToolsServer.closeAllSocketListeners,
     21    /this is undefined/,
     22    "closeAllSocketListeners should throw before it has been initialized"
     23  );
     24  Assert.throws(
     25    DevToolsServer.connectPipe,
     26    /this is undefined/,
     27    "connectPipe should throw before it has been initialized"
     28  );
     29 
     30  // Allow incoming connections.
     31  DevToolsServer.init();
     32 
     33  // These should still fail because we haven't added a createRootActor
     34  // implementation yet.
     35  Assert.throws(
     36    DevToolsServer.closeAllSocketListeners,
     37    /this is undefined/,
     38    "closeAllSocketListeners should throw if createRootActor hasn't been added"
     39  );
     40  Assert.throws(
     41    DevToolsServer.connectPipe,
     42    /this is undefined/,
     43    "closeAllSocketListeners should throw if createRootActor hasn't been added"
     44  );
     45 
     46  const { createRootActor } = require("xpcshell-test/testactors");
     47  DevToolsServer.setRootActor(createRootActor);
     48 
     49  // Now they should work.
     50  DevToolsServer.addSocketListener(socketListener);
     51  DevToolsServer.closeAllSocketListeners();
     52 
     53  // Make sure we got the test's root actor all set up.
     54  const client1 = DevToolsServer.connectPipe();
     55  client1.hooks = {
     56    onPacket(packet1) {
     57      Assert.equal(packet1.from, "root");
     58      Assert.equal(packet1.applicationType, "xpcshell-tests");
     59 
     60      // Spin up a second connection, make sure it has its own root
     61      // actor.
     62      const client2 = DevToolsServer.connectPipe();
     63      client2.hooks = {
     64        onPacket(packet2) {
     65          Assert.equal(packet2.from, "root");
     66          Assert.notEqual(
     67            packet1.testConnectionPrefix,
     68            packet2.testConnectionPrefix
     69          );
     70          client2.close();
     71        },
     72        onTransportClosed() {
     73          client1.close();
     74        },
     75      };
     76      client2.ready();
     77    },
     78 
     79    onTransportClosed() {
     80      do_test_finished();
     81    },
     82  };
     83 
     84  client1.ready();
     85  do_test_pending();
     86 }