123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
- /**
- * Test that we don't hit breakpoints in black boxed sources, and that when we
- * unblack box the source again, the breakpoint hasn't disappeared and we will
- * hit it again.
- */
- var gDebuggee;
- var gClient;
- var gThreadClient;
- 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;
- test_black_box();
- });
- });
- do_test_pending();
- }
- const BLACK_BOXED_URL = "http://example.com/blackboxme.js";
- const SOURCE_URL = "http://example.com/source.js";
- function test_black_box()
- {
- gClient.addOneTimeListener("paused", function (aEvent, aPacket) {
- gThreadClient.eval(aPacket.frame.actor, "doStuff", function (aResponse) {
- gThreadClient.addOneTimeListener("paused", function (aEvent, aPacket) {
- let obj = gThreadClient.pauseGrip(aPacket.why.frameFinished.return);
- obj.getDefinitionSite(runWithSource);
- });
- });
- function runWithSource(aPacket) {
- let source = gThreadClient.source(aPacket.source);
- source.setBreakpoint({
- line: 2
- }, function (aResponse) {
- do_check_true(!aResponse.error, "Should be able to set breakpoint.");
- gThreadClient.resume(test_black_box_breakpoint);
- });
- }
- });
- Components.utils.evalInSandbox(
- "" + function doStuff(k) { // line 1
- let arg = 15; // line 2 - Break here
- k(arg); // line 3
- }, // line 4
- gDebuggee,
- "1.8",
- BLACK_BOXED_URL,
- 1
- );
- Components.utils.evalInSandbox(
- "" + function runTest() { // line 1
- doStuff( // line 2
- function (n) { // line 3
- debugger; // line 5
- } // line 6
- ); // line 7
- } // line 8
- + "\n debugger;", // line 9
- gDebuggee,
- "1.8",
- SOURCE_URL,
- 1
- );
- }
- function test_black_box_breakpoint() {
- gThreadClient.getSources(function ({error, sources}) {
- do_check_true(!error, "Should not get an error: " + error);
- let sourceClient = gThreadClient.source(sources.filter(s => s.url == BLACK_BOXED_URL)[0]);
- sourceClient.blackBox(function ({error}) {
- do_check_true(!error, "Should not get an error: " + error);
- gClient.addOneTimeListener("paused", function (aEvent, aPacket) {
- do_check_eq(aPacket.why.type, "debuggerStatement",
- "We should pass over the breakpoint since the source is black boxed.");
- gThreadClient.resume(test_unblack_box_breakpoint.bind(null, sourceClient));
- });
- gDebuggee.runTest();
- });
- });
- }
- function test_unblack_box_breakpoint(aSourceClient) {
- aSourceClient.unblackBox(function ({error}) {
- do_check_true(!error, "Should not get an error: " + error);
- gClient.addOneTimeListener("paused", function (aEvent, aPacket) {
- do_check_eq(aPacket.why.type, "breakpoint",
- "We should hit the breakpoint again");
- // We will hit the debugger statement on resume, so do this nastiness to skip over it.
- gClient.addOneTimeListener(
- "paused",
- gThreadClient.resume.bind(
- gThreadClient,
- finishClient.bind(null, gClient)));
- gThreadClient.resume();
- });
- gDebuggee.runTest();
- });
- }
|