| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/win/object_watcher.h" | 5 #include "base/win/object_watcher.h" |
| 6 | 6 |
| 7 #include <process.h> | 7 #include <process.h> |
| 8 | 8 |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 HANDLE event = CreateEvent(NULL, TRUE, FALSE, NULL); | 42 HANDLE event = CreateEvent(NULL, TRUE, FALSE, NULL); |
| 43 | 43 |
| 44 QuitDelegate delegate; | 44 QuitDelegate delegate; |
| 45 bool ok = watcher.StartWatchingOnce(event, &delegate); | 45 bool ok = watcher.StartWatchingOnce(event, &delegate); |
| 46 EXPECT_TRUE(ok); | 46 EXPECT_TRUE(ok); |
| 47 EXPECT_TRUE(watcher.IsWatching()); | 47 EXPECT_TRUE(watcher.IsWatching()); |
| 48 EXPECT_EQ(event, watcher.GetWatchedObject()); | 48 EXPECT_EQ(event, watcher.GetWatchedObject()); |
| 49 | 49 |
| 50 SetEvent(event); | 50 SetEvent(event); |
| 51 | 51 |
| 52 MessageLoop::current()->Run(); | 52 RunLoop().Run(); |
| 53 | 53 |
| 54 EXPECT_FALSE(watcher.IsWatching()); | 54 EXPECT_FALSE(watcher.IsWatching()); |
| 55 CloseHandle(event); | 55 CloseHandle(event); |
| 56 } | 56 } |
| 57 | 57 |
| 58 void RunTest_BasicCancel(MessageLoop::Type message_loop_type) { | 58 void RunTest_BasicCancel(MessageLoop::Type message_loop_type) { |
| 59 MessageLoop message_loop(message_loop_type); | 59 MessageLoop message_loop(message_loop_type); |
| 60 | 60 |
| 61 ObjectWatcher watcher; | 61 ObjectWatcher watcher; |
| 62 | 62 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 | 106 |
| 107 ObjectWatcher watcher; | 107 ObjectWatcher watcher; |
| 108 | 108 |
| 109 // A manual-reset event that is signaled before we begin watching. | 109 // A manual-reset event that is signaled before we begin watching. |
| 110 HANDLE event = CreateEvent(NULL, TRUE, TRUE, NULL); | 110 HANDLE event = CreateEvent(NULL, TRUE, TRUE, NULL); |
| 111 | 111 |
| 112 QuitDelegate delegate; | 112 QuitDelegate delegate; |
| 113 bool ok = watcher.StartWatchingOnce(event, &delegate); | 113 bool ok = watcher.StartWatchingOnce(event, &delegate); |
| 114 EXPECT_TRUE(ok); | 114 EXPECT_TRUE(ok); |
| 115 | 115 |
| 116 MessageLoop::current()->Run(); | 116 RunLoop().Run(); |
| 117 | 117 |
| 118 EXPECT_FALSE(watcher.IsWatching()); | 118 EXPECT_FALSE(watcher.IsWatching()); |
| 119 CloseHandle(event); | 119 CloseHandle(event); |
| 120 } | 120 } |
| 121 | 121 |
| 122 void RunTest_OutlivesMessageLoop(MessageLoop::Type message_loop_type) { | 122 void RunTest_OutlivesMessageLoop(MessageLoop::Type message_loop_type) { |
| 123 // Simulate a MessageLoop that dies before an ObjectWatcher. This ordinarily | 123 // Simulate a MessageLoop that dies before an ObjectWatcher. This ordinarily |
| 124 // doesn't happen when people use the Thread class, but it can happen when | 124 // doesn't happen when people use the Thread class, but it can happen when |
| 125 // people use the Singleton pattern or atexit. | 125 // people use the Singleton pattern or atexit. |
| 126 HANDLE event = CreateEvent(NULL, TRUE, FALSE, NULL); // not signaled | 126 HANDLE event = CreateEvent(NULL, TRUE, FALSE, NULL); // not signaled |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 HANDLE event = CreateEvent(NULL, FALSE, FALSE, NULL); | 163 HANDLE event = CreateEvent(NULL, FALSE, FALSE, NULL); |
| 164 | 164 |
| 165 QuitAfterMultipleDelegate delegate(event, 2); | 165 QuitAfterMultipleDelegate delegate(event, 2); |
| 166 bool ok = watcher.StartWatchingMultipleTimes(event, &delegate); | 166 bool ok = watcher.StartWatchingMultipleTimes(event, &delegate); |
| 167 EXPECT_TRUE(ok); | 167 EXPECT_TRUE(ok); |
| 168 EXPECT_TRUE(watcher.IsWatching()); | 168 EXPECT_TRUE(watcher.IsWatching()); |
| 169 EXPECT_EQ(event, watcher.GetWatchedObject()); | 169 EXPECT_EQ(event, watcher.GetWatchedObject()); |
| 170 | 170 |
| 171 SetEvent(event); | 171 SetEvent(event); |
| 172 | 172 |
| 173 MessageLoop::current()->Run(); | 173 RunLoop().Run(); |
| 174 | 174 |
| 175 EXPECT_TRUE(watcher.IsWatching()); | 175 EXPECT_TRUE(watcher.IsWatching()); |
| 176 EXPECT_TRUE(watcher.StopWatching()); | 176 EXPECT_TRUE(watcher.StopWatching()); |
| 177 CloseHandle(event); | 177 CloseHandle(event); |
| 178 } | 178 } |
| 179 | 179 |
| 180 } // namespace | 180 } // namespace |
| 181 | 181 |
| 182 //----------------------------------------------------------------------------- | 182 //----------------------------------------------------------------------------- |
| 183 | 183 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 212 } | 212 } |
| 213 | 213 |
| 214 TEST(ObjectWatcherTest, ExecuteMultipleTimes) { | 214 TEST(ObjectWatcherTest, ExecuteMultipleTimes) { |
| 215 RunTest_ExecuteMultipleTimes(MessageLoop::TYPE_DEFAULT); | 215 RunTest_ExecuteMultipleTimes(MessageLoop::TYPE_DEFAULT); |
| 216 RunTest_ExecuteMultipleTimes(MessageLoop::TYPE_IO); | 216 RunTest_ExecuteMultipleTimes(MessageLoop::TYPE_IO); |
| 217 RunTest_ExecuteMultipleTimes(MessageLoop::TYPE_UI); | 217 RunTest_ExecuteMultipleTimes(MessageLoop::TYPE_UI); |
| 218 } | 218 } |
| 219 | 219 |
| 220 } // namespace win | 220 } // namespace win |
| 221 } // namespace base | 221 } // namespace base |
| OLD | NEW |