Skip to content

Instantly share code, notes, and snippets.

@bgrins
Last active April 26, 2024 21:54
Show Gist options
  • Save bgrins/1dff754c66f319f440f3 to your computer and use it in GitHub Desktop.
Save bgrins/1dff754c66f319f440f3 to your computer and use it in GitHub Desktop.
Helpers that can be used when debugging Firefox in the Browser Console / Browser Debugger
Helpers that can be used when debugging Firefox in the Browser Console / Browser Debugger
/* Get a reference to an existing toolbox for the currently
selected tab */
var {devtools} = Cu.import("resource://devtools/shared/Loader.jsm", {});
var target = devtools.TargetFactory.forTab(gBrowser.selectedTab);
var {gDevTools} = devtools.require("devtools/client/framework/devtools");
var toolbox = gDevTools.getToolbox(target);
function MyTool(iframeWindow, toolbox) {
this.panelWin = iframeWindow;
this._toolbox = toolbox;
};
MyTool.prototype = {
get target() this._toolbox.target,
open: function() {
console.log("Initializing things...");
return new Promise(resolve => {
setTimeout(() => {
console.log("Waited long enough.. open done");
resolve(this);
}, 100);
});
},
destroy: () => {
console.log("Destroying things...");
}
};
gDevTools.registerTool({
id: "mytool",
label: "My Tool",
build: (win, toolbox) => {
return new MyTool(win, toolbox);
},
isTargetSupported: () => { return true },
url: "data:text/html,<h1>My Tool</h1>"
})
/* Open a new toolbox (or reuse an existing one) for the
currently selected tab */
var {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
var target = devtools.TargetFactory.forTab(gBrowser.selectedTab);
gDevTools.showToolbox(target, "inspector", "window").then(toolbox=> {
console.log(toolbox);
});
var {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
var acorn = devtools.require("acorn/acorn");
var getToken = acorn.tokenize("var foo = 'bar'")
var {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
var target = devtools.TargetFactory.forTab(gBrowser.selectedTab);
var toolbox = gDevTools.getToolbox(target);
var win = toolbox.doc.defaultView;
var { addDebuggerToGlobal } = Cu.import("resource://gre/modules/jsdebugger.jsm", {});
addDebuggerToGlobal(this);
var dbg = new Debugger(win);
var path = ChromeUtils.saveHeapSnapshot({ debugger: dbg });
var snapshot = ChromeUtils.readHeapSnapshot(path);
var census = snapshot.takeCensus({ breakdown: { by: "count", bytes: true } });
census;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment