86 lines
2.4 KiB
JavaScript
86 lines
2.4 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const {
|
|
SocketListener,
|
|
} = require("resource://devtools/shared/security/socket.js");
|
|
|
|
function run_test() {
|
|
// Should get an exception if we try to interact with DevToolsServer
|
|
// before we initialize it...
|
|
const socketListener = new SocketListener(DevToolsServer, {});
|
|
Assert.throws(
|
|
() => DevToolsServer.addSocketListener(socketListener),
|
|
/DevToolsServer has not been initialized/,
|
|
"addSocketListener should throw before it has been initialized"
|
|
);
|
|
Assert.throws(
|
|
DevToolsServer.closeAllSocketListeners,
|
|
/this is undefined/,
|
|
"closeAllSocketListeners should throw before it has been initialized"
|
|
);
|
|
Assert.throws(
|
|
DevToolsServer.connectPipe,
|
|
/this is undefined/,
|
|
"connectPipe should throw before it has been initialized"
|
|
);
|
|
|
|
// Allow incoming connections.
|
|
DevToolsServer.init();
|
|
|
|
// These should still fail because we haven't added a createRootActor
|
|
// implementation yet.
|
|
Assert.throws(
|
|
DevToolsServer.closeAllSocketListeners,
|
|
/this is undefined/,
|
|
"closeAllSocketListeners should throw if createRootActor hasn't been added"
|
|
);
|
|
Assert.throws(
|
|
DevToolsServer.connectPipe,
|
|
/this is undefined/,
|
|
"closeAllSocketListeners should throw if createRootActor hasn't been added"
|
|
);
|
|
|
|
const { createRootActor } = require("xpcshell-test/testactors");
|
|
DevToolsServer.setRootActor(createRootActor);
|
|
|
|
// Now they should work.
|
|
DevToolsServer.addSocketListener(socketListener);
|
|
DevToolsServer.closeAllSocketListeners();
|
|
|
|
// Make sure we got the test's root actor all set up.
|
|
const client1 = DevToolsServer.connectPipe();
|
|
client1.hooks = {
|
|
onPacket(packet1) {
|
|
Assert.equal(packet1.from, "root");
|
|
Assert.equal(packet1.applicationType, "xpcshell-tests");
|
|
|
|
// Spin up a second connection, make sure it has its own root
|
|
// actor.
|
|
const client2 = DevToolsServer.connectPipe();
|
|
client2.hooks = {
|
|
onPacket(packet2) {
|
|
Assert.equal(packet2.from, "root");
|
|
Assert.notEqual(
|
|
packet1.testConnectionPrefix,
|
|
packet2.testConnectionPrefix
|
|
);
|
|
client2.close();
|
|
},
|
|
onTransportClosed() {
|
|
client1.close();
|
|
},
|
|
};
|
|
client2.ready();
|
|
},
|
|
|
|
onTransportClosed() {
|
|
do_test_finished();
|
|
},
|
|
};
|
|
|
|
client1.ready();
|
|
do_test_pending();
|
|
}
|