Chromium Code Reviews| Index: third_party/WebKit/PerformanceTests/resources/runner.js |
| diff --git a/third_party/WebKit/PerformanceTests/resources/runner.js b/third_party/WebKit/PerformanceTests/resources/runner.js |
| index 53501a769bf3c7ed119d6be2ca8ee842f9354756..539e18a96e20cacf09c85341fd65f60299ed7b37 100644 |
| --- a/third_party/WebKit/PerformanceTests/resources/runner.js |
| +++ b/third_party/WebKit/PerformanceTests/resources/runner.js |
| @@ -145,7 +145,7 @@ if (window.testRunner) { |
| doc.documentElement.offsetHeight; |
| }; |
| - function start(test, runner) { |
| + function start(test, scheduler, runner) { |
| if (!test) { |
| PerfTestRunner.logFatalError("Got a bad test object."); |
| return; |
| @@ -161,12 +161,12 @@ if (window.testRunner) { |
| if (test.doNotIgnoreInitialRun) |
| completedIterations++; |
| if (runner) |
| - scheduleNextRun(runner); |
| + scheduleNextRun(scheduler, runner); |
| } |
| - function scheduleNextRun(runner) { |
| + function scheduleNextRun(scheduler, runner) { |
| PerfTestRunner.gc(); |
| - window.setTimeout(function () { |
| + scheduler(function () { |
| try { |
| if (currentTest.setup) |
| currentTest.setup(); |
| @@ -187,10 +187,10 @@ if (window.testRunner) { |
| } |
| if (completedIterations < iterationCount) |
| - scheduleNextRun(runner); |
| + scheduleNextRun(scheduler, runner); |
| else |
| finish(); |
| - }, 0); |
| + }); |
| } |
| function ignoreWarmUpAndLog(measuredValue) { |
| @@ -245,9 +245,34 @@ if (window.testRunner) { |
| finish(); |
| } |
| + PerfTestRunner.measureFrameTime = function (test) { |
| + PerfTestRunner.unit = "ms"; |
| + start(test, requestAnimationFrame, measureFrameTimeOnce); |
| + } |
| + |
| + var lastFrameTime = -1; |
| + function measureFrameTimeOnce() { |
| + var now = PerfTestRunner.now(); |
| + var result = lastFrameTime == -1 ? 0 : now - lastFrameTime; |
| + lastFrameTime = now; |
| + |
| + var returnValue = currentTest.run(); |
| + if (returnValue - 0 === returnValue) { |
| + if (returnValue < 0) |
| + PerfTestRunner.log("runFunction returned a negative value: " + returnValue); |
| + return returnValue; |
| + } |
| + |
| + return result; |
| + } |
| + |
| PerfTestRunner.measureTime = function (test) { |
| PerfTestRunner.unit = "ms"; |
| - start(test, measureTimeOnce); |
| + start(test, zeroTimeoutScheduler, measureTimeOnce); |
| + } |
| + |
| + function zeroTimeoutScheduler(task) { |
| + setTimneout(task, 0); |
|
pdr.
2016/10/18 23:22:08
setTimeout?
Xianzhu
2016/10/19 03:38:15
Fixed.
It did break harness tests. Added new harn
|
| } |
| function measureTimeOnce() { |
| @@ -266,7 +291,7 @@ if (window.testRunner) { |
| PerfTestRunner.measureRunsPerSecond = function (test) { |
| PerfTestRunner.unit = "runs/s"; |
| - start(test, measureRunsPerSecondOnce); |
| + start(test, zeroTimeoutScheduler, measureRunsPerSecondOnce); |
| } |
| function measureRunsPerSecondOnce() { |