Index: PerformanceTests/Canvas/resources/canvas_runner.js |
diff --git a/PerformanceTests/Canvas/resources/canvas_runner.js b/PerformanceTests/Canvas/resources/canvas_runner.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..19b1f5a8a10bc7290d5555ccfd01a8b15ec43c35 |
--- /dev/null |
+++ b/PerformanceTests/Canvas/resources/canvas_runner.js |
@@ -0,0 +1,49 @@ |
+// 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; |
+})(); |