129 lines
3.2 KiB
JavaScript
129 lines
3.2 KiB
JavaScript
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
var __c = ""; // that's good enough for me.
|
||
|
var __td;
|
||
|
var __tf;
|
||
|
var __tl;
|
||
|
var __iterations;
|
||
|
var __cycle;
|
||
|
var __results = false;
|
||
|
var __page;
|
||
|
var __TIMEOUT = 15;
|
||
|
function __get_cookie(name) {
|
||
|
var cookies = document.cookie.split("; ");
|
||
|
for (var i = 0; i < cookies.length; ++i) {
|
||
|
var t = cookies[i].split("=");
|
||
|
if (t[0] == name && t[1])
|
||
|
return t[1];
|
||
|
}
|
||
|
return "";
|
||
|
}
|
||
|
function __pages() { // fetch lazily
|
||
|
if (!("data" in this))
|
||
|
this.data = __get_cookie("__pc_pages").split(",");
|
||
|
return this.data;
|
||
|
}
|
||
|
function __get_timings() {
|
||
|
if (sessionStorage != null &&
|
||
|
sessionStorage.getItem("__pc_timings") != null) {
|
||
|
return sessionStorage["__pc_timings"];
|
||
|
} else {
|
||
|
return __get_cookie("__pc_timings");
|
||
|
}
|
||
|
}
|
||
|
function __set_timings(timings) {
|
||
|
if (sessionStorage == null)
|
||
|
document.cookie = "__pc_timings=" + timings + "; path=/";
|
||
|
else
|
||
|
sessionStorage["__pc_timings"]=timings;
|
||
|
}
|
||
|
function __ontimeout() {
|
||
|
var doc;
|
||
|
|
||
|
// Call GC twice to cleanup JS heap before starting a new test.
|
||
|
if (window.gc) {
|
||
|
window.gc();
|
||
|
window.gc();
|
||
|
}
|
||
|
|
||
|
var timings = __tl;
|
||
|
var oldTimings = __get_timings();
|
||
|
if (oldTimings != "") {
|
||
|
timings = oldTimings + "," + timings;
|
||
|
}
|
||
|
__set_timings(timings);
|
||
|
|
||
|
var ts = (new Date()).getTime();
|
||
|
var tlag = (ts - __te) - __TIMEOUT;
|
||
|
if (tlag > 0)
|
||
|
__tf = __tf + tlag;
|
||
|
if (__cycle == (__pages().length * __iterations)) {
|
||
|
document.cookie = "__pc_done=1; path=/";
|
||
|
doc = "../../common/report.html";
|
||
|
if (window.console) {
|
||
|
console.log("Pages: [" + __get_cookie('__pc_pages') + "]");
|
||
|
console.log("times: [" + __get_timings() + "]");
|
||
|
}
|
||
|
} else {
|
||
|
doc = "../" + __pages()[__page] + "/index.html";
|
||
|
}
|
||
|
|
||
|
var url = doc + "?n=" + __iterations + "&i=" + __cycle + "&p=" + __page +
|
||
|
"&ts=" + ts + "&td=" + __td + "&tf=" + __tf;
|
||
|
document.location.href = url;
|
||
|
}
|
||
|
function __onload() {
|
||
|
if (__results) {
|
||
|
// Set a variable to indicate that the result report page is loaded.
|
||
|
document.cookie = "__navigated_to_report=1; path=/";
|
||
|
return;
|
||
|
}
|
||
|
var unused = document.body.offsetHeight; // force layout
|
||
|
|
||
|
var ts = 0, td = 0, te = (new Date()).getTime(), tf = 0;
|
||
|
|
||
|
var s = document.location.search;
|
||
|
if (s) {
|
||
|
var params = s.substring(1).split('&');
|
||
|
for (var i = 0; i < params.length; ++i) {
|
||
|
var f = params[i].split('=');
|
||
|
switch (f[0]) {
|
||
|
case 'skip':
|
||
|
// No calculation, just viewing
|
||
|
return;
|
||
|
case 'n':
|
||
|
__iterations = f[1];
|
||
|
break;
|
||
|
case 'i':
|
||
|
__cycle = (f[1] - 0) + 1;
|
||
|
break;
|
||
|
case 'p':
|
||
|
__page = ((f[1] - 0) + 1) % __pages().length;
|
||
|
break;
|
||
|
case 'ts':
|
||
|
ts = (f[1] - 0);
|
||
|
break;
|
||
|
case 'td':
|
||
|
td = (f[1] - 0);
|
||
|
break;
|
||
|
case 'tf':
|
||
|
tf = (f[1] - 0);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
__tl = (te - ts);
|
||
|
__td = td + __tl;
|
||
|
__te = te;
|
||
|
__tf = tf; // record t-fudge
|
||
|
|
||
|
setTimeout("__ontimeout()", __TIMEOUT);
|
||
|
}
|
||
|
|
||
|
if (window.attachEvent)
|
||
|
window.attachEvent("onload", __onload);
|
||
|
else
|
||
|
addEventListener("load", __onload, false);
|