OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "remoting/protocol/pseudotcp_adapter.h" | 5 #include "remoting/protocol/pseudotcp_adapter.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 | 177 |
178 EXPECT_EQ(0, memcmp(output_buffer_->data(), | 178 EXPECT_EQ(0, memcmp(output_buffer_->data(), |
179 input_buffer_->StartOfBuffer(), kTestDataSize)); | 179 input_buffer_->StartOfBuffer(), kTestDataSize)); |
180 } | 180 } |
181 | 181 |
182 protected: | 182 protected: |
183 virtual ~TCPChannelTester() {} | 183 virtual ~TCPChannelTester() {} |
184 | 184 |
185 void Done() { | 185 void Done() { |
186 done_ = true; | 186 done_ = true; |
187 message_loop_->PostTask(FROM_HERE, base::MessageLoop::QuitClosure()); | 187 message_loop_->PostTask(FROM_HERE, |
| 188 base::MessageLoop::QuitWhenIdleClosure()); |
188 } | 189 } |
189 | 190 |
190 void DoStart() { | 191 void DoStart() { |
191 InitBuffers(); | 192 InitBuffers(); |
192 DoRead(); | 193 DoRead(); |
193 DoWrite(); | 194 DoWrite(); |
194 } | 195 } |
195 | 196 |
196 void InitBuffers() { | 197 void InitBuffers() { |
197 output_buffer_ = new net::DrainableIOBuffer( | 198 output_buffer_ = new net::DrainableIOBuffer( |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 tester->CheckResults(); | 365 tester->CheckResults(); |
365 } | 366 } |
366 | 367 |
367 class DeleteOnConnected { | 368 class DeleteOnConnected { |
368 public: | 369 public: |
369 DeleteOnConnected(base::MessageLoop* message_loop, | 370 DeleteOnConnected(base::MessageLoop* message_loop, |
370 scoped_ptr<PseudoTcpAdapter>* adapter) | 371 scoped_ptr<PseudoTcpAdapter>* adapter) |
371 : message_loop_(message_loop), adapter_(adapter) {} | 372 : message_loop_(message_loop), adapter_(adapter) {} |
372 void OnConnected(int error) { | 373 void OnConnected(int error) { |
373 adapter_->reset(); | 374 adapter_->reset(); |
374 message_loop_->PostTask(FROM_HERE, base::MessageLoop::QuitClosure()); | 375 message_loop_->PostTask(FROM_HERE, |
| 376 base::MessageLoop::QuitWhenIdleClosure()); |
375 } | 377 } |
376 base::MessageLoop* message_loop_; | 378 base::MessageLoop* message_loop_; |
377 scoped_ptr<PseudoTcpAdapter>* adapter_; | 379 scoped_ptr<PseudoTcpAdapter>* adapter_; |
378 }; | 380 }; |
379 | 381 |
380 TEST_F(PseudoTcpAdapterTest, DeleteOnConnected) { | 382 TEST_F(PseudoTcpAdapterTest, DeleteOnConnected) { |
381 // This test verifies that deleting the adapter mid-callback doesn't lead | 383 // This test verifies that deleting the adapter mid-callback doesn't lead |
382 // to deleted structures being touched as the stack unrolls, so the failure | 384 // to deleted structures being touched as the stack unrolls, so the failure |
383 // mode is a crash rather than a normal test failure. | 385 // mode is a crash rather than a normal test failure. |
384 net::TestCompletionCallback client_connect_cb; | 386 net::TestCompletionCallback client_connect_cb; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 | 423 |
422 tester->Start(); | 424 tester->Start(); |
423 message_loop_.Run(); | 425 message_loop_.Run(); |
424 tester->CheckResults(); | 426 tester->CheckResults(); |
425 } | 427 } |
426 | 428 |
427 } // namespace | 429 } // namespace |
428 | 430 |
429 } // namespace protocol | 431 } // namespace protocol |
430 } // namespace remoting | 432 } // namespace remoting |
OLD | NEW |