Skip to content

Instantly share code, notes, and snippets.

@bgrins
Created April 24, 2015 22:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bgrins/e3abe11fc70a7d8dab03 to your computer and use it in GitHub Desktop.
Save bgrins/e3abe11fc70a7d8dab03 to your computer and use it in GitHub Desktop.
damp-standalone
/* Run this in a Scratchpad in Browser Context */
let {devtools} =
Components.utils.import("resource://gre/modules/devtools/Loader.jsm", {});
let { getActiveTab } = devtools.require("sdk/tabs/utils");
let { getMostRecentBrowserWindow } = devtools.require("sdk/window/utils");
function addTab(url = "http://localhost/page_load_test/tp5n/bild.de/www.bild.de/index.html") {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
var win = wm.getMostRecentWindow("navigator:browser");
return new Promise((resolve, reject) => {
let tab = win.gBrowser.selectedTab = win.gBrowser.addTab(url);
let browser = tab.linkedBrowser;
browser.addEventListener("load", function onload() {
browser.removeEventListener("load", onload, true);
resolve(tab);
}, true);
});
}
function closeCurrentTab() {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
var win = wm.getMostRecentWindow("navigator:browser");
win.BrowserCloseTabOrWindow();
return win.gBrowser.selectedTab;
}
function openToolbox() {
let tab = getActiveTab(getMostRecentBrowserWindow());
let target = devtools.TargetFactory.forTab(tab);
let startRecordTimestamp = performance.now();
let showPromise = gDevTools.showToolbox(target, "jsdebugger");
return showPromise.then(toolbox => {
let stopRecordTimestamp = performance.now();
return toolbox;
});
}
function reloadPage() {
let startReloadTimestamp = performance.now();
return new Promise((resolve, reject) => {
let browser = gBrowser.selectedBrowser;
let self = this;
browser.addEventListener("load", function onload() {
browser.removeEventListener("load", onload, true);
let stopReloadTimestamp = performance.now();
resolve();
}, true);
browser.reload();
});
}
function closeToolbox() {
let tab = getActiveTab(getMostRecentBrowserWindow());
let target = devtools.TargetFactory.forTab(tab);
let startRecordTimestamp = performance.now();
let closePromise = gDevTools.closeToolbox(target);
return closePromise.then(() => {
let stopRecordTimestamp = performance.now();
});
}
let next = Promise.resolve();
for (var i = 0; i < 10; i++) {
next = next.then(addTab).then(openToolbox).then(reloadPage).then(closeToolbox).then(() => {closeCurrentTab(); return Promise.resolve() });
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment