| Index: chrome/common/ipc_send_fds_test.cc
|
| diff --git a/chrome/common/ipc_send_fds_test.cc b/chrome/common/ipc_send_fds_test.cc
|
| index ca22bd55aadc8f0704f1226a511baffaf3f6782a..d99082b22e9808348e420d8347ba881c31e92d03 100644
|
| --- a/chrome/common/ipc_send_fds_test.cc
|
| +++ b/chrome/common/ipc_send_fds_test.cc
|
| @@ -21,6 +21,7 @@ extern "C" {
|
|
|
| namespace {
|
|
|
| +const int kNumFDsToSend = 200;
|
| const char* kDevRandomPath = "/dev/random";
|
|
|
| static void VerifyAndCloseDescriptor(int fd, ino_t inode_num) {
|
| @@ -42,18 +43,22 @@ static void VerifyAndCloseDescriptor(int fd, ino_t inode_num) {
|
| class MyChannelDescriptorListener : public IPC::Channel::Listener {
|
| public:
|
| MyChannelDescriptorListener(ino_t expected_inode_num)
|
| - : expected_inode_num_(expected_inode_num) {}
|
| + : expected_inode_num_(expected_inode_num),
|
| + num_fds_received_(0) {}
|
|
|
| virtual void OnMessageReceived(const IPC::Message& message) {
|
| void* iter = NULL;
|
|
|
| + ++num_fds_received_;
|
| FileDescriptor descriptor;
|
| -
|
| ASSERT_TRUE(
|
| IPC::ParamTraits<FileDescriptor>::Read(&message, &iter, &descriptor));
|
|
|
| VerifyAndCloseDescriptor(descriptor.fd, expected_inode_num_);
|
| - MessageLoop::current()->Quit();
|
| +
|
| + if (num_fds_received_ == kNumFDsToSend) {
|
| + MessageLoop::current()->Quit();
|
| + }
|
| }
|
|
|
| virtual void OnChannelError() {
|
| @@ -61,23 +66,26 @@ class MyChannelDescriptorListener : public IPC::Channel::Listener {
|
| }
|
| private:
|
| ino_t expected_inode_num_;
|
| + int num_fds_received_;
|
| };
|
|
|
| void TestDescriptorServer(IPC::Channel &chan,
|
| base::ProcessHandle process_handle) {
|
| ASSERT_TRUE(process_handle);
|
|
|
| - FileDescriptor descriptor;
|
| - const int fd = open(kDevRandomPath, O_RDONLY);
|
| - ASSERT_GE(fd, 0);
|
| - descriptor.auto_close = true;
|
| - descriptor.fd = fd;
|
| -
|
| - IPC::Message* message = new IPC::Message(0, // routing_id
|
| - 3, // message type
|
| - IPC::Message::PRIORITY_NORMAL);
|
| - IPC::ParamTraits<FileDescriptor>::Write(message, descriptor);
|
| - chan.Send(message);
|
| + for (int i = 0; i < kNumFDsToSend; ++i) {
|
| + FileDescriptor descriptor;
|
| + const int fd = open(kDevRandomPath, O_RDONLY);
|
| + ASSERT_GE(fd, 0);
|
| + descriptor.auto_close = true;
|
| + descriptor.fd = fd;
|
| +
|
| + IPC::Message* message = new IPC::Message(0, // routing_id
|
| + 3, // message type
|
| + IPC::Message::PRIORITY_NORMAL);
|
| + IPC::ParamTraits<FileDescriptor>::Write(message, descriptor);
|
| + chan.Send(message);
|
| + }
|
|
|
| // Run message loop.
|
| MessageLoop::current()->Run();
|
|
|