From e7a930a5b35720e4dc933ff6e2c93e92c0073115 Mon Sep 17 00:00:00 2001 From: Caio Cunha Date: Wed, 13 Mar 2013 10:55:46 -0300 Subject: [PATCH] DelayedFunctionScheduler tick, setTimeout/Interval delay defaults to 0 If ommited or null, delay for refered methods will default to 0. This will make setTimeout and setInterval methods to behave as expected by [HTML5 specs](http://www.w3.org/TR/html51/webappapis.html#timers): "Let timeout [delay] be the second argument to the method, or zero if the argument was omitted." This commit also fixes an issue with tick() being called without arguments, that causes the scheduler to break and stop working after this call. --- spec/core/DelayedFunctionSchedulerSpec.js | 13 +++++++++++++ src/core/DelayedFunctionScheduler.js | 2 ++ 2 files changed, 15 insertions(+) diff --git a/spec/core/DelayedFunctionSchedulerSpec.js b/spec/core/DelayedFunctionSchedulerSpec.js index 0615f493..8370ace2 100644 --- a/spec/core/DelayedFunctionSchedulerSpec.js +++ b/spec/core/DelayedFunctionSchedulerSpec.js @@ -12,6 +12,19 @@ describe("DelayedFunctionScheduler", function() { expect(fn).toHaveBeenCalled(); }); + it("defaults delay to 0", function() { + var scheduler = new jasmine.DelayedFunctionScheduler(), + fn = jasmine.createSpy('fn'); + + scheduler.scheduleFunction(fn); + + expect(fn).not.toHaveBeenCalled(); + + scheduler.tick(0); + + expect(fn).toHaveBeenCalled(); + }); + it("optionally passes params to scheduled functions", function() { var scheduler = new jasmine.DelayedFunctionScheduler(), fn = jasmine.createSpy('fn'); diff --git a/src/core/DelayedFunctionScheduler.js b/src/core/DelayedFunctionScheduler.js index 15cb3f37..0f9cb399 100644 --- a/src/core/DelayedFunctionScheduler.js +++ b/src/core/DelayedFunctionScheduler.js @@ -5,11 +5,13 @@ jasmine.DelayedFunctionScheduler = function() { var delayedFnCount = 0; self.tick = function(millis) { + millis = millis || 0; runFunctionsWithinRange(currentTime, currentTime + millis); currentTime = currentTime + millis; }; self.scheduleFunction = function(funcToCall, millis, params, recurring, timeoutKey, runAtMillis) { + millis = millis || 0; timeoutKey = timeoutKey || ++delayedFnCount; runAtMillis = runAtMillis || (currentTime + millis); scheduledFunctions[timeoutKey] = {