WICKET-6523 remove timer handle as soon as possible
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/db92a09a Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/db92a09a Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/db92a09a Branch: refs/heads/master Commit: db92a09a21f770208ff1eabec728c28d7b7a1290 Parents: 830fb15 Author: Sven Meier <[email protected]> Authored: Wed Jan 24 19:42:40 2018 +0100 Committer: Sven Meier <[email protected]> Committed: Tue Feb 6 16:20:11 2018 +0100 ---------------------------------------------------------------------- .../wicket/ajax/AbstractAjaxTimerBehavior.java | 16 ++++------------ .../wicket/ajax/res/js/wicket-ajax-jquery.js | 9 ++++++--- wicket-core/src/test/js/timer.js | 20 +++++++++----------- 3 files changed, 19 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/db92a09a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java index 7fd3606..25dd1b7 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java @@ -88,7 +88,7 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav if (isStopped() == false) { - addTimeout(response); + setTimeout(response); } } @@ -112,23 +112,15 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav @Override protected final void respond(final AjaxRequestTarget target) { - // onTimer might remove this behavior, so keep the component - // so the timeout can be cleared later on - Component component = getComponent(); - if (shouldTrigger()) { onTimer(target); if (shouldTrigger()) { - addTimeout(target.getHeaderResponse()); - - return; + setTimeout(target.getHeaderResponse()); } } - - clearTimeout(component, target.getHeaderResponse()); } /** @@ -175,12 +167,12 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav if (target != null) { - addTimeout(target.getHeaderResponse()); + setTimeout(target.getHeaderResponse()); } } } - private void addTimeout(IHeaderResponse headerResponse) + private void setTimeout(IHeaderResponse headerResponse) { headerResponse.render(OnLoadHeaderItem.forScript(getJsTimeoutCall(updateInterval))); } http://git-wip-us.apache.org/repos/asf/wicket/blob/db92a09a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js index e7bb613..e8f44b2 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js @@ -2541,16 +2541,19 @@ /** * Schedules a timer * @param {string} timerId - the identifier for the timer - * @param {function|string} js - the JavaScript to execute after the timeout + * @param {function} f - the JavaScript function to execute after the timeout * @param {number} delay - the timeout */ - 'set': function(timerId, js, delay) { + 'set': function(timerId, f, delay) { if (typeof(Wicket.TimerHandles) === 'undefined') { Wicket.TimerHandles = {}; } Wicket.Timer.clear(timerId); - Wicket.TimerHandles[timerId] = setTimeout(js, delay); + Wicket.TimerHandles[timerId] = setTimeout(function() { + Wicket.Timer.clear(timerId); + f(); + }, delay); }, /** http://git-wip-us.apache.org/repos/asf/wicket/blob/db92a09a/wicket-core/src/test/js/timer.js ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/js/timer.js b/wicket-core/src/test/js/timer.js index e018f24..c95c20b 100644 --- a/wicket-core/src/test/js/timer.js +++ b/wicket-core/src/test/js/timer.js @@ -28,8 +28,8 @@ jQuery(document).ready(function() { var timerId = 'timerId', run = function() { + ok(typeof(Wicket.TimerHandles[timerId]) === 'undefined', "There is no handle to the timeout!"); ok("The timer is ran!"); - ok(Wicket.TimerHandles[timerId], "There is a handle to the timeout!"); start(); }; @@ -38,21 +38,19 @@ jQuery(document).ready(function() { test('clear', function () { stop(); - expect(3); + expect(2); var timerId = 'timerId', run = function() { - ok("The timer is ran!"); - - ok(Wicket.TimerHandles[timerId], "There is a handle to the timeout!"); - - Wicket.Timer.clear(timerId); - - ok(typeof(Wicket.TimerHandles[timerId]) === 'undefined', "There is NO handle to the timeout!"); - - start(); + ok(false, "timeout is not called"); }; Wicket.Timer.set('timerId', run, 1); + ok(Wicket.TimerHandles[timerId], "There is a handle to the timeout!"); + + Wicket.Timer.clear(timerId); + ok(typeof(Wicket.TimerHandles[timerId]) === 'undefined', "There is no handle to the timeout!"); + + start(); }); });
