| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "mojo/edk/embedder/embedder.h" | 5 #include "mojo/edk/embedder/embedder.h" |
| 6 | 6 |
| 7 #include <utility> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| 9 #include "base/logging.h" | 11 #include "base/logging.h" |
| 10 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
| 11 #include "base/synchronization/waitable_event.h" | 13 #include "base/synchronization/waitable_event.h" |
| 12 #include "base/test/test_timeouts.h" | 14 #include "base/test/test_timeouts.h" |
| 13 #include "mojo/edk/embedder/embedder.h" | 15 #include "mojo/edk/embedder/embedder.h" |
| 14 #include "mojo/edk/embedder/platform_channel_pair.h" | 16 #include "mojo/edk/embedder/platform_channel_pair.h" |
| 15 #include "mojo/edk/embedder/simple_platform_support.h" | 17 #include "mojo/edk/embedder/simple_platform_support.h" |
| 16 #include "mojo/edk/embedder/test_embedder.h" | 18 #include "mojo/edk/embedder/test_embedder.h" |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 // Android multi-process tests are not executing the new process. This is flaky. | 352 // Android multi-process tests are not executing the new process. This is flaky. |
| 351 #define MAYBE_MultiprocessChannels DISABLED_MultiprocessChannels | 353 #define MAYBE_MultiprocessChannels DISABLED_MultiprocessChannels |
| 352 #else | 354 #else |
| 353 #define MAYBE_MultiprocessChannels MultiprocessChannels | 355 #define MAYBE_MultiprocessChannels MultiprocessChannels |
| 354 #endif // defined(OS_ANDROID) | 356 #endif // defined(OS_ANDROID) |
| 355 TEST_F(EmbedderTest, MAYBE_MultiprocessChannels) { | 357 TEST_F(EmbedderTest, MAYBE_MultiprocessChannels) { |
| 356 test::MultiprocessTestHelper multiprocess_test_helper; | 358 test::MultiprocessTestHelper multiprocess_test_helper; |
| 357 multiprocess_test_helper.StartChild("MultiprocessChannelsClient"); | 359 multiprocess_test_helper.StartChild("MultiprocessChannelsClient"); |
| 358 | 360 |
| 359 { | 361 { |
| 360 MojoHandle server_mp = CreateMessagePipe( | 362 MojoHandle server_mp = |
| 361 multiprocess_test_helper.server_platform_handle.Pass()).release(). | 363 CreateMessagePipe( |
| 362 value(); | 364 std::move(multiprocess_test_helper.server_platform_handle)) |
| 365 .release() |
| 366 .value(); |
| 363 | 367 |
| 364 // 1. Write a message to |server_mp| (attaching nothing). | 368 // 1. Write a message to |server_mp| (attaching nothing). |
| 365 const char kHello[] = "hello"; | 369 const char kHello[] = "hello"; |
| 366 ASSERT_EQ(MOJO_RESULT_OK, | 370 ASSERT_EQ(MOJO_RESULT_OK, |
| 367 MojoWriteMessage(server_mp, kHello, | 371 MojoWriteMessage(server_mp, kHello, |
| 368 static_cast<uint32_t>(sizeof(kHello)), nullptr, | 372 static_cast<uint32_t>(sizeof(kHello)), nullptr, |
| 369 0, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 373 0, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 370 | 374 |
| 371 // TODO(vtl): If the scope were ended immediately here (maybe after closing | 375 // TODO(vtl): If the scope were ended immediately here (maybe after closing |
| 372 // |server_mp|), we die with a fatal error in |Channel::HandleLocalError()|. | 376 // |server_mp|), we die with a fatal error in |Channel::HandleLocalError()|. |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 ASSERT_EQ(MOJO_HANDLE_SIGNAL_NONE, state.satisfiable_signals); | 462 ASSERT_EQ(MOJO_HANDLE_SIGNAL_NONE, state.satisfiable_signals); |
| 459 #endif | 463 #endif |
| 460 ASSERT_EQ(MOJO_RESULT_OK, MojoClose(mp2)); | 464 ASSERT_EQ(MOJO_RESULT_OK, MojoClose(mp2)); |
| 461 } | 465 } |
| 462 | 466 |
| 463 EXPECT_TRUE(multiprocess_test_helper.WaitForChildTestShutdown()); | 467 EXPECT_TRUE(multiprocess_test_helper.WaitForChildTestShutdown()); |
| 464 } | 468 } |
| 465 | 469 |
| 466 MOJO_MULTIPROCESS_TEST_CHILD_TEST(MultiprocessChannelsClient) { | 470 MOJO_MULTIPROCESS_TEST_CHILD_TEST(MultiprocessChannelsClient) { |
| 467 ScopedPlatformHandle client_platform_handle = | 471 ScopedPlatformHandle client_platform_handle = |
| 468 test::MultiprocessTestHelper::client_platform_handle.Pass(); | 472 std::move(test::MultiprocessTestHelper::client_platform_handle); |
| 469 EXPECT_TRUE(client_platform_handle.is_valid()); | 473 EXPECT_TRUE(client_platform_handle.is_valid()); |
| 470 | 474 |
| 471 MojoHandle client_mp = CreateMessagePipe( | 475 MojoHandle client_mp = |
| 472 client_platform_handle.Pass()).release().value(); | 476 CreateMessagePipe(std::move(client_platform_handle)).release().value(); |
| 473 | 477 |
| 474 // 1. Read the first message from |client_mp|. | 478 // 1. Read the first message from |client_mp|. |
| 475 MojoHandleSignalsState state; | 479 MojoHandleSignalsState state; |
| 476 ASSERT_EQ(MOJO_RESULT_OK, MojoWait(client_mp, MOJO_HANDLE_SIGNAL_READABLE, | 480 ASSERT_EQ(MOJO_RESULT_OK, MojoWait(client_mp, MOJO_HANDLE_SIGNAL_READABLE, |
| 477 MOJO_DEADLINE_INDEFINITE, &state)); | 481 MOJO_DEADLINE_INDEFINITE, &state)); |
| 478 ASSERT_EQ(kSignalReadadableWritable, state.satisfied_signals); | 482 ASSERT_EQ(kSignalReadadableWritable, state.satisfied_signals); |
| 479 ASSERT_EQ(kSignalAll, state.satisfiable_signals); | 483 ASSERT_EQ(kSignalAll, state.satisfiable_signals); |
| 480 | 484 |
| 481 char buffer[1000] = {}; | 485 char buffer[1000] = {}; |
| 482 uint32_t num_bytes = static_cast<uint32_t>(sizeof(buffer)); | 486 uint32_t num_bytes = static_cast<uint32_t>(sizeof(buffer)); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); | 571 ASSERT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfiable_signals); |
| 568 ASSERT_EQ(MOJO_RESULT_OK, MojoClose(mp1)); | 572 ASSERT_EQ(MOJO_RESULT_OK, MojoClose(mp1)); |
| 569 } | 573 } |
| 570 | 574 |
| 571 // TODO(vtl): Test immediate write & close. | 575 // TODO(vtl): Test immediate write & close. |
| 572 // TODO(vtl): Test broken-connection cases. | 576 // TODO(vtl): Test broken-connection cases. |
| 573 | 577 |
| 574 } // namespace | 578 } // namespace |
| 575 } // namespace edk | 579 } // namespace edk |
| 576 } // namespace mojo | 580 } // namespace mojo |
| OLD | NEW |