michael@0: /* -*- Mode: javascript; js-indent-level: 2; -*- */ michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: var gDebuggee; michael@0: var gClient; michael@0: var gThreadClient; michael@0: michael@0: // This test ensures that we can create SourceActors and SourceClients properly, michael@0: // and that they can communicate over the protocol to fetch the source text for michael@0: // a given script. michael@0: michael@0: function run_test() michael@0: { michael@0: initTestDebuggerServer(); michael@0: gDebuggee = addTestGlobal("test-grips"); michael@0: Cu.evalInSandbox( michael@0: "" + function stopMe(arg1) { michael@0: debugger; michael@0: }, michael@0: gDebuggee, michael@0: "1.8", michael@0: getFileUrl("test_source-01.js") michael@0: ); michael@0: michael@0: gClient = new DebuggerClient(DebuggerServer.connectPipe()); michael@0: gClient.connect(function() { michael@0: attachTestTabAndResume(gClient, "test-grips", function(aResponse, aTabClient, aThreadClient) { michael@0: gThreadClient = aThreadClient; michael@0: test_source(); michael@0: }); michael@0: }); michael@0: do_test_pending(); michael@0: } michael@0: michael@0: const SOURCE_URL = "http://example.com/foobar.js"; michael@0: const SOURCE_CONTENT = "stopMe()"; michael@0: michael@0: function test_source() michael@0: { michael@0: DebuggerServer.LONG_STRING_LENGTH = 200; michael@0: michael@0: gThreadClient.addOneTimeListener("paused", function(aEvent, aPacket) { michael@0: gThreadClient.getSources(function (aResponse) { michael@0: do_check_true(!!aResponse); michael@0: do_check_true(!!aResponse.sources); michael@0: michael@0: let source = aResponse.sources.filter(function (s) { michael@0: return s.url === SOURCE_URL; michael@0: })[0]; michael@0: michael@0: do_check_true(!!source); michael@0: michael@0: let sourceClient = gThreadClient.source(source); michael@0: sourceClient.source(function (aResponse) { michael@0: do_check_true(!!aResponse); michael@0: do_check_true(!aResponse.error); michael@0: do_check_true(!!aResponse.contentType); michael@0: do_check_true(aResponse.contentType.contains("javascript")); michael@0: michael@0: do_check_true(!!aResponse.source); michael@0: do_check_eq(SOURCE_CONTENT, michael@0: aResponse.source); michael@0: michael@0: gThreadClient.resume(function () { michael@0: finishClient(gClient); michael@0: }); michael@0: }); michael@0: }); michael@0: }); michael@0: michael@0: Cu.evalInSandbox( michael@0: SOURCE_CONTENT, michael@0: gDebuggee, michael@0: "1.8", michael@0: SOURCE_URL michael@0: ); michael@0: }