michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: Cu.import("resource://gre/modules/devtools/dbg-server.jsm"); michael@0: Cu.import("resource://gre/modules/devtools/dbg-client.jsm"); michael@0: michael@0: function run_test() michael@0: { michael@0: // Should get an exception if we try to interact with DebuggerServer michael@0: // before we initialize it... michael@0: check_except(function() { michael@0: DebuggerServer.openListener(-1); michael@0: }); michael@0: check_except(DebuggerServer.closeListener); michael@0: check_except(DebuggerServer.connectPipe); michael@0: michael@0: // Allow incoming connections. michael@0: DebuggerServer.init(function () { return true; }); michael@0: michael@0: // These should still fail because we haven't added a createRootActor michael@0: // implementation yet. michael@0: check_except(function() { michael@0: DebuggerServer.openListener(-1); michael@0: }); michael@0: check_except(DebuggerServer.closeListener); michael@0: check_except(DebuggerServer.connectPipe); michael@0: michael@0: DebuggerServer.addActors("resource://test/testactors.js"); michael@0: michael@0: // Now they should work. michael@0: DebuggerServer.openListener(-1); michael@0: DebuggerServer.closeListener(); michael@0: michael@0: // Make sure we got the test's root actor all set up. michael@0: let client1 = DebuggerServer.connectPipe(); michael@0: client1.hooks = { michael@0: onPacket: function(aPacket1) { michael@0: do_check_eq(aPacket1.from, "root"); michael@0: do_check_eq(aPacket1.applicationType, "xpcshell-tests"); michael@0: michael@0: // Spin up a second connection, make sure it has its own root michael@0: // actor. michael@0: let client2 = DebuggerServer.connectPipe(); michael@0: client2.hooks = { michael@0: onPacket: function(aPacket2) { michael@0: do_check_eq(aPacket2.from, "root"); michael@0: do_check_neq(aPacket1.testConnectionPrefix, michael@0: aPacket2.testConnectionPrefix); michael@0: client2.close(); michael@0: }, michael@0: onClosed: function(aResult) { michael@0: client1.close(); michael@0: }, michael@0: }; michael@0: client2.ready(); michael@0: }, michael@0: michael@0: onClosed: function(aResult) { michael@0: do_test_finished(); michael@0: }, michael@0: }; michael@0: michael@0: client1.ready(); michael@0: do_test_pending(); michael@0: }