1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)var bench = (function() {
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  var rafFunc;
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  var drawFunc;
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  function tick() {
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    drawFunc();
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    rafFunc(tick);
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  };
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  function startAnimation() {
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    rafFunc = window.requestAnimationFrame ||
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)              window.webkitRequestAnimationFrame ||
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)              window.mozRequestAnimationFrame ||
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)              window.oRequestAnimationFrame ||
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)              window.msRequestAnimationFrame;
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    rafFunc(tick);
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  };
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  var bench = {};
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  bench.run = function(df) {
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    drawFunc = df;
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    startAnimation();
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  };
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return bench;
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)})();
30