Bug 1915045 Ensure decode tasks are scheduled on BufferingState::Enter() r=media...
[gecko.git] / js / xpconnect / tests / unit / test_onGarbageCollection-03.js
blobd983e2cd115811be88eae8c4e84f2c9158ad29a7
1 // Test that the onGarbageCollection hook is not reentrant.
3 Services.prefs.setBoolPref("security.allow_eval_with_system_principal", true);
4 registerCleanupFunction(() => {
5   Services.prefs.clearUserPref("security.allow_eval_with_system_principal");
6 });
8 function run_test() {
9   do_test_pending();
11   const root = newGlobal();
12   const dbg = new Debugger();
13   const wrappedRoot = dbg.addDebuggee(root)
15   let fired = true;
16   let depth = 0;
18   dbg.memory.onGarbageCollection = _ => {
19     fired = true;
21     equal(depth, 0);
22     depth++;
23     try {
24       root.eval(`gc()`);
25     } finally {
26       equal(depth, 1);
27       depth--;
28     }
29   }
31   root.eval(`gc()`);
33   executeSoon(() => {
34     ok(fired);
35     equal(depth, 0);
36     dbg.memory.onGarbageCollection = undefined;
37     do_test_finished();
38   });