0

Revert 6190 to see if it's the cause of the 100+ new regressions

on the distributed tests.

TBR
Review URL: http://codereview.chromium.org/13042

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6205 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
nsylvain@chromium.org
2008-12-02 06:02:18 +00:00
parent 2a94d560f4
commit aa9be60bf5
2 changed files with 6 additions and 48 deletions

@ -135,42 +135,21 @@ class BaseTimer : public BaseTimer_Helper {
receiver_(receiver),
method_(method) {
}
virtual ~TimerTask() {
ClearBaseTimer();
}
virtual void Run() {
if (!timer_) // timer_ is null if we were orphaned.
return;
if (kIsRepeating)
ResetBaseTimer();
else
ClearBaseTimer();
SelfType* self = static_cast<SelfType*>(timer_);
if (kIsRepeating) {
self->Reset();
} else {
self->delayed_task_ = NULL;
}
DispatchToMethod(receiver_, method_, Tuple0());
}
TimerTask* Clone() const {
return new TimerTask(delay_, receiver_, method_);
}
private:
// Inform the Base that the timer is no longer active.
void ClearBaseTimer() {
if (timer_) {
SelfType* self = static_cast<SelfType*>(timer_);
self->delayed_task_ = NULL;
}
}
// Inform the Base that we're resetting the timer.
void ResetBaseTimer() {
DCHECK(timer_);
DCHECK(kIsRepeating);
SelfType* self = static_cast<SelfType*>(timer_);
self->Reset();
}
Receiver* receiver_;
ReceiverMethod method_;
};

@ -145,24 +145,3 @@ TEST(TimerTest, RepeatingTimer_Cancel) {
RunTest_RepeatingTimer_Cancel(MessageLoop::TYPE_UI);
RunTest_RepeatingTimer_Cancel(MessageLoop::TYPE_IO);
}
TEST(TimerTest, MessageLoopShutdown) {
// This test is designed to verify that shutdown of the
// message loop does not cause crashes if there were pending
// timers not yet fired. It may only trigger exceptions
// if debug heap checking (or purify) is enabled.
bool did_run = false;
{
OneShotTimerTester a(&did_run);
OneShotTimerTester b(&did_run);
OneShotTimerTester c(&did_run);
OneShotTimerTester d(&did_run);
{
MessageLoop loop(MessageLoop::TYPE_DEFAULT);
a.Start();
b.Start();
} // MessageLoop destructs by falling out of scope.
} // OneShotTimers destruct. SHOULD NOT CRASH, of course.
EXPECT_EQ(false, did_run);
}