// Copyright (c) 2013 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. (function() { // The Mozilla DHTML performance tests need to explicitly call a function to // trigger the next page visit, rather than directly using the onload handler. // To meet needs of the DHTML performance tests without forking this head.js // file, use a variable |__install_onload_handler| to indicate whether the // |__onload| handler should be added to onload event listener. // Install |__onload| by default if there is no pre-configuration. if (typeof(__install_onload_handler) == 'undefined') var __install_onload_handler = true; // This is the timeout used in setTimeout inside the DHTML tests. Chrome has // a much more accurate timer resolution than other browsers do. This results // in Chrome running these tests much faster than other browsers. In order to // compare Chrome with other browsers on DHTML performance alone, set this // value to ~15. var __test_timeout = 0; function __set_cookie(name, value) { document.cookie = name + "=" + value + "; path=/"; } function __onbeforeunload() { // Call GC twice to cleanup JS heap before starting a new test. if (window.gc) { window.gc(); window.gc(); } } // The function |__onload| is used by the DHTML tests. window.__onload = function() { // window.storeCreated is used by the Indexed DB tests. if ((!__install_onload_handler || window.storeCreated) && !performance.timing.loadEventEnd) return; var unused = document.body.offsetHeight; // force layout testComplete(window.performance.now()); }; // The function |testComplete| is used by the Indexed DB tests. window.testComplete = function(time) { window.__pc_load_time = time; }; // The function |__eval_later| now is only used by the DHTML tests. window.__eval_later = function(expression) { setTimeout(expression, __test_timeout); }; if (window.parent == window) { // Ignore subframes. window.__pc_load_time = null; addEventListener("load", __onload); addEventListener("beforeunload", __onbeforeunload); } })();