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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 MyChannelDescriptorListener listener(-1); | 99 MyChannelDescriptorListener listener(-1); |
100 CreateChannel(&listener); | 100 CreateChannel(&listener); |
101 ASSERT_TRUE(ConnectChannel()); | 101 ASSERT_TRUE(ConnectChannel()); |
102 ASSERT_TRUE(StartClient()); | 102 ASSERT_TRUE(StartClient()); |
103 | 103 |
104 for (unsigned i = 0; i < kNumFDsToSend; ++i) { | 104 for (unsigned i = 0; i < kNumFDsToSend; ++i) { |
105 const int fd = open(kDevZeroPath, O_RDONLY); | 105 const int fd = open(kDevZeroPath, O_RDONLY); |
106 ASSERT_GE(fd, 0); | 106 ASSERT_GE(fd, 0); |
107 base::FileDescriptor descriptor(fd, true); | 107 base::FileDescriptor descriptor(fd, true); |
108 | 108 |
109 IPC::Message* message = | 109 IPC::Message* message = new IPC::Message(0, 3); |
110 new IPC::Message(0, 3, IPC::Message::PRIORITY_NORMAL); | |
111 IPC::ParamTraits<base::FileDescriptor>::Write(message, descriptor); | 110 IPC::ParamTraits<base::FileDescriptor>::Write(message, descriptor); |
112 ASSERT_TRUE(sender()->Send(message)); | 111 ASSERT_TRUE(sender()->Send(message)); |
113 } | 112 } |
114 | 113 |
115 // Run message loop. | 114 // Run message loop. |
116 base::MessageLoop::current()->Run(); | 115 base::MessageLoop::current()->Run(); |
117 | 116 |
118 // Close the channel so the client's OnChannelError() gets fired. | 117 // Close the channel so the client's OnChannelError() gets fired. |
119 channel()->Close(); | 118 channel()->Close(); |
120 | 119 |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 static void Connect(IPC::Channel *channel) { | 272 static void Connect(IPC::Channel *channel) { |
274 EXPECT_TRUE(channel->Connect()); | 273 EXPECT_TRUE(channel->Connect()); |
275 } | 274 } |
276 | 275 |
277 void Send(int fd) { | 276 void Send(int fd) { |
278 CHECK_EQ(base::MessageLoop::current(), in_thread_->message_loop()); | 277 CHECK_EQ(base::MessageLoop::current(), in_thread_->message_loop()); |
279 | 278 |
280 ASSERT_GE(fd, 0); | 279 ASSERT_GE(fd, 0); |
281 base::FileDescriptor descriptor(fd, true); | 280 base::FileDescriptor descriptor(fd, true); |
282 | 281 |
283 IPC::Message* message = | 282 IPC::Message* message = new IPC::Message(0, 3); |
284 new IPC::Message(0, 3, IPC::Message::PRIORITY_NORMAL); | |
285 IPC::ParamTraits<base::FileDescriptor>::Write(message, descriptor); | 283 IPC::ParamTraits<base::FileDescriptor>::Write(message, descriptor); |
286 ASSERT_TRUE(in->Send(message)); | 284 ASSERT_TRUE(in->Send(message)); |
287 } | 285 } |
288 | 286 |
289 private: | 287 private: |
290 scoped_ptr<IPC::Channel> in, out; | 288 scoped_ptr<IPC::Channel> in, out; |
291 base::Thread* in_thread_; | 289 base::Thread* in_thread_; |
292 base::Thread* out_thread_; | 290 base::Thread* out_thread_; |
293 MyCBListener cb_listener_; | 291 MyCBListener cb_listener_; |
294 MyCBListener null_listener_; | 292 MyCBListener null_listener_; |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 base::WaitableEvent received_; | 369 base::WaitableEvent received_; |
372 }; | 370 }; |
373 | 371 |
374 TEST_F(IPCMultiSendingFdsTest, StressTest) { | 372 TEST_F(IPCMultiSendingFdsTest, StressTest) { |
375 Run(); | 373 Run(); |
376 } | 374 } |
377 | 375 |
378 } // namespace | 376 } // namespace |
379 | 377 |
380 #endif // defined(OS_POSIX) | 378 #endif // defined(OS_POSIX) |
OLD | NEW |