From 2991de3ced2e23ebc4dac10d2398eabb5cfdbd64 Mon Sep 17 00:00:00 2001 From: "rhelmer%mozilla.com" Date: Thu, 1 Feb 2007 20:56:13 +0000 Subject: [PATCH] pageloader exgtension for firefox, b=367559 r=robcee git-svn-id: svn://10.0.0.236/trunk@219349 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/testing/tools/pageloader/Makefile | 6 + mozilla/testing/tools/pageloader/README | 13 ++ .../testing/tools/pageloader/chrome.manifest | 1 + .../pageloader/chrome/content/pageloader.css | 3 + .../pageloader/chrome/content/pageloader.js | 148 ++++++++++++++++++ .../pageloader/chrome/content/pageloader.xul | 14 ++ .../tools/pageloader/chrome/content/report.js | 112 +++++++++++++ mozilla/testing/tools/pageloader/install.rdf | 27 ++++ .../test/chrome/content/pageloader.js | 46 ++++++ .../pageloader/test/chrome/content/report.js | 19 +++ 10 files changed, 389 insertions(+) create mode 100644 mozilla/testing/tools/pageloader/Makefile create mode 100644 mozilla/testing/tools/pageloader/README create mode 100644 mozilla/testing/tools/pageloader/chrome.manifest create mode 100644 mozilla/testing/tools/pageloader/chrome/content/pageloader.css create mode 100644 mozilla/testing/tools/pageloader/chrome/content/pageloader.js create mode 100755 mozilla/testing/tools/pageloader/chrome/content/pageloader.xul create mode 100644 mozilla/testing/tools/pageloader/chrome/content/report.js create mode 100644 mozilla/testing/tools/pageloader/install.rdf create mode 100755 mozilla/testing/tools/pageloader/test/chrome/content/pageloader.js create mode 100755 mozilla/testing/tools/pageloader/test/chrome/content/report.js diff --git a/mozilla/testing/tools/pageloader/Makefile b/mozilla/testing/tools/pageloader/Makefile new file mode 100644 index 00000000000..19975c554c6 --- /dev/null +++ b/mozilla/testing/tools/pageloader/Makefile @@ -0,0 +1,6 @@ +all: + zip -r pageloader.xpi chrome chrome.manifest install.rdf + +check: + ./test/chrome/content/report.js + ./test/chrome/content/pageloader.js diff --git a/mozilla/testing/tools/pageloader/README b/mozilla/testing/tools/pageloader/README new file mode 100644 index 00000000000..48c14678c2c --- /dev/null +++ b/mozilla/testing/tools/pageloader/README @@ -0,0 +1,13 @@ +This is a pageloader extension for Firefox. It cycles through a list of URLs +specified in a text file by the user (one URL per line), and reports statistics +and raw data about the time each page took to load. + +This data is dumped to the console, so the browser.dom.window.dump.enabled pref +(boolean) must be set to "true", and on Windows Firefox must be run with the +"-console" command line switch. + +This test is intended to be run standalone from a chrome URL, e.g.: +firefox -chrome chrome://pageloader/content/pageloader.xul + +The window will close and the data will be dumped to the console when the +test has completed. diff --git a/mozilla/testing/tools/pageloader/chrome.manifest b/mozilla/testing/tools/pageloader/chrome.manifest new file mode 100644 index 00000000000..8cff5392a2f --- /dev/null +++ b/mozilla/testing/tools/pageloader/chrome.manifest @@ -0,0 +1 @@ +content pageloader chrome/content/ diff --git a/mozilla/testing/tools/pageloader/chrome/content/pageloader.css b/mozilla/testing/tools/pageloader/chrome/content/pageloader.css new file mode 100644 index 00000000000..8d395562d10 --- /dev/null +++ b/mozilla/testing/tools/pageloader/chrome/content/pageloader.css @@ -0,0 +1,3 @@ +window { + background-color: #0088CC; +} diff --git a/mozilla/testing/tools/pageloader/chrome/content/pageloader.js b/mozilla/testing/tools/pageloader/chrome/content/pageloader.js new file mode 100644 index 00000000000..534ffa470b2 --- /dev/null +++ b/mozilla/testing/tools/pageloader/chrome/content/pageloader.js @@ -0,0 +1,148 @@ +var NUM_CYCLES = 5; + +var pages; +var pageIndex; +var results; +var start_time; +var end_time; +var cycle; +var report; + +function plInit() { + try { + pageIndex = 0; + cycle = 0; + results = new Object(); + if (! pages) { + pages = plLoadURLsFromFile(); + } + if (pages.length == 0) { + alert('no pages to test'); + plStop(true); + } + report = new Report(pages); + plLoadPage(); + } catch(e) { + alert(e); + plStop(true); + } +} + +function plLoadPage() { + try { + start_time = new Date(); + p = pages[pageIndex]; + var startButton = document.getElementById('plStartButton'); + startButton.setAttribute('disabled', 'true'); + this.content = document.getElementById('contentPageloader'); + this.content.addEventListener('load', plLoadHandler, true); + this.content.loadURI(p); + } catch (e) { + alert(e); + plStop(true); + } +} + +function plLoadHandler(evt) { + if (evt.type == 'load') { + window.setTimeout('reallyHandle()', 500); + } else { + alert('Unknown event type: '+evt.type); + plStop(true); + } +} + +function reallyHandle() { + if (pageIndex < pages.length) { + try { + end_time = new Date(); + var pageName = pages[pageIndex]; + results[pageName] = (end_time - start_time); + start_time = new Date(); + dump(pageName+" took "+results[pageName]+"\n"); + plReport(); + pageIndex++; + plLoadPage(); + } catch(e) { + alert(e); + plStop(true); + } + } else { + plStop(false); + } +} + +function plReport() { + try { + var reportNode = document.getElementById('report'); + var pageName = pages[pageIndex]; + var time = results[pageName]; + report.recordTime(pageIndex, time); + } catch(e) { + alert(e); + plStop(false); + } +} + +function plStop(force) { + try { + pageIndex = 0; + results = new Object; + if (force == false) { + if (cycle < NUM_CYCLES) { + cycle++; + plLoadPage(); + return; + } else { + dump(report.getReport()+"\n"); + } + } + var startButton = document.getElementById('plStartButton'); + startButton.setAttribute('disabled', 'false'); + this.content.removeEventListener('load', plLoadHandler, true); + //goQuitApplication(); + } catch(e) { + alert(e); + } +} + +/* Returns array */ +function plLoadURLsFromFile() { + try { + const nsIFilePicker = Components.interfaces.nsIFilePicker; + + var fp = Components.classes["@mozilla.org/filepicker;1"] + .createInstance(nsIFilePicker); + fp.init(window, "Dialog Title", nsIFilePicker.modeOpen); + fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filterText); + + var rv = fp.show(); + if (rv == nsIFilePicker.returnOK) + { + var file = fp.file; + var data = ""; + var fstream = + Components.classes["@mozilla.org/network/file-input-stream;1"] + .createInstance(Components.interfaces.nsIFileInputStream); + var sstream = Components.classes["@mozilla.org/scriptableinputstream;1"] + .createInstance(Components.interfaces.nsIScriptableInputStream); + fstream.init(file, -1, 0, 0); + sstream.init(fstream); + + var str = sstream.read(4096); + while (str.length > 0) { + data += str; + str = sstream.read(4096); + } + + sstream.close(); + fstream.close(); + var p = data.split("\n"); + // discard result of final split (EOF) + p.pop() + return p; + } + } catch (e) { + alert(e); + } +} diff --git a/mozilla/testing/tools/pageloader/chrome/content/pageloader.xul b/mozilla/testing/tools/pageloader/chrome/content/pageloader.xul new file mode 100755 index 00000000000..7c3f366fc83 --- /dev/null +++ b/mozilla/testing/tools/pageloader/chrome/content/pageloader.xul @@ -0,0 +1,14 @@ + + + + + + +