/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // This test ensures that we can create SourceActors and SourceFronts properly, // and that they can communicate over the protocol to fetch the source text for // a given script. const SOURCE_URL = "http://example.com/foobar.js"; const SOURCE_CONTENT = ` stopMe(); for(var i = 0; i < 2; i++) { debugger; } `; add_task( threadFrontTest(async ({ threadFront, debuggee }) => { DevToolsServer.LONG_STRING_LENGTH = 200; await executeOnNextTickAndWaitForPause( () => evaluateTestCode(debuggee), threadFront ); let response = await threadFront.getSources(); Assert.ok(!!response); Assert.ok(!!response.sources); const source = response.sources.filter(function(s) { return s.url === SOURCE_URL; })[0]; Assert.ok(!!source); const sourceFront = threadFront.source(source); response = await sourceFront.getBreakpointPositions(); Assert.ok(!!response); Assert.deepEqual(response, [ { line: 2, column: 2, }, { line: 3, column: 14, }, { line: 3, column: 17, }, { line: 3, column: 24, }, { line: 4, column: 4, }, { line: 6, column: 0, }, ]); response = await sourceFront.getBreakpointPositionsCompressed(); Assert.ok(!!response); Assert.deepEqual(response, { 2: [2], 3: [14, 17, 24], 4: [4], 6: [0], }); await threadFront.resume(); }) ); function evaluateTestCode(debuggee) { Cu.evalInSandbox( "" + function stopMe(arg1) { debugger; }, debuggee, "1.8", getFileUrl("test_source-02.js") ); Cu.evalInSandbox(SOURCE_CONTENT, debuggee, "1.8", SOURCE_URL); }