OLD | NEW |
| (Empty) |
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 totalTime; | |
6 var fudgeTime; | |
7 var elapsedTime; | |
8 var endTime; | |
9 var iterations; | |
10 var cycle; | |
11 var results = false; | |
12 var TIMEOUT = 15; | |
13 | |
14 /** | |
15 * Returns the value of the given property stored in the cookie. | |
16 * @param {string} name The property name. | |
17 * @return {string} The value of the given property, or empty string | |
18 * if the property was not found. | |
19 */ | |
20 function __get_cookie(name) { | |
21 var cookies = document.cookie.split('; '); | |
22 for (var i = 0; i < cookies.length; ++i) { | |
23 var t = cookies[i].split('='); | |
24 if ((t[0] == name) && t[1]) | |
25 return t[1]; | |
26 } | |
27 return ''; | |
28 } | |
29 | |
30 function __get_timings() { | |
31 if (sessionStorage == null) | |
32 return __get_cookie("__pc_timings"); | |
33 else { | |
34 if (sessionStorage.getItem("__pc_timings") == null) | |
35 return ""; | |
36 else | |
37 return sessionStorage["__pc_timings"]; | |
38 } | |
39 } | |
40 function __set_timings(timings) { | |
41 if (sessionStorage == null) | |
42 document.cookie = "__pc_timings=" + timings + "; path=/"; | |
43 else | |
44 sessionStorage["__pc_timings"]=timings; | |
45 } | |
46 | |
47 /** | |
48 * Starts the next test cycle or redirects the browser to the results page. | |
49 */ | |
50 function nextCycleOrResults() { | |
51 // Call GC twice to cleanup JS heap before starting a new test. | |
52 if (window.gc) { | |
53 window.gc(); | |
54 window.gc(); | |
55 } | |
56 | |
57 var timings = elapsedTime; | |
58 var oldTimings = __get_timings(); | |
59 if (oldTimings != '') | |
60 timings = oldTimings + ',' + timings; | |
61 __set_timings(timings); | |
62 | |
63 var tLag = Date.now() - endTime - TIMEOUT; | |
64 if (tLag > 0) | |
65 fudgeTime += tLag; | |
66 | |
67 var doc; | |
68 if (cycle == iterations) { | |
69 document.cookie = '__pc_done=1; path=/'; | |
70 doc = '../../common/report.html'; | |
71 if (window.console) { | |
72 console.log("Pages: [" + __get_cookie('__pc_pages') + "]"); | |
73 console.log("times: [" + __get_timings() + "]"); | |
74 } | |
75 } else { | |
76 doc = 'index.html'; | |
77 } | |
78 | |
79 var url = doc + '?n=' + iterations + '&i=' + cycle + | |
80 '&td=' + totalTime + '&tf=' + fudgeTime; | |
81 document.location.href = url; | |
82 } | |
83 | |
84 /** | |
85 * Computes various running times and updates the stats reported at the end. | |
86 * @param {!number} cycleTime The running time of the test cycle. | |
87 */ | |
88 function testComplete(cycleTime) { | |
89 if (results) | |
90 return; | |
91 | |
92 var oldTotalTime = 0; | |
93 var cycleEndTime = Date.now(); | |
94 var cycleFudgeTime = 0; | |
95 | |
96 var s = document.location.search; | |
97 if (s) { | |
98 var params = s.substring(1).split('&'); | |
99 for (var i = 0; i < params.length; i++) { | |
100 var f = params[i].split('='); | |
101 switch (f[0]) { | |
102 case 'skip': | |
103 return; // No calculation, just viewing | |
104 case 'n': | |
105 iterations = f[1]; | |
106 break; | |
107 case 'i': | |
108 cycle = f[1] - 0 + 1; | |
109 break; | |
110 case 'td': | |
111 oldTotalTime = f[1] - 0; | |
112 break; | |
113 case 'tf': | |
114 cycleFudgeTime = f[1] - 0; | |
115 break; | |
116 } | |
117 } | |
118 } | |
119 elapsedTime = cycleTime; | |
120 totalTime = oldTotalTime + elapsedTime; | |
121 endTime = cycleEndTime; | |
122 fudgeTime = cycleFudgeTime; | |
123 | |
124 setTimeout(nextCycleOrResults, TIMEOUT); | |
125 } | |
OLD | NEW |