forked from mirrors/gecko-dev
71 lines
1.9 KiB
JavaScript
71 lines
1.9 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* Test for the thread helpers utility module.
|
|
*
|
|
* This uses a xpcshell test in order to avoid recording the noise
|
|
* of all Firefox components when using a mochitest.
|
|
*/
|
|
|
|
const { traceAllJSCalls } = ChromeUtils.importESModule(
|
|
"resource://devtools/shared/test-helpers/thread-helpers.sys.mjs"
|
|
);
|
|
// ESLint thinks this is a browser test, but it's actually an xpcshell
|
|
// test and so `setTimeout` isn't available out of the box.
|
|
// eslint-disable-next-line mozilla/no-redeclare-with-import-autofix
|
|
const { setTimeout } = ChromeUtils.importESModule(
|
|
"resource://gre/modules/Timer.sys.mjs"
|
|
);
|
|
|
|
add_task(async function sanityCheck() {
|
|
let ranTheOtherEventLoop = false;
|
|
setTimeout(function otherEventLoop() {
|
|
ranTheOtherEventLoop = true;
|
|
}, 0);
|
|
const jsTracer = traceAllJSCalls();
|
|
function foo() {}
|
|
for (let i = 0; i < 10; i++) {
|
|
foo();
|
|
}
|
|
jsTracer.stop();
|
|
ok(
|
|
!ranTheOtherEventLoop,
|
|
"When we don't pause frame execution, the other event do not execute"
|
|
);
|
|
});
|
|
|
|
add_task(async function withPrefix() {
|
|
const jsTracer = traceAllJSCalls({ prefix: "my-prefix" });
|
|
function foo() {}
|
|
for (let i = 0; i < 10; i++) {
|
|
foo();
|
|
}
|
|
jsTracer.stop();
|
|
ok(true, "Were able to run with a prefix argument");
|
|
});
|
|
|
|
add_task(async function pause() {
|
|
const start = Cu.now();
|
|
let ranTheOtherEventLoop = false;
|
|
setTimeout(function otherEventLoop() {
|
|
ranTheOtherEventLoop = true;
|
|
}, 0);
|
|
const jsTracer = traceAllJSCalls({ pause: 100 });
|
|
function foo() {}
|
|
for (let i = 0; i < 10; i++) {
|
|
foo();
|
|
}
|
|
jsTracer.stop();
|
|
const duration = Cu.now() - start;
|
|
ok(
|
|
duration > 10 * 100,
|
|
"The execution of the for loop was slow down by at least the pause duration in each loop"
|
|
);
|
|
ok(
|
|
ranTheOtherEventLoop,
|
|
"When we pause frame execution, the other event can execute"
|
|
);
|
|
});
|