| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "build/build_config.h" | 5 #include "build/build_config.h" |
| 6 | 6 |
| 7 #if defined(OS_POSIX) | 7 #if defined(OS_POSIX) |
| 8 #if defined(OS_MACOSX) | 8 #if defined(OS_MACOSX) |
| 9 extern "C" { | 9 extern "C" { |
| 10 #include <sandbox.h> | 10 #include <sandbox.h> |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 }; | 70 }; |
| 71 | 71 |
| 72 class MyChannelDescriptorListener : public MyChannelDescriptorListenerBase { | 72 class MyChannelDescriptorListener : public MyChannelDescriptorListenerBase { |
| 73 public: | 73 public: |
| 74 explicit MyChannelDescriptorListener(ino_t expected_inode_num) | 74 explicit MyChannelDescriptorListener(ino_t expected_inode_num) |
| 75 : MyChannelDescriptorListenerBase(), | 75 : MyChannelDescriptorListenerBase(), |
| 76 expected_inode_num_(expected_inode_num), | 76 expected_inode_num_(expected_inode_num), |
| 77 num_fds_received_(0) { | 77 num_fds_received_(0) { |
| 78 } | 78 } |
| 79 | 79 |
| 80 bool GotExpectedNumberOfDescriptors() const { | 80 unsigned num_fds_received() const { |
| 81 return num_fds_received_ == kNumFDsToSend * kNumMessages; | 81 return num_fds_received_; |
| 82 } | 82 } |
| 83 | 83 |
| 84 void OnChannelError() override { | 84 void OnChannelError() override { |
| 85 base::MessageLoop::current()->QuitWhenIdle(); | 85 base::MessageLoop::current()->QuitWhenIdle(); |
| 86 } | 86 } |
| 87 | 87 |
| 88 protected: | 88 protected: |
| 89 void HandleFD(int fd) override { | 89 void HandleFD(int fd) override { |
| 90 ASSERT_GE(fd, 0); | 90 ASSERT_GE(fd, 0); |
| 91 // Check that we can read from the FD. | 91 // Check that we can read from the FD. |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 MyChannelDescriptorListener listener(expected_inode_num); | 156 MyChannelDescriptorListener listener(expected_inode_num); |
| 157 | 157 |
| 158 // Set up IPC channel. | 158 // Set up IPC channel. |
| 159 Connect(&listener); | 159 Connect(&listener); |
| 160 | 160 |
| 161 // Run message loop. | 161 // Run message loop. |
| 162 base::RunLoop().Run(); | 162 base::RunLoop().Run(); |
| 163 | 163 |
| 164 // Verify that the message loop was exited due to getting the correct number | 164 // Verify that the message loop was exited due to getting the correct number |
| 165 // of descriptors, and not because of the channel closing unexpectedly. | 165 // of descriptors, and not because of the channel closing unexpectedly. |
| 166 EXPECT_TRUE(listener.GotExpectedNumberOfDescriptors()); | 166 EXPECT_EQ(kNumFDsToSend * kNumMessages, listener.num_fds_received()); |
| 167 | 167 |
| 168 Close(); | 168 Close(); |
| 169 } | 169 } |
| 170 }; | 170 }; |
| 171 | 171 |
| 172 DEFINE_IPC_CHANNEL_MOJO_TEST_CLIENT_WITH_CUSTOM_FIXTURE( | 172 DEFINE_IPC_CHANNEL_MOJO_TEST_CLIENT_WITH_CUSTOM_FIXTURE( |
| 173 SendFdsClient, | 173 SendFdsClient, |
| 174 SendFdsTestClientFixture) { | 174 SendFdsTestClientFixture) { |
| 175 struct stat st; | 175 struct stat st; |
| 176 int fd = open(kDevZeroPath, O_RDONLY); | 176 int fd = open(kDevZeroPath, O_RDONLY); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 << "Sandbox wasn't properly enabled"; | 209 << "Sandbox wasn't properly enabled"; |
| 210 | 210 |
| 211 // See if we can receive a file descriptor. | 211 // See if we can receive a file descriptor. |
| 212 SendFdsClientCommon("SendFdsSandboxedClient", st.st_ino); | 212 SendFdsClientCommon("SendFdsSandboxedClient", st.st_ino); |
| 213 } | 213 } |
| 214 #endif // defined(OS_MACOSX) | 214 #endif // defined(OS_MACOSX) |
| 215 | 215 |
| 216 } // namespace | 216 } // namespace |
| 217 | 217 |
| 218 #endif // defined(OS_POSIX) | 218 #endif // defined(OS_POSIX) |
| OLD | NEW |