72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
/* exported Task, startServerAndGetSelectedTabMemory, destroyServerAndFinish,
|
|
waitForTime, waitUntil */
|
|
"use strict";
|
|
|
|
const { require } = ChromeUtils.importESModule(
|
|
"resource://devtools/shared/loader/Loader.sys.mjs"
|
|
);
|
|
const {
|
|
CommandsFactory,
|
|
} = require("resource://devtools/shared/commands/commands-factory.js");
|
|
|
|
// Always log packets when running tests.
|
|
Services.prefs.setBoolPref("devtools.debugger.log", true);
|
|
var gReduceTimePrecision = Services.prefs.getBoolPref(
|
|
"privacy.reduceTimerPrecision"
|
|
);
|
|
Services.prefs.setBoolPref("privacy.reduceTimerPrecision", false);
|
|
SimpleTest.registerCleanupFunction(function () {
|
|
Services.prefs.clearUserPref("devtools.debugger.log");
|
|
Services.prefs.setBoolPref(
|
|
"privacy.reduceTimerPrecision",
|
|
gReduceTimePrecision
|
|
);
|
|
});
|
|
|
|
async function getTargetForSelectedTab() {
|
|
const browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
|
|
const commands = await CommandsFactory.forTab(
|
|
browserWindow.gBrowser.selectedTab
|
|
);
|
|
await commands.targetCommand.startListening();
|
|
const isEveryFrameTargetEnabled = Services.prefs.getBoolPref(
|
|
"devtools.every-frame-target.enabled",
|
|
false
|
|
);
|
|
if (!isEveryFrameTargetEnabled) {
|
|
return commands.targetCommand.targetFront;
|
|
}
|
|
|
|
// If EFT is enabled, we need to retrieve the target of the test document
|
|
const targets = await commands.targetCommand.getAllTargets([
|
|
commands.targetCommand.TYPES.FRAME,
|
|
]);
|
|
|
|
return targets.find(t => t.url !== "chrome://mochikit/content/harness.xhtml");
|
|
}
|
|
|
|
async function startServerAndGetSelectedTabMemory() {
|
|
const target = await getTargetForSelectedTab();
|
|
const memory = await target.getFront("memory");
|
|
return { memory, target };
|
|
}
|
|
|
|
async function destroyServerAndFinish(target) {
|
|
await target.destroy();
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
function waitForTime(ms) {
|
|
return new Promise(resolve => {
|
|
setTimeout(resolve, ms);
|
|
});
|
|
}
|
|
|
|
function waitUntil(predicate) {
|
|
if (predicate()) {
|
|
return Promise.resolve(true);
|
|
}
|
|
return new Promise(resolve =>
|
|
setTimeout(() => waitUntil(predicate).then(() => resolve(true)), 10)
|
|
);
|
|
}
|