123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
- /**
- * Test that we can black box source mapped sources.
- */
- var gDebuggee;
- var gClient;
- var gThreadClient;
- const {SourceNode} = require("source-map");
- function run_test()
- {
- initTestDebuggerServer();
- gDebuggee = addTestGlobal("test-black-box");
- gClient = new DebuggerClient(DebuggerServer.connectPipe());
- gClient.connect().then(function () {
- attachTestTabAndResume(gClient, "test-black-box", function (aResponse, aTabClient, aThreadClient) {
- gThreadClient = aThreadClient;
- promise.resolve(setup_code())
- .then(black_box_code)
- .then(run_code)
- .then(test_correct_location)
- .then(null, function (error) {
- do_check_true(false, "Should not get an error, got " + error);
- })
- .then(function () {
- finishClient(gClient);
- });
- });
- });
- do_test_pending();
- }
- function setup_code() {
- let { code, map } = (new SourceNode(null, null, null, [
- new SourceNode(1, 0, "a.js", "" + function a() {
- return b();
- }),
- "\n",
- new SourceNode(1, 0, "b.js", "" + function b() {
- debugger; // Don't want to stop here.
- return c();
- }),
- "\n",
- new SourceNode(1, 0, "c.js", "" + function c() {
- debugger; // Want to stop here.
- }),
- "\n"
- ])).toStringWithSourceMap({
- file: "abc.js",
- sourceRoot: "http://example.com/"
- });
- code += "//# sourceMappingURL=data:text/json," + map.toString();
- Components.utils.evalInSandbox(code,
- gDebuggee,
- "1.8",
- "http://example.com/abc.js");
- }
- function black_box_code() {
- const d = promise.defer();
- gThreadClient.getSources(function ({ sources, error }) {
- do_check_true(!error, "Shouldn't get an error getting sources");
- const source = sources.filter((s) => {
- return s.url.indexOf("b.js") !== -1;
- })[0];
- do_check_true(!!source, "We should have our source in the sources list");
- gThreadClient.source(source).blackBox(function ({ error }) {
- do_check_true(!error, "Should not get an error black boxing");
- d.resolve(true);
- });
- });
- return d.promise;
- }
- function run_code() {
- const d = promise.defer();
- gClient.addOneTimeListener("paused", function (aEvent, aPacket) {
- d.resolve(aPacket);
- gThreadClient.resume();
- });
- gDebuggee.a();
- return d.promise;
- }
- function test_correct_location(aPacket) {
- do_check_eq(aPacket.why.type, "debuggerStatement",
- "Should hit a debugger statement.");
- do_check_eq(aPacket.frame.where.source.url, "http://example.com/c.js",
- "Should have skipped over the debugger statement in the black boxed source");
- }
|