OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/threading/thread.h" | 10 #include "base/threading/thread.h" |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 } | 239 } |
240 | 240 |
241 // Verify that Send() calls handler synchronously when called for a | 241 // Verify that Send() calls handler synchronously when called for a |
242 // different thread. | 242 // different thread. |
243 TEST_F(ThreadWrapperTest, SendToOtherThread) { | 243 TEST_F(ThreadWrapperTest, SendToOtherThread) { |
244 JingleThreadWrapper::current()->set_send_allowed(true); | 244 JingleThreadWrapper::current()->set_send_allowed(true); |
245 | 245 |
246 base::Thread second_thread("JingleThreadWrapperTest"); | 246 base::Thread second_thread("JingleThreadWrapperTest"); |
247 second_thread.Start(); | 247 second_thread.Start(); |
248 | 248 |
249 base::WaitableEvent initialized_event(true, false); | 249 base::WaitableEvent initialized_event( |
| 250 base::WaitableEvent::ResetPolicy::MANUAL, |
| 251 base::WaitableEvent::InitialState::NOT_SIGNALED); |
250 rtc::Thread* target; | 252 rtc::Thread* target; |
251 second_thread.message_loop()->PostTask( | 253 second_thread.message_loop()->PostTask( |
252 FROM_HERE, base::Bind(&InitializeWrapperForNewThread, | 254 FROM_HERE, base::Bind(&InitializeWrapperForNewThread, |
253 &target, &initialized_event)); | 255 &target, &initialized_event)); |
254 initialized_event.Wait(); | 256 initialized_event.Wait(); |
255 | 257 |
256 ASSERT_TRUE(target != NULL); | 258 ASSERT_TRUE(target != NULL); |
257 | 259 |
258 rtc::MessageData* data = new rtc::MessageData(); | 260 rtc::MessageData* data = new rtc::MessageData(); |
259 | 261 |
260 EXPECT_CALL(handler1_, OnMessage( | 262 EXPECT_CALL(handler1_, OnMessage( |
261 MatchMessage(&handler1_, kTestMessage1, data))) | 263 MatchMessage(&handler1_, kTestMessage1, data))) |
262 .WillOnce(DeleteMessageData()); | 264 .WillOnce(DeleteMessageData()); |
263 target->Send(&handler1_, kTestMessage1, data); | 265 target->Send(&handler1_, kTestMessage1, data); |
264 | 266 |
265 Mock::VerifyAndClearExpectations(&handler1_); | 267 Mock::VerifyAndClearExpectations(&handler1_); |
266 } | 268 } |
267 | 269 |
268 // Verify that thread handles Send() while another Send() is | 270 // Verify that thread handles Send() while another Send() is |
269 // pending. The test creates second thread and Send()s kTestMessage1 | 271 // pending. The test creates second thread and Send()s kTestMessage1 |
270 // to that thread. kTestMessage1 handler calls PingMainThread() which | 272 // to that thread. kTestMessage1 handler calls PingMainThread() which |
271 // tries to Send() kTestMessage2 to the main thread. | 273 // tries to Send() kTestMessage2 to the main thread. |
272 TEST_F(ThreadWrapperTest, SendDuringSend) { | 274 TEST_F(ThreadWrapperTest, SendDuringSend) { |
273 JingleThreadWrapper::current()->set_send_allowed(true); | 275 JingleThreadWrapper::current()->set_send_allowed(true); |
274 | 276 |
275 base::Thread second_thread("JingleThreadWrapperTest"); | 277 base::Thread second_thread("JingleThreadWrapperTest"); |
276 second_thread.Start(); | 278 second_thread.Start(); |
277 | 279 |
278 base::WaitableEvent initialized_event(true, false); | 280 base::WaitableEvent initialized_event( |
| 281 base::WaitableEvent::ResetPolicy::MANUAL, |
| 282 base::WaitableEvent::InitialState::NOT_SIGNALED); |
279 rtc::Thread* target; | 283 rtc::Thread* target; |
280 second_thread.message_loop()->PostTask( | 284 second_thread.message_loop()->PostTask( |
281 FROM_HERE, base::Bind(&InitializeWrapperForNewThread, | 285 FROM_HERE, base::Bind(&InitializeWrapperForNewThread, |
282 &target, &initialized_event)); | 286 &target, &initialized_event)); |
283 initialized_event.Wait(); | 287 initialized_event.Wait(); |
284 | 288 |
285 ASSERT_TRUE(target != NULL); | 289 ASSERT_TRUE(target != NULL); |
286 | 290 |
287 rtc::MessageData* data = new rtc::MessageData(); | 291 rtc::MessageData* data = new rtc::MessageData(); |
288 | 292 |
(...skipping 10 matching lines...) Expand all Loading... |
299 | 303 |
300 TEST_F(ThreadWrapperTest, Dispose) { | 304 TEST_F(ThreadWrapperTest, Dispose) { |
301 bool deleted_ = false; | 305 bool deleted_ = false; |
302 thread_->Dispose(new DeletableObject(&deleted_)); | 306 thread_->Dispose(new DeletableObject(&deleted_)); |
303 EXPECT_FALSE(deleted_); | 307 EXPECT_FALSE(deleted_); |
304 message_loop_.RunUntilIdle(); | 308 message_loop_.RunUntilIdle(); |
305 EXPECT_TRUE(deleted_); | 309 EXPECT_TRUE(deleted_); |
306 } | 310 } |
307 | 311 |
308 } // namespace jingle_glue | 312 } // namespace jingle_glue |
OLD | NEW |