summaryrefslogtreecommitdiffstats
path: root/tools/page_cycler/common/head.js
blob: 19a38dce0121eb93bfb7d17bf5242e29581499b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// Copyright (c) 2010 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)
    return __get_cookie("__pc_timings");
  else {
    if (sessionStorage.getItem("__pc_timings") == null)
      return "";
    else
      return sessionStorage["__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("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)
    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);