mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-09-28 20:56:36 +00:00
74 lines
2.0 KiB
JavaScript
74 lines
2.0 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
var gClient;
|
|
var gTabClient;
|
|
var gDebuggee;
|
|
|
|
function run_test()
|
|
{
|
|
initTestDebuggerServer();
|
|
gDebuggee = testGlobal("test-1");
|
|
DebuggerServer.addTestGlobal(gDebuggee);
|
|
|
|
let transport = DebuggerServer.connectPipe();
|
|
gClient = new DebuggerClient(transport);
|
|
gClient.connect(function(aType, aTraits) {
|
|
attachTestTab(gClient, "test-1", function(aReply, aTabClient) {
|
|
gTabClient = aTabClient;
|
|
test_threadAttach(aReply.threadActor);
|
|
});
|
|
});
|
|
do_test_pending();
|
|
}
|
|
|
|
function test_threadAttach(aThreadActorID)
|
|
{
|
|
do_print("Trying to attach to thread " + aThreadActorID);
|
|
gTabClient.attachThread({}, function(aResponse, aThreadClient) {
|
|
do_check_eq(aThreadClient.state, "paused");
|
|
do_check_eq(aThreadClient.actor, aThreadActorID);
|
|
aThreadClient.resume(function() {
|
|
do_check_eq(aThreadClient.state, "attached");
|
|
test_debugger_statement(aThreadClient);
|
|
});
|
|
});
|
|
}
|
|
|
|
function test_debugger_statement(aThreadClient)
|
|
{
|
|
aThreadClient.addListener("paused", function(aEvent, aPacket) {
|
|
do_check_eq(aThreadClient.state, "paused");
|
|
// Reach around the protocol to check that the debuggee is in the state
|
|
// we expect.
|
|
do_check_true(gDebuggee.a);
|
|
do_check_false(gDebuggee.b);
|
|
|
|
let xpcInspector = Cc["@mozilla.org/jsinspector;1"].getService(Ci.nsIJSInspector);
|
|
do_check_eq(xpcInspector.eventLoopNestLevel, 1);
|
|
|
|
aThreadClient.resume(cleanup);
|
|
});
|
|
|
|
Cu.evalInSandbox("var a = true; var b = false; debugger; var b = true;", gDebuggee);
|
|
|
|
// Now make sure that we've run the code after the debugger statement...
|
|
do_check_true(gDebuggee.b);
|
|
}
|
|
|
|
function cleanup()
|
|
{
|
|
gClient.addListener("closed", function(aEvent) {
|
|
do_test_finished();
|
|
});
|
|
|
|
try {
|
|
let xpcInspector = Cc["@mozilla.org/jsinspector;1"].getService(Ci.nsIJSInspector);
|
|
do_check_eq(xpcInspector.eventLoopNestLevel, 0);
|
|
} catch(e) {
|
|
dump(e);
|
|
}
|
|
|
|
gClient.close();
|
|
}
|