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 "ipc/mojo/ipc_channel_mojo.h" | 5 #include "ipc/mojo/ipc_channel_mojo.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 EXPECT_TRUE(base::kNullProcessId != peer_pid); | 164 EXPECT_TRUE(base::kNullProcessId != peer_pid); |
165 is_connected_called_ = true; | 165 is_connected_called_ = true; |
166 } | 166 } |
167 | 167 |
168 bool is_connected_called() const { return is_connected_called_; } | 168 bool is_connected_called() const { return is_connected_called_; } |
169 | 169 |
170 private: | 170 private: |
171 bool is_connected_called_; | 171 bool is_connected_called_; |
172 }; | 172 }; |
173 | 173 |
174 // Times out on Android; see http://crbug.com/502290 | 174 TEST_F(IPCChannelMojoTest, ConnectedFromClient) { |
175 #if defined(OS_ANDROID) | |
176 #define MAYBE_ConnectedFromClient DISABLED_ConnectedFromClient | |
177 #else | |
178 #define MAYBE_ConnectedFromClient ConnectedFromClient | |
179 #endif | |
180 TEST_F(IPCChannelMojoTest, MAYBE_ConnectedFromClient) { | |
181 InitWithMojo("IPCChannelMojoTestClient"); | 175 InitWithMojo("IPCChannelMojoTestClient"); |
182 | 176 |
183 // Set up IPC channel and start client. | 177 // Set up IPC channel and start client. |
184 TestChannelListenerWithExtraExpectations listener; | 178 TestChannelListenerWithExtraExpectations listener; |
185 CreateChannel(&listener); | 179 CreateChannel(&listener); |
186 listener.Init(sender()); | 180 listener.Init(sender()); |
187 ASSERT_TRUE(ConnectChannel()); | 181 ASSERT_TRUE(ConnectChannel()); |
188 | 182 |
189 IPC::TestChannelListener::SendOneMessage(sender(), "hello from parent"); | 183 IPC::TestChannelListener::SendOneMessage(sender(), "hello from parent"); |
190 | 184 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 DEFINE_IPC_CHANNEL_MOJO_TEST_CLIENT(IPCChannelMojoErraticTestClient, | 243 DEFINE_IPC_CHANNEL_MOJO_TEST_CLIENT(IPCChannelMojoErraticTestClient, |
250 ChannelClient) { | 244 ChannelClient) { |
251 ListenerThatQuits listener; | 245 ListenerThatQuits listener; |
252 Connect(&listener); | 246 Connect(&listener); |
253 | 247 |
254 base::MessageLoop::current()->Run(); | 248 base::MessageLoop::current()->Run(); |
255 | 249 |
256 Close(); | 250 Close(); |
257 } | 251 } |
258 | 252 |
259 // Times out on Android; see http://crbug.com/502290 | 253 TEST_F(IPCChannelMojoTest, SendFailWithPendingMessages) { |
260 #if defined(OS_ANDROID) | |
261 #define MAYBE_SendFailWithPendingMessages DISABLED_SendFailWithPendingMessages | |
262 #else | |
263 #define MAYBE_SendFailWithPendingMessages SendFailWithPendingMessages | |
264 #endif | |
265 TEST_F(IPCChannelMojoTest, MAYBE_SendFailWithPendingMessages) { | |
266 InitWithMojo("IPCChannelMojoErraticTestClient"); | 254 InitWithMojo("IPCChannelMojoErraticTestClient"); |
267 | 255 |
268 // Set up IPC channel and start client. | 256 // Set up IPC channel and start client. |
269 ListenerExpectingErrors listener; | 257 ListenerExpectingErrors listener; |
270 CreateChannel(&listener); | 258 CreateChannel(&listener); |
271 ASSERT_TRUE(ConnectChannel()); | 259 ASSERT_TRUE(ConnectChannel()); |
272 | 260 |
273 // This matches a value in mojo/edk/system/constants.h | 261 // This matches a value in mojo/edk/system/constants.h |
274 const int kMaxMessageNumBytes = 4 * 1024 * 1024; | 262 const int kMaxMessageNumBytes = 4 * 1024 * 1024; |
275 std::string overly_large_data(kMaxMessageNumBytes, '*'); | 263 std::string overly_large_data(kMaxMessageNumBytes, '*'); |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 } | 386 } |
399 | 387 |
400 void OnChannelError() override { NOTREACHED(); } | 388 void OnChannelError() override { NOTREACHED(); } |
401 | 389 |
402 void set_sender(IPC::Sender* sender) { sender_ = sender; } | 390 void set_sender(IPC::Sender* sender) { sender_ = sender; } |
403 | 391 |
404 private: | 392 private: |
405 IPC::Sender* sender_; | 393 IPC::Sender* sender_; |
406 }; | 394 }; |
407 | 395 |
408 // Times out on Android; see http://crbug.com/502290 | 396 TEST_F(IPCChannelMojoTest, SendMessagePipe) { |
409 #if defined(OS_ANDROID) | |
410 #define MAYBE_SendMessagePipe DISABLED_SendMessagePipe | |
411 #else | |
412 #define MAYBE_SendMessagePipe SendMessagePipe | |
413 #endif | |
414 TEST_F(IPCChannelMojoTest, MAYBE_SendMessagePipe) { | |
415 InitWithMojo("IPCChannelMojoTestSendMessagePipeClient"); | 397 InitWithMojo("IPCChannelMojoTestSendMessagePipeClient"); |
416 | 398 |
417 ListenerThatExpectsOK listener; | 399 ListenerThatExpectsOK listener; |
418 CreateChannel(&listener); | 400 CreateChannel(&listener); |
419 ASSERT_TRUE(ConnectChannel()); | 401 ASSERT_TRUE(ConnectChannel()); |
420 | 402 |
421 TestingMessagePipe pipe; | 403 TestingMessagePipe pipe; |
422 HandleSendingHelper::WritePipeThenSend(channel(), &pipe); | 404 HandleSendingHelper::WritePipeThenSend(channel(), &pipe); |
423 | 405 |
424 base::MessageLoop::current()->Run(); | 406 base::MessageLoop::current()->Run(); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 receiving_valid_handle); | 477 receiving_valid_handle); |
496 Connect(&listener); | 478 Connect(&listener); |
497 listener.set_sender(channel()); | 479 listener.set_sender(channel()); |
498 | 480 |
499 base::MessageLoop::current()->Run(); | 481 base::MessageLoop::current()->Run(); |
500 | 482 |
501 Close(); | 483 Close(); |
502 } | 484 } |
503 }; | 485 }; |
504 | 486 |
505 // Times out on Android; see http://crbug.com/502290 | 487 TEST_F(IPCChannelMojoTest, ParamTraitValidMessagePipe) { |
506 #if defined(OS_ANDROID) | |
507 #define MAYBE_ParamTraitValidMessagePipe DISABLED_ParamTraitValidMessagePipe | |
508 #else | |
509 #define MAYBE_ParamTraitValidMessagePipe ParamTraitValidMessagePipe | |
510 #endif | |
511 TEST_F(IPCChannelMojoTest, MAYBE_ParamTraitValidMessagePipe) { | |
512 InitWithMojo("ParamTraitValidMessagePipeClient"); | 488 InitWithMojo("ParamTraitValidMessagePipeClient"); |
513 | 489 |
514 ListenerThatExpectsOK listener; | 490 ListenerThatExpectsOK listener; |
515 CreateChannel(&listener); | 491 CreateChannel(&listener); |
516 ASSERT_TRUE(ConnectChannel()); | 492 ASSERT_TRUE(ConnectChannel()); |
517 | 493 |
518 TestingMessagePipe pipe; | 494 TestingMessagePipe pipe; |
519 | 495 |
520 std::unique_ptr<IPC::Message> message(new IPC::Message()); | 496 std::unique_ptr<IPC::Message> message(new IPC::Message()); |
521 IPC::ParamTraits<mojo::MessagePipeHandle>::Write(message.get(), | 497 IPC::ParamTraits<mojo::MessagePipeHandle>::Write(message.get(), |
522 pipe.peer.release()); | 498 pipe.peer.release()); |
523 WriteOK(pipe.self.get()); | 499 WriteOK(pipe.self.get()); |
524 | 500 |
525 channel()->Send(message.release()); | 501 channel()->Send(message.release()); |
526 base::MessageLoop::current()->Run(); | 502 base::MessageLoop::current()->Run(); |
527 channel()->Close(); | 503 channel()->Close(); |
528 | 504 |
529 EXPECT_TRUE(WaitForClientShutdown()); | 505 EXPECT_TRUE(WaitForClientShutdown()); |
530 DestroyChannel(); | 506 DestroyChannel(); |
531 } | 507 } |
532 | 508 |
533 DEFINE_IPC_CHANNEL_MOJO_TEST_CLIENT(ParamTraitValidMessagePipeClient, | 509 DEFINE_IPC_CHANNEL_MOJO_TEST_CLIENT(ParamTraitValidMessagePipeClient, |
534 ParamTraitMessagePipeClient) { | 510 ParamTraitMessagePipeClient) { |
535 RunTest(true); | 511 RunTest(true); |
536 } | 512 } |
537 | 513 |
538 // Times out on Android; see http://crbug.com/502290 | 514 TEST_F(IPCChannelMojoTest, ParamTraitInvalidMessagePipe) { |
539 #if defined(OS_ANDROID) | |
540 #define MAYBE_ParamTraitInvalidMessagePipe DISABLED_ParamTraitInvalidMessagePipe | |
541 #else | |
542 #define MAYBE_ParamTraitInvalidMessagePipe ParamTraitInvalidMessagePipe | |
543 #endif | |
544 TEST_F(IPCChannelMojoTest, MAYBE_ParamTraitInvalidMessagePipe) { | |
545 InitWithMojo("ParamTraitInvalidMessagePipeClient"); | 515 InitWithMojo("ParamTraitInvalidMessagePipeClient"); |
546 | 516 |
547 ListenerThatExpectsOK listener; | 517 ListenerThatExpectsOK listener; |
548 CreateChannel(&listener); | 518 CreateChannel(&listener); |
549 ASSERT_TRUE(ConnectChannel()); | 519 ASSERT_TRUE(ConnectChannel()); |
550 | 520 |
551 mojo::MessagePipeHandle invalid_handle; | 521 mojo::MessagePipeHandle invalid_handle; |
552 std::unique_ptr<IPC::Message> message(new IPC::Message()); | 522 std::unique_ptr<IPC::Message> message(new IPC::Message()); |
553 IPC::ParamTraits<mojo::MessagePipeHandle>::Write(message.get(), | 523 IPC::ParamTraits<mojo::MessagePipeHandle>::Write(message.get(), |
554 invalid_handle); | 524 invalid_handle); |
555 | 525 |
556 channel()->Send(message.release()); | 526 channel()->Send(message.release()); |
557 base::MessageLoop::current()->Run(); | 527 base::MessageLoop::current()->Run(); |
558 channel()->Close(); | 528 channel()->Close(); |
559 | 529 |
560 EXPECT_TRUE(WaitForClientShutdown()); | 530 EXPECT_TRUE(WaitForClientShutdown()); |
561 DestroyChannel(); | 531 DestroyChannel(); |
562 } | 532 } |
563 | 533 |
564 DEFINE_IPC_CHANNEL_MOJO_TEST_CLIENT(ParamTraitInvalidMessagePipeClient, | 534 DEFINE_IPC_CHANNEL_MOJO_TEST_CLIENT(ParamTraitInvalidMessagePipeClient, |
565 ParamTraitMessagePipeClient) { | 535 ParamTraitMessagePipeClient) { |
566 RunTest(false); | 536 RunTest(false); |
567 } | 537 } |
568 | 538 |
569 // Times out on Android. crbug.com/593790 | 539 TEST_F(IPCChannelMojoTest, SendFailAfterClose) { |
570 #if defined(OS_ANDROID) | |
571 #define MAYBE_SendFailAfterClose DISABLED_SendFailAfterClose | |
572 #else | |
573 #define MAYBE_SendFailAfterClose SendFailAfterClose | |
574 #endif | |
575 TEST_F(IPCChannelMojoTest, MAYBE_SendFailAfterClose) { | |
576 InitWithMojo("IPCChannelMojoTestSendOkClient"); | 540 InitWithMojo("IPCChannelMojoTestSendOkClient"); |
577 | 541 |
578 ListenerThatExpectsOK listener; | 542 ListenerThatExpectsOK listener; |
579 CreateChannel(&listener); | 543 CreateChannel(&listener); |
580 ASSERT_TRUE(ConnectChannel()); | 544 ASSERT_TRUE(ConnectChannel()); |
581 | 545 |
582 base::MessageLoop::current()->Run(); | 546 base::MessageLoop::current()->Run(); |
583 channel()->Close(); | 547 channel()->Close(); |
584 ASSERT_FALSE(channel()->Send(new IPC::Message())); | 548 ASSERT_FALSE(channel()->Send(new IPC::Message())); |
585 | 549 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 } | 595 } |
632 | 596 |
633 void OnChannelError() override { NOTREACHED(); } | 597 void OnChannelError() override { NOTREACHED(); } |
634 | 598 |
635 void set_sender(IPC::Sender* sender) { sender_ = sender; } | 599 void set_sender(IPC::Sender* sender) { sender_ = sender; } |
636 | 600 |
637 private: | 601 private: |
638 IPC::Sender* sender_; | 602 IPC::Sender* sender_; |
639 }; | 603 }; |
640 | 604 |
641 // Times out on Android; see http://crbug.com/502290 | 605 TEST_F(IPCChannelMojoTest, SendPlatformHandle) { |
642 #if defined(OS_ANDROID) | |
643 #define MAYBE_SendPlatformHandle DISABLED_SendPlatformHandle | |
644 #else | |
645 #define MAYBE_SendPlatformHandle SendPlatformHandle | |
646 #endif | |
647 TEST_F(IPCChannelMojoTest, MAYBE_SendPlatformHandle) { | |
648 InitWithMojo("IPCChannelMojoTestSendPlatformHandleClient"); | 606 InitWithMojo("IPCChannelMojoTestSendPlatformHandleClient"); |
649 | 607 |
650 ListenerThatExpectsOK listener; | 608 ListenerThatExpectsOK listener; |
651 CreateChannel(&listener); | 609 CreateChannel(&listener); |
652 ASSERT_TRUE(ConnectChannel()); | 610 ASSERT_TRUE(ConnectChannel()); |
653 | 611 |
654 base::File file(HandleSendingHelper::GetSendingFilePath(), | 612 base::File file(HandleSendingHelper::GetSendingFilePath(), |
655 base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE | | 613 base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE | |
656 base::File::FLAG_READ); | 614 base::File::FLAG_READ); |
657 HandleSendingHelper::WriteFileThenSend(channel(), file); | 615 HandleSendingHelper::WriteFileThenSend(channel(), file); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 } | 648 } |
691 | 649 |
692 void OnChannelError() override { NOTREACHED(); } | 650 void OnChannelError() override { NOTREACHED(); } |
693 | 651 |
694 void set_sender(IPC::Sender* sender) { sender_ = sender; } | 652 void set_sender(IPC::Sender* sender) { sender_ = sender; } |
695 | 653 |
696 private: | 654 private: |
697 IPC::Sender* sender_; | 655 IPC::Sender* sender_; |
698 }; | 656 }; |
699 | 657 |
700 // Times out on Android; see http://crbug.com/502290 | 658 TEST_F(IPCChannelMojoTest, SendPlatformHandleAndPipe) { |
701 #if defined(OS_ANDROID) | |
702 #define MAYBE_SendPlatformHandleAndPipe DISABLED_SendPlatformHandleAndPipe | |
703 #else | |
704 #define MAYBE_SendPlatformHandleAndPipe SendPlatformHandleAndPipe | |
705 #endif | |
706 TEST_F(IPCChannelMojoTest, MAYBE_SendPlatformHandleAndPipe) { | |
707 InitWithMojo("IPCChannelMojoTestSendPlatformHandleAndPipeClient"); | 659 InitWithMojo("IPCChannelMojoTestSendPlatformHandleAndPipeClient"); |
708 | 660 |
709 ListenerThatExpectsOK listener; | 661 ListenerThatExpectsOK listener; |
710 CreateChannel(&listener); | 662 CreateChannel(&listener); |
711 ASSERT_TRUE(ConnectChannel()); | 663 ASSERT_TRUE(ConnectChannel()); |
712 | 664 |
713 base::File file(HandleSendingHelper::GetSendingFilePath(), | 665 base::File file(HandleSendingHelper::GetSendingFilePath(), |
714 base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE | | 666 base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE | |
715 base::File::FLAG_READ); | 667 base::File::FLAG_READ); |
716 TestingMessagePipe pipe; | 668 TestingMessagePipe pipe; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
783 | 735 |
784 // This test always passes; it ensures that there is at least one test on all | 736 // This test always passes; it ensures that there is at least one test on all |
785 // targets. Otherwise, Android bots will fail because there is a test target | 737 // targets. Otherwise, Android bots will fail because there is a test target |
786 // that runs 0 tests. | 738 // that runs 0 tests. |
787 // TODO(amistry): Remove this once at least one other test has been enabled. | 739 // TODO(amistry): Remove this once at least one other test has been enabled. |
788 // https://crbug.com/606624. | 740 // https://crbug.com/606624. |
789 TEST_F(IPCChannelMojoTest, DummyAlwaysPasses) { | 741 TEST_F(IPCChannelMojoTest, DummyAlwaysPasses) { |
790 } | 742 } |
791 | 743 |
792 } // namespace | 744 } // namespace |
OLD | NEW |