1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 var __c = ""; // that's good enough for me. 6 var __td; 7 var __tf; 8 var __tl; 9 var __iterations; 10 var __cycle; 11 var __results = false; 12 var __page; 13 var __TIMEOUT = 15; 14 function __get_cookie(name) { 15 var cookies = document.cookie.split("; "); 16 for (var i = 0; i < cookies.length; ++i) { 17 var t = cookies[i].split("="); 18 if (t[0] == name && t[1]) 19 return t[1]; 20 } 21 return ""; 22 } 23 function __pages() { // fetch lazily 24 if (!("data" in this)) 25 this.data = __get_cookie("__pc_pages").split(","); 26 return this.data; 27 } 28 function __get_timings() { 29 if (sessionStorage != null && 30 sessionStorage.getItem("__pc_timings") != null) { 31 return sessionStorage["__pc_timings"]; 32 } else { 33 return __get_cookie("__pc_timings"); 34 } 35 } 36 function __set_timings(timings) { 37 if (sessionStorage == null) 38 document.cookie = "__pc_timings=" + timings + "; path=/"; 39 else 40 sessionStorage["__pc_timings"]=timings; 41 } 42 function __ontimeout() { 43 var doc; 44 45 // Call GC twice to cleanup JS heap before starting a new test. 46 if (window.gc) { 47 window.gc(); 48 window.gc(); 49 } 50 51 var timings = __tl; 52 var oldTimings = __get_timings(); 53 if (oldTimings != "") { 54 timings = oldTimings + "," + timings; 55 } 56 __set_timings(timings); 57 58 var ts = (new Date()).getTime(); 59 var tlag = (ts - __te) - __TIMEOUT; 60 if (tlag > 0) 61 __tf = __tf + tlag; 62 if (__cycle == (__pages().length * __iterations)) { 63 document.cookie = "__pc_done=1; path=/"; 64 doc = "../../common/report.html"; 65 if (window.console) { 66 console.log("Pages: [" + __get_cookie('__pc_pages') + "]"); 67 console.log("times: [" + __get_timings() + "]"); 68 } 69 } else { 70 doc = "../" + __pages()[__page] + "/index.html"; 71 } 72 73 var url = doc + "?n=" + __iterations + "&i=" + __cycle + "&p=" + __page + 74 "&ts=" + ts + "&td=" + __td + "&tf=" + __tf; 75 document.location.href = url; 76 } 77 function __onload() { 78 if (__results) { 79 // Set a variable to indicate that the result report page is loaded. 80 document.cookie = "__navigated_to_report=1; path=/"; 81 return; 82 } 83 var unused = document.body.offsetHeight; // force layout 84 85 var ts = 0, td = 0, te = (new Date()).getTime(), tf = 0; 86 87 var s = document.location.search; 88 if (s) { 89 var params = s.substring(1).split('&'); 90 for (var i = 0; i < params.length; ++i) { 91 var f = params[i].split('='); 92 switch (f[0]) { 93 case 'skip': 94 // No calculation, just viewing 95 return; 96 case 'n': 97 __iterations = f[1]; 98 break; 99 case 'i': 100 __cycle = (f[1] - 0) + 1; 101 break; 102 case 'p': 103 __page = ((f[1] - 0) + 1) % __pages().length; 104 break; 105 case 'ts': 106 ts = (f[1] - 0); 107 break; 108 case 'td': 109 td = (f[1] - 0); 110 break; 111 case 'tf': 112 tf = (f[1] - 0); 113 break; 114 } 115 } 116 } 117 __tl = (te - ts); 118 __td = td + __tl; 119 __te = te; 120 __tf = tf; // record t-fudge 121 122 setTimeout("__ontimeout()", __TIMEOUT); 123 } 124 125 if (window.attachEvent) 126 window.attachEvent("onload", __onload); 127 else 128 addEventListener("load", __onload, false); 129