Index: tools/perf/perf_tools/page_cycler.js |
diff --git a/tools/perf/perf_tools/page_cycler.js b/tools/perf/perf_tools/page_cycler.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b364146da689cd1d3b7cc9d25e2f17c750428c8b |
--- /dev/null |
+++ b/tools/perf/perf_tools/page_cycler.js |
@@ -0,0 +1,60 @@ |
+// 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(); |
+ } |
+ |
+ __set_cookie("__pc_load_time", ""); |
+} |
+ |
+// 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 |
+ |
+ __set_cookie("__pc_load_time", window.performance.now()); |
+}; |
+ |
+// The function |testComplete| is used by the Indexed DB tests. |
+window.testComplete = __onload; |
+ |
+// 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. |
+ addEventListener("load", __onload); |
+ addEventListener("beforeunload", __onbeforeunload); |
+} |
+})(); |