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 |