| Index: base/timer_unittest.cc
|
| ===================================================================
|
| --- base/timer_unittest.cc (revision 6223)
|
| +++ base/timer_unittest.cc (working copy)
|
| @@ -145,3 +145,24 @@
|
| 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);
|
| +}
|
|
|