| // 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); |