diff options
author | jbates@chromium.org <jbates@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-26 20:41:13 +0000 |
---|---|---|
committer | jbates@chromium.org <jbates@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-26 20:41:13 +0000 |
commit | 3ab9ea8ae36fcf4a37f8662844707f5a352935ff (patch) | |
tree | 36e740c520ddce40c65e3c17db0f5777d38ddd7b /ui | |
parent | 95dbc762c3b3a4f2cb4234ff74b005cb223b7ee4 (diff) | |
download | chromium_src-3ab9ea8ae36fcf4a37f8662844707f5a352935ff.zip chromium_src-3ab9ea8ae36fcf4a37f8662844707f5a352935ff.tar.gz chromium_src-3ab9ea8ae36fcf4a37f8662844707f5a352935ff.tar.bz2 |
Refactor BaseTimer to avoid spamming the MessageLoop with orphaned tasks.
This change maintains the same API promises*, but instead of orphaning tasks when they are stopped, the BaseTimer_Helper class holds on to the task until either (1) it expires or (2) the user requests a delay that would arrive earlier than the pending task. If the user requests a longer delay than the pending task, a followup task will be posted when the pending task fires to span the remaining time.
* The one change of usage is related to threading. The threading requirements are now more strict. It is not allowed to destruct a timer on a different thread than the one used to post tasks. A thread ID DCHECK is now in place that will help catch misuse. Some existing instances are changed as part of this CL.
A side effect of this change is that the BaseTimer and DelayTimer are simplified to use features of BaseTimer_Helper (which is now called Timer).
As suggested in timer.h, I ran the disabled TimerTest tests from linux, and they pass consistently. I also added some new tests to verify correct run states.
BUG=117451,103667,119714,119750
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=128412
Reverted: http://src.chromium.org/viewvc/chrome?view=rev&revision=128506
Review URL: https://chromiumcodereview.appspot.com/9655006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128993 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/aura/gestures/gesture_recognizer_unittest.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/ui/aura/gestures/gesture_recognizer_unittest.cc b/ui/aura/gestures/gesture_recognizer_unittest.cc index 7306995..c568028 100644 --- a/ui/aura/gestures/gesture_recognizer_unittest.cc +++ b/ui/aura/gestures/gesture_recognizer_unittest.cc @@ -246,8 +246,10 @@ class TestOneShotGestureSequenceTimer : public base::OneShotTimer<GestureSequence> { public: void ForceTimeout() { - if (delayed_task_) - delayed_task_->Run(); + if (IsRunning()) { + user_task().Run(); + Stop(); + } } }; |