| Index: base/waitable_event_watcher_unittest.cc
|
| diff --git a/base/waitable_event_watcher_unittest.cc b/base/waitable_event_watcher_unittest.cc
|
| index 44b9b89ca7c39b88394398b3ded6c6a85bd21ff3..049de38802319a0915fd7a03b133fcbdde20b87f 100644
|
| --- a/base/waitable_event_watcher_unittest.cc
|
| +++ b/base/waitable_event_watcher_unittest.cc
|
| @@ -107,6 +107,22 @@ void RunTest_OutlivesMessageLoop(MessageLoop::Type message_loop_type) {
|
| }
|
| }
|
|
|
| +void RunTest_DeleteUnder(MessageLoop::Type message_loop_type) {
|
| + // Delete the WaitableEvent out from under the Watcher. This is explictly
|
| + // allowed by the interface.
|
| +
|
| + MessageLoop message_loop(message_loop_type);
|
| +
|
| + {
|
| + WaitableEventWatcher watcher;
|
| +
|
| + WaitableEvent* event = new WaitableEvent(false, false);
|
| + QuitDelegate delegate;
|
| + watcher.StartWatching(event, &delegate);
|
| + delete event;
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| //-----------------------------------------------------------------------------
|
| @@ -134,3 +150,9 @@ TEST(WaitableEventWatcherTest, OutlivesMessageLoop) {
|
| RunTest_OutlivesMessageLoop(MessageLoop::TYPE_IO);
|
| RunTest_OutlivesMessageLoop(MessageLoop::TYPE_UI);
|
| }
|
| +
|
| +TEST(WaitableEventWatcherTest, DeleteUnder) {
|
| + RunTest_DeleteUnder(MessageLoop::TYPE_DEFAULT);
|
| + RunTest_DeleteUnder(MessageLoop::TYPE_IO);
|
| + RunTest_DeleteUnder(MessageLoop::TYPE_UI);
|
| +}
|
|
|