| 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 "base/base_paths.h" | 7 #include "base/base_paths.h" |
| 8 #include "base/files/file.h" | 8 #include "base/files/file.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 namespace { | 31 namespace { |
| 32 | 32 |
| 33 class ListenerThatExpectsOK : public IPC::Listener { | 33 class ListenerThatExpectsOK : public IPC::Listener { |
| 34 public: | 34 public: |
| 35 ListenerThatExpectsOK() | 35 ListenerThatExpectsOK() |
| 36 : received_ok_(false) {} | 36 : received_ok_(false) {} |
| 37 | 37 |
| 38 ~ListenerThatExpectsOK() override {} | 38 ~ListenerThatExpectsOK() override {} |
| 39 | 39 |
| 40 bool OnMessageReceived(const IPC::Message& message) override { | 40 bool OnMessageReceived(const IPC::Message& message) override { |
| 41 PickleIterator iter(message); | 41 base::PickleIterator iter(message); |
| 42 std::string should_be_ok; | 42 std::string should_be_ok; |
| 43 EXPECT_TRUE(iter.ReadString(&should_be_ok)); | 43 EXPECT_TRUE(iter.ReadString(&should_be_ok)); |
| 44 EXPECT_EQ(should_be_ok, "OK"); | 44 EXPECT_EQ(should_be_ok, "OK"); |
| 45 received_ok_ = true; | 45 received_ok_ = true; |
| 46 base::MessageLoop::current()->Quit(); | 46 base::MessageLoop::current()->Quit(); |
| 47 return true; | 47 return true; |
| 48 } | 48 } |
| 49 | 49 |
| 50 void OnChannelError() override { | 50 void OnChannelError() override { |
| 51 // The connection should be healthy while the listener is waiting | 51 // The connection should be healthy while the listener is waiting |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 } | 318 } |
| 319 | 319 |
| 320 static void WritePipeThenSend(IPC::Sender* sender, TestingMessagePipe* pipe) { | 320 static void WritePipeThenSend(IPC::Sender* sender, TestingMessagePipe* pipe) { |
| 321 IPC::Message* message = | 321 IPC::Message* message = |
| 322 new IPC::Message(0, 2, IPC::Message::PRIORITY_NORMAL); | 322 new IPC::Message(0, 2, IPC::Message::PRIORITY_NORMAL); |
| 323 WritePipe(message, pipe); | 323 WritePipe(message, pipe); |
| 324 ASSERT_TRUE(sender->Send(message)); | 324 ASSERT_TRUE(sender->Send(message)); |
| 325 } | 325 } |
| 326 | 326 |
| 327 static void ReadReceivedPipe(const IPC::Message& message, | 327 static void ReadReceivedPipe(const IPC::Message& message, |
| 328 PickleIterator* iter) { | 328 base::PickleIterator* iter) { |
| 329 mojo::ScopedMessagePipeHandle pipe; | 329 mojo::ScopedMessagePipeHandle pipe; |
| 330 EXPECT_TRUE( | 330 EXPECT_TRUE( |
| 331 IPC::MojoMessageHelper::ReadMessagePipeFrom(&message, iter, &pipe)); | 331 IPC::MojoMessageHelper::ReadMessagePipeFrom(&message, iter, &pipe)); |
| 332 std::string content(GetSendingFileContent().size(), ' '); | 332 std::string content(GetSendingFileContent().size(), ' '); |
| 333 | 333 |
| 334 uint32_t num_bytes = static_cast<uint32_t>(content.size()); | 334 uint32_t num_bytes = static_cast<uint32_t>(content.size()); |
| 335 EXPECT_EQ(MOJO_RESULT_OK, | 335 EXPECT_EQ(MOJO_RESULT_OK, |
| 336 mojo::ReadMessageRaw(pipe.get(), &content[0], &num_bytes, nullptr, | 336 mojo::ReadMessageRaw(pipe.get(), &content[0], &num_bytes, nullptr, |
| 337 nullptr, 0)); | 337 nullptr, 0)); |
| 338 EXPECT_EQ(content, GetSendingFileContent()); | 338 EXPECT_EQ(content, GetSendingFileContent()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 365 base::File& file, | 365 base::File& file, |
| 366 TestingMessagePipe* pipe) { | 366 TestingMessagePipe* pipe) { |
| 367 IPC::Message* message = | 367 IPC::Message* message = |
| 368 new IPC::Message(0, 2, IPC::Message::PRIORITY_NORMAL); | 368 new IPC::Message(0, 2, IPC::Message::PRIORITY_NORMAL); |
| 369 WriteFile(message, file); | 369 WriteFile(message, file); |
| 370 WritePipe(message, pipe); | 370 WritePipe(message, pipe); |
| 371 ASSERT_TRUE(sender->Send(message)); | 371 ASSERT_TRUE(sender->Send(message)); |
| 372 } | 372 } |
| 373 | 373 |
| 374 static void ReadReceivedFile(const IPC::Message& message, | 374 static void ReadReceivedFile(const IPC::Message& message, |
| 375 PickleIterator* iter) { | 375 base::PickleIterator* iter) { |
| 376 base::ScopedFD fd; | 376 base::ScopedFD fd; |
| 377 scoped_refptr<IPC::MessageAttachment> attachment; | 377 scoped_refptr<IPC::MessageAttachment> attachment; |
| 378 EXPECT_TRUE(message.ReadAttachment(iter, &attachment)); | 378 EXPECT_TRUE(message.ReadAttachment(iter, &attachment)); |
| 379 base::File file(attachment->TakePlatformFile()); | 379 base::File file(attachment->TakePlatformFile()); |
| 380 std::string content(GetSendingFileContent().size(), ' '); | 380 std::string content(GetSendingFileContent().size(), ' '); |
| 381 file.Read(0, &content[0], content.size()); | 381 file.Read(0, &content[0], content.size()); |
| 382 EXPECT_EQ(content, GetSendingFileContent()); | 382 EXPECT_EQ(content, GetSendingFileContent()); |
| 383 } | 383 } |
| 384 #endif | 384 #endif |
| 385 }; | 385 }; |
| 386 | 386 |
| 387 class ListenerThatExpectsMessagePipe : public IPC::Listener { | 387 class ListenerThatExpectsMessagePipe : public IPC::Listener { |
| 388 public: | 388 public: |
| 389 ListenerThatExpectsMessagePipe() : sender_(NULL) {} | 389 ListenerThatExpectsMessagePipe() : sender_(NULL) {} |
| 390 | 390 |
| 391 ~ListenerThatExpectsMessagePipe() override {} | 391 ~ListenerThatExpectsMessagePipe() override {} |
| 392 | 392 |
| 393 bool OnMessageReceived(const IPC::Message& message) override { | 393 bool OnMessageReceived(const IPC::Message& message) override { |
| 394 PickleIterator iter(message); | 394 base::PickleIterator iter(message); |
| 395 HandleSendingHelper::ReadReceivedPipe(message, &iter); | 395 HandleSendingHelper::ReadReceivedPipe(message, &iter); |
| 396 base::MessageLoop::current()->Quit(); | 396 base::MessageLoop::current()->Quit(); |
| 397 ListenerThatExpectsOK::SendOK(sender_); | 397 ListenerThatExpectsOK::SendOK(sender_); |
| 398 return true; | 398 return true; |
| 399 } | 399 } |
| 400 | 400 |
| 401 void OnChannelError() override { NOTREACHED(); } | 401 void OnChannelError() override { NOTREACHED(); } |
| 402 | 402 |
| 403 void set_sender(IPC::Sender* sender) { sender_ = sender; } | 403 void set_sender(IPC::Sender* sender) { sender_ = sender; } |
| 404 | 404 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 } | 454 } |
| 455 | 455 |
| 456 class ListenerThatExpectsMessagePipeUsingParamTrait : public IPC::Listener { | 456 class ListenerThatExpectsMessagePipeUsingParamTrait : public IPC::Listener { |
| 457 public: | 457 public: |
| 458 explicit ListenerThatExpectsMessagePipeUsingParamTrait(bool receiving_valid) | 458 explicit ListenerThatExpectsMessagePipeUsingParamTrait(bool receiving_valid) |
| 459 : sender_(NULL), receiving_valid_(receiving_valid) {} | 459 : sender_(NULL), receiving_valid_(receiving_valid) {} |
| 460 | 460 |
| 461 ~ListenerThatExpectsMessagePipeUsingParamTrait() override {} | 461 ~ListenerThatExpectsMessagePipeUsingParamTrait() override {} |
| 462 | 462 |
| 463 bool OnMessageReceived(const IPC::Message& message) override { | 463 bool OnMessageReceived(const IPC::Message& message) override { |
| 464 PickleIterator iter(message); | 464 base::PickleIterator iter(message); |
| 465 mojo::MessagePipeHandle handle; | 465 mojo::MessagePipeHandle handle; |
| 466 EXPECT_TRUE(IPC::ParamTraits<mojo::MessagePipeHandle>::Read(&message, &iter, | 466 EXPECT_TRUE(IPC::ParamTraits<mojo::MessagePipeHandle>::Read(&message, &iter, |
| 467 &handle)); | 467 &handle)); |
| 468 EXPECT_EQ(handle.is_valid(), receiving_valid_); | 468 EXPECT_EQ(handle.is_valid(), receiving_valid_); |
| 469 if (receiving_valid_) { | 469 if (receiving_valid_) { |
| 470 ReadOK(handle); | 470 ReadOK(handle); |
| 471 MojoClose(handle.value()); | 471 MojoClose(handle.value()); |
| 472 } | 472 } |
| 473 | 473 |
| 474 base::MessageLoop::current()->Quit(); | 474 base::MessageLoop::current()->Quit(); |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 | 615 |
| 616 #if defined(OS_POSIX) | 616 #if defined(OS_POSIX) |
| 617 class ListenerThatExpectsFile : public IPC::Listener { | 617 class ListenerThatExpectsFile : public IPC::Listener { |
| 618 public: | 618 public: |
| 619 ListenerThatExpectsFile() | 619 ListenerThatExpectsFile() |
| 620 : sender_(NULL) {} | 620 : sender_(NULL) {} |
| 621 | 621 |
| 622 ~ListenerThatExpectsFile() override {} | 622 ~ListenerThatExpectsFile() override {} |
| 623 | 623 |
| 624 bool OnMessageReceived(const IPC::Message& message) override { | 624 bool OnMessageReceived(const IPC::Message& message) override { |
| 625 PickleIterator iter(message); | 625 base::PickleIterator iter(message); |
| 626 HandleSendingHelper::ReadReceivedFile(message, &iter); | 626 HandleSendingHelper::ReadReceivedFile(message, &iter); |
| 627 base::MessageLoop::current()->Quit(); | 627 base::MessageLoop::current()->Quit(); |
| 628 ListenerThatExpectsOK::SendOK(sender_); | 628 ListenerThatExpectsOK::SendOK(sender_); |
| 629 return true; | 629 return true; |
| 630 } | 630 } |
| 631 | 631 |
| 632 void OnChannelError() override { | 632 void OnChannelError() override { |
| 633 NOTREACHED(); | 633 NOTREACHED(); |
| 634 } | 634 } |
| 635 | 635 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 return 0; | 674 return 0; |
| 675 } | 675 } |
| 676 | 676 |
| 677 class ListenerThatExpectsFileAndPipe : public IPC::Listener { | 677 class ListenerThatExpectsFileAndPipe : public IPC::Listener { |
| 678 public: | 678 public: |
| 679 ListenerThatExpectsFileAndPipe() : sender_(NULL) {} | 679 ListenerThatExpectsFileAndPipe() : sender_(NULL) {} |
| 680 | 680 |
| 681 ~ListenerThatExpectsFileAndPipe() override {} | 681 ~ListenerThatExpectsFileAndPipe() override {} |
| 682 | 682 |
| 683 bool OnMessageReceived(const IPC::Message& message) override { | 683 bool OnMessageReceived(const IPC::Message& message) override { |
| 684 PickleIterator iter(message); | 684 base::PickleIterator iter(message); |
| 685 HandleSendingHelper::ReadReceivedFile(message, &iter); | 685 HandleSendingHelper::ReadReceivedFile(message, &iter); |
| 686 HandleSendingHelper::ReadReceivedPipe(message, &iter); | 686 HandleSendingHelper::ReadReceivedPipe(message, &iter); |
| 687 base::MessageLoop::current()->Quit(); | 687 base::MessageLoop::current()->Quit(); |
| 688 ListenerThatExpectsOK::SendOK(sender_); | 688 ListenerThatExpectsOK::SendOK(sender_); |
| 689 return true; | 689 return true; |
| 690 } | 690 } |
| 691 | 691 |
| 692 void OnChannelError() override { NOTREACHED(); } | 692 void OnChannelError() override { NOTREACHED(); } |
| 693 | 693 |
| 694 void set_sender(IPC::Sender* sender) { sender_ = sender; } | 694 void set_sender(IPC::Sender* sender) { sender_ = sender; } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 777 base::MessageLoop::current()->Run(); | 777 base::MessageLoop::current()->Run(); |
| 778 | 778 |
| 779 client.Close(); | 779 client.Close(); |
| 780 | 780 |
| 781 return 0; | 781 return 0; |
| 782 } | 782 } |
| 783 | 783 |
| 784 #endif // OS_LINUX | 784 #endif // OS_LINUX |
| 785 | 785 |
| 786 } // namespace | 786 } // namespace |
| OLD | NEW |