memory-helpers.js (1872B)
1 /* exported Task, startServerAndGetSelectedTabMemory, destroyServerAndFinish, 2 waitForTime, waitUntil */ 3 "use strict"; 4 5 const { require } = ChromeUtils.importESModule( 6 "resource://devtools/shared/loader/Loader.sys.mjs" 7 ); 8 const { 9 CommandsFactory, 10 } = require("resource://devtools/shared/commands/commands-factory.js"); 11 12 // Always log packets when running tests. 13 Services.prefs.setBoolPref("devtools.debugger.log", true); 14 var gReduceTimePrecision = Services.prefs.getBoolPref( 15 "privacy.reduceTimerPrecision" 16 ); 17 Services.prefs.setBoolPref("privacy.reduceTimerPrecision", false); 18 SimpleTest.registerCleanupFunction(function () { 19 Services.prefs.clearUserPref("devtools.debugger.log"); 20 Services.prefs.setBoolPref( 21 "privacy.reduceTimerPrecision", 22 gReduceTimePrecision 23 ); 24 }); 25 26 async function getTargetForSelectedTab() { 27 const browserWindow = Services.wm.getMostRecentBrowserWindow(); 28 const commands = await CommandsFactory.forTab( 29 browserWindow.gBrowser.selectedTab 30 ); 31 await commands.targetCommand.startListening(); 32 33 // Retrieve the target of the test document 34 const targets = await commands.targetCommand.getAllTargets([ 35 commands.targetCommand.TYPES.FRAME, 36 ]); 37 38 return targets.find(t => t.url !== "chrome://mochikit/content/harness.xhtml"); 39 } 40 41 async function startServerAndGetSelectedTabMemory() { 42 const target = await getTargetForSelectedTab(); 43 const memory = await target.getFront("memory"); 44 return { memory, target }; 45 } 46 47 async function destroyServerAndFinish(target) { 48 await target.destroy(); 49 SimpleTest.finish(); 50 } 51 52 function waitForTime(ms) { 53 return new Promise(resolve => { 54 setTimeout(resolve, ms); 55 }); 56 } 57 58 function waitUntil(predicate) { 59 if (predicate()) { 60 return Promise.resolve(true); 61 } 62 return new Promise(resolve => 63 setTimeout(() => waitUntil(predicate).then(() => resolve(true)), 10) 64 ); 65 }