mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
200 lines
4.5 KiB
JavaScript
200 lines
4.5 KiB
JavaScript
|
var NUM_CYCLES = 5;
|
||
|
|
||
|
var pages;
|
||
|
var pageIndex;
|
||
|
var results;
|
||
|
var start_time;
|
||
|
var end_time;
|
||
|
var cycle;
|
||
|
var report;
|
||
|
var running = false;
|
||
|
|
||
|
function plInit() {
|
||
|
if (running) {
|
||
|
return;
|
||
|
}
|
||
|
running = true;
|
||
|
try {
|
||
|
pageIndex = 0;
|
||
|
cycle = 0;
|
||
|
results = new Object();
|
||
|
if (! pages) {
|
||
|
var file;
|
||
|
try {
|
||
|
file = plDefaultFile();
|
||
|
} catch(e) {
|
||
|
dumpLine(e);
|
||
|
}
|
||
|
if (! file.exists()) {
|
||
|
try {
|
||
|
file = plFilePicker();
|
||
|
} catch(e) {
|
||
|
dumpLine(e);
|
||
|
}
|
||
|
}
|
||
|
pages = plLoadURLsFromFile(file);
|
||
|
}
|
||
|
if (! pages ) {
|
||
|
alert('could not load URLs, quitting');
|
||
|
plStop(true);
|
||
|
}
|
||
|
if (pages.length == 0) {
|
||
|
alert('no pages to test, quitting');
|
||
|
plStop(true);
|
||
|
}
|
||
|
report = new Report(pages);
|
||
|
plLoadPage();
|
||
|
} catch(e) {
|
||
|
dumpLine(e);
|
||
|
plStop(true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function plLoadPage() {
|
||
|
try {
|
||
|
start_time = new Date();
|
||
|
p = pages[pageIndex];
|
||
|
this.content = document.getElementById('contentPageloader');
|
||
|
this.content.addEventListener('load', plLoadHandler, true);
|
||
|
this.content.loadURI(p);
|
||
|
} catch (e) {
|
||
|
dumpLine(e);
|
||
|
plStop(true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function plLoadHandler(evt) {
|
||
|
if (evt.type == 'load') {
|
||
|
window.setTimeout('reallyHandle()', 500);
|
||
|
} else {
|
||
|
dumpLine('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();
|
||
|
dumpLine(pageName+" took "+results[pageName]);
|
||
|
plReport();
|
||
|
pageIndex++;
|
||
|
plLoadPage();
|
||
|
} catch(e) {
|
||
|
dumpLine(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) {
|
||
|
dumpLine(e);
|
||
|
plStop(false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function plStop(force) {
|
||
|
try {
|
||
|
if (force == false) {
|
||
|
pageIndex = 0;
|
||
|
results = new Object;
|
||
|
if (cycle < NUM_CYCLES) {
|
||
|
cycle++;
|
||
|
plLoadPage();
|
||
|
return;
|
||
|
} else {
|
||
|
dumpLine(report.getReport());
|
||
|
}
|
||
|
}
|
||
|
this.content.removeEventListener('load', plLoadHandler, true);
|
||
|
} catch(e) {
|
||
|
dumpLine(e);
|
||
|
}
|
||
|
goQuitApplication();
|
||
|
}
|
||
|
|
||
|
/* Returns nsilocalfile */
|
||
|
function plDefaultFile() {
|
||
|
try {
|
||
|
const nsIIOService = Components.interfaces.nsIIOService;
|
||
|
var dirService =
|
||
|
Components.classes["@mozilla.org/file/directory_service;1"].
|
||
|
getService(Components.interfaces.nsIProperties);
|
||
|
var profileDir = dirService.get("ProfD",
|
||
|
Components.interfaces.nsILocalFile);
|
||
|
var file = Components.classes["@mozilla.org/file/local;1"].
|
||
|
createInstance(Components.interfaces.nsILocalFile);
|
||
|
var path = profileDir.path;
|
||
|
file.initWithPath(path);
|
||
|
file.append("urls.txt");
|
||
|
dumpLine('will attempt to load default file '+file.path);
|
||
|
return file;
|
||
|
} catch (e) {
|
||
|
dumpLine(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/* Returns nsifile */
|
||
|
function plFilePicker() {
|
||
|
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) {
|
||
|
return fp.file;
|
||
|
}
|
||
|
} catch (e) {
|
||
|
dumpLine(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* Returns array */
|
||
|
function plLoadURLsFromFile(file) {
|
||
|
try {
|
||
|
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) {
|
||
|
dumpLine(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function dumpLine(str) {
|
||
|
dump(str);
|
||
|
dump("\n");
|
||
|
}
|