blob: e515f051ee822bb3cccb846fe121a0aae9dd9195 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
/* -*- js-indent-level: 2; indent-tabs-mode: nil -*- */
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
// Test that we can nest event loops when needed in
// ThreadActor.prototype.unsafeSynchronize.
var gClient;
var gThreadActor;
function run_test() {
initTestDebuggerServer();
let gDebuggee = addTestGlobal("test-nesting");
gClient = new DebuggerClient(DebuggerServer.connectPipe());
gClient.connect().then(function () {
attachTestTabAndResume(gClient, "test-nesting", function (aResponse, aTabClient, aThreadClient) {
// Reach over the protocol connection and get a reference to the thread actor.
gThreadActor = aThreadClient._transport._serverConnection.getActor(aThreadClient._actor);
test_nesting();
});
});
do_test_pending();
}
function test_nesting() {
const thread = gThreadActor;
const { resolve, reject, promise: p } = promise.defer();
let currentStep = 0;
executeSoon(function () {
// Should be on the first step
do_check_eq(++currentStep, 1);
// We should have one nested event loop from unsfeSynchronize
do_check_eq(thread._nestedEventLoops.size, 1);
resolve(true);
});
do_check_eq(thread.unsafeSynchronize(p), true);
// Should be on the second step
do_check_eq(++currentStep, 2);
// There shouldn't be any nested event loops anymore
do_check_eq(thread._nestedEventLoops.size, 0);
finishClient(gClient);
}
|