blob: 19b1f5a8a10bc7290d5555ccfd01a8b15ec43c35 [file] [log] [blame]
// CanvasRunner is a wrapper of PerformanceTests/resources/runner.js for canvas tests.
(function () {
var MEASURE_DRAW_TIMES = 50;
var MAX_MEASURE_DRAW_TIMES = 1000;
var MAX_MEASURE_TIME_PER_FRAME = 1000; // 1 sec
var currentTest = null;
var CanvasRunner = {};
CanvasRunner.start = function (test) {
PerfTestRunner.prepareToMeasureValuesAsync({unit: 'runs/s',
description: test.description});
if (!test.doRun) {
CanvasRunner.logFatalError("\ndoRun must be set.\n");
return;
}
currentTest = test;
runTest();
}
function runTest() {
if (currentTest.preRun)
currentTest.preRun();
var start = PerfTestRunner.now();
var count = 0;
while ((PerfTestRunner.now() - start <= MAX_MEASURE_TIME_PER_FRAME) && (count * MEASURE_DRAW_TIMES < MAX_MEASURE_DRAW_TIMES)) {
for (var i = 0; i < MEASURE_DRAW_TIMES; i++) {
currentTest.doRun();
}
count++;
}
if (currentTest.ensureComplete)
currentTest.ensureComplete();
var elapsedTime = PerfTestRunner.now() - start;
if (currentTest.postRun)
currentTest.postRun();
PerfTestRunner.measureValueAsync(MEASURE_DRAW_TIMES * count * 1000 / elapsedTime);
requestAnimationFrame(runTest);
}
CanvasRunner.logFatalError = function (text) {
PerfTestRunner.logFatalError(text);
}
window.CanvasRunner = CanvasRunner;
})();