diff options
author | cmp@google.com <cmp@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-30 00:12:53 +0000 |
---|---|---|
committer | cmp@google.com <cmp@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-30 00:12:53 +0000 |
commit | 58734d6a4fb8aa8caaece4b07f875c5c396afcc5 (patch) | |
tree | 0c8cd711c1a4c3cc6818869cebfb656ae971d1b0 /tools/page_cycler/common/head.js | |
parent | 3cfe049042544b4e8db7e7119e8099ba555258aa (diff) | |
download | chromium_src-58734d6a4fb8aa8caaece4b07f875c5c396afcc5.zip chromium_src-58734d6a4fb8aa8caaece4b07f875c5c396afcc5.tar.gz chromium_src-58734d6a4fb8aa8caaece4b07f875c5c396afcc5.tar.bz2 |
Add common page_cycler and checkout acid3 cycler.
These common files are used by page cyclers to provide a
standard JS test harness and report base.
Add acid3 page cycler to chromium checkout.
Review URL: http://codereview.chromium.org/151053
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19564 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/page_cycler/common/head.js')
-rw-r--r-- | tools/page_cycler/common/head.js | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/tools/page_cycler/common/head.js b/tools/page_cycler/common/head.js new file mode 100644 index 0000000..1a4ddc84 --- /dev/null +++ b/tools/page_cycler/common/head.js @@ -0,0 +1,136 @@ +// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +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() { + return __get_cookie("__pc_timings"); +} +function __set_timings(timings) { + document.cookie = "__pc_timings=" + timings + "; path=/"; +} +function __ontimeout() { + var doc; + + // Call GC twice to cleanup JS heap before starting a new test. + if (window.gc) { + window.gc(); + window.gc(); + } + + 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"; + } else { + doc = "../" + __pages()[__page] + "/index.html" + } + + var timings = __tl; + var oldTimings = __get_timings(); + if (oldTimings != "") { + timings = oldTimings + "," + timings; + } + __set_timings(timings); + + 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); |