mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 00:38:39 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
120
devtools/server/tests/unit/test_breakpoint-17.js
Normal file
120
devtools/server/tests/unit/test_breakpoint-17.js
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
/**
|
||||
* Test that when we add 2 breakpoints to the same line at different columns and
|
||||
* then remove one of them, we don't remove them both.
|
||||
*/
|
||||
|
||||
var gDebuggee;
|
||||
var gClient;
|
||||
var gThreadClient;
|
||||
var gCallback;
|
||||
|
||||
function run_test()
|
||||
{
|
||||
run_test_with_server(DebuggerServer, do_test_finished);
|
||||
do_test_pending();
|
||||
}
|
||||
|
||||
function run_test_with_server(aServer, aCallback)
|
||||
{
|
||||
gCallback = aCallback;
|
||||
initTestDebuggerServer(aServer);
|
||||
gDebuggee = addTestGlobal("test-breakpoints", aServer);
|
||||
gClient = new DebuggerClient(aServer.connectPipe());
|
||||
gClient.connect().then(function () {
|
||||
attachTestTabAndResume(gClient, "test-breakpoints", function (aResponse, aTabClient, aThreadClient) {
|
||||
gThreadClient = aThreadClient;
|
||||
test_breakpoints_columns();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
const code =
|
||||
"(" + function (global) {
|
||||
global.foo = function () {
|
||||
Math.abs(-1); Math.log(0.5);
|
||||
debugger;
|
||||
};
|
||||
debugger;
|
||||
} + "(this))";
|
||||
|
||||
const firstLocation = {
|
||||
line: 3,
|
||||
column: 4
|
||||
};
|
||||
|
||||
const secondLocation = {
|
||||
line: 3,
|
||||
column: 18
|
||||
};
|
||||
|
||||
function test_breakpoints_columns() {
|
||||
gClient.addOneTimeListener("paused", set_breakpoints);
|
||||
|
||||
Components.utils.evalInSandbox(code, gDebuggee, "1.8", "http://example.com/", 1);
|
||||
}
|
||||
|
||||
function set_breakpoints(aEvent, aPacket) {
|
||||
let first, second;
|
||||
let source = gThreadClient.source(aPacket.frame.where.source);
|
||||
|
||||
source.setBreakpoint(firstLocation, function ({ error, actualLocation },
|
||||
aBreakpointClient) {
|
||||
do_check_true(!error, "Should not get an error setting the breakpoint");
|
||||
do_check_true(!actualLocation, "Should not get an actualLocation");
|
||||
first = aBreakpointClient;
|
||||
|
||||
source.setBreakpoint(secondLocation, function ({ error, actualLocation },
|
||||
aBreakpointClient) {
|
||||
do_check_true(!error, "Should not get an error setting the breakpoint");
|
||||
do_check_true(!actualLocation, "Should not get an actualLocation");
|
||||
second = aBreakpointClient;
|
||||
|
||||
test_different_actors(first, second);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function test_different_actors(aFirst, aSecond) {
|
||||
do_check_neq(aFirst.actor, aSecond.actor,
|
||||
"Each breakpoint should have a different actor");
|
||||
test_remove_one(aFirst, aSecond);
|
||||
}
|
||||
|
||||
function test_remove_one(aFirst, aSecond) {
|
||||
aFirst.remove(function ({error}) {
|
||||
do_check_true(!error, "Should not get an error removing a breakpoint");
|
||||
|
||||
let hitSecond;
|
||||
gClient.addListener("paused", function _onPaused(aEvent, {why, frame}) {
|
||||
if (why.type == "breakpoint") {
|
||||
hitSecond = true;
|
||||
do_check_eq(why.actors.length, 1,
|
||||
"Should only be paused because of one breakpoint actor");
|
||||
do_check_eq(why.actors[0], aSecond.actor,
|
||||
"Should be paused because of the correct breakpoint actor");
|
||||
do_check_eq(frame.where.line, secondLocation.line,
|
||||
"Should be at the right line");
|
||||
do_check_eq(frame.where.column, secondLocation.column,
|
||||
"Should be at the right column");
|
||||
gThreadClient.resume();
|
||||
return;
|
||||
}
|
||||
|
||||
if (why.type == "debuggerStatement") {
|
||||
gClient.removeListener("paused", _onPaused);
|
||||
do_check_true(hitSecond,
|
||||
"We should still hit `second`, but not `first`.");
|
||||
|
||||
gClient.close().then(gCallback);
|
||||
return;
|
||||
}
|
||||
|
||||
do_check_true(false, "Should never get here");
|
||||
});
|
||||
|
||||
gThreadClient.resume(() => gDebuggee.foo());
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue