Bug 1915045 Ensure decode tasks are scheduled on BufferingState::Enter() r=media...
[gecko.git] / js / xpconnect / tests / unit / test_onGarbageCollection-05.js
blobe3b5e5fd9e88b8ced4b8a55b37da0ea3c4101860
1 // Test that the onGarbageCollection hook reports its gc cycle's number (aka the
2 // major GC number) and that it is monotonically increasing.
4 const root = newGlobal();
5 const dbg = new Debugger();
6 const wrappedRoot = dbg.addDebuggee(root)
8 Services.prefs.setBoolPref("security.allow_eval_with_system_principal", true);
9 registerCleanupFunction(() => {
10   Services.prefs.clearUserPref("security.allow_eval_with_system_principal");
11 });
13 function run_test() {
14   do_test_pending();
16   let numFired = 0;
17   let lastGCCycleNumber = undefined;
19   (function loop() {
20     if (numFired == 10) {
21       dbg.memory.onGarbageCollection = undefined;
22       dbg.enabled = false;
23       return void do_test_finished();
24     }
26     dbg.memory.onGarbageCollection = data => {
27       print("onGarbageCollection: " + uneval(data));
29       if (numFired != 0) {
30         equal(typeof lastGCCycleNumber, "number");
31         equal(data.gcCycleNumber - lastGCCycleNumber, 1);
32       }
34       numFired++;
35       lastGCCycleNumber = data.gcCycleNumber;
37       executeSoon(loop);
38     };
40     root.eval("gc(this)");
41   }());