• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
5var __c = ""; // that's good enough for me.
6var __td;
7var __tf;
8var __tl;
9var __iterations;
10var __cycle;
11var __results = false;
12var __page;
13var __TIMEOUT = 15;
14function __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}
23function __pages() {  // fetch lazily
24  if (!("data" in this))
25    this.data = __get_cookie("__pc_pages").split(",");
26  return this.data;
27}
28function __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}
36function __set_timings(timings) {
37  if (sessionStorage == null)
38    document.cookie = "__pc_timings=" + timings + "; path=/";
39  else
40    sessionStorage["__pc_timings"]=timings;
41}
42function __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}
77function __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
125if (window.attachEvent)
126  window.attachEvent("onload", __onload);
127else
128  addEventListener("load", __onload, false);
129