Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(453)

Side by Side Diff: ipc/ipc_send_fds_test.cc

Issue 1127153003: ipc: Remove use of MessageLoopProxy and deprecated MessageLoop APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ipc/ipc_perftest_support.cc ('k') | ipc/ipc_sync_channel_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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>
11 } 11 }
12 #endif 12 #endif
13 #include <fcntl.h> 13 #include <fcntl.h>
14 #include <sys/socket.h> 14 #include <sys/socket.h>
15 #include <sys/stat.h> 15 #include <sys/stat.h>
16 #include <unistd.h> 16 #include <unistd.h>
17 17
18 #include <queue> 18 #include <queue>
19 19
20 #include "base/callback.h" 20 #include "base/callback.h"
21 #include "base/file_descriptor_posix.h" 21 #include "base/file_descriptor_posix.h"
22 #include "base/message_loop/message_loop.h" 22 #include "base/location.h"
23 #include "base/pickle.h" 23 #include "base/pickle.h"
24 #include "base/posix/eintr_wrapper.h" 24 #include "base/posix/eintr_wrapper.h"
25 #include "base/single_thread_task_runner.h"
25 #include "base/synchronization/waitable_event.h" 26 #include "base/synchronization/waitable_event.h"
26 #include "ipc/ipc_message_attachment_set.h" 27 #include "ipc/ipc_message_attachment_set.h"
27 #include "ipc/ipc_message_utils.h" 28 #include "ipc/ipc_message_utils.h"
28 #include "ipc/ipc_test_base.h" 29 #include "ipc/ipc_test_base.h"
29 30
30 #if defined(OS_POSIX) 31 #if defined(OS_POSIX)
31 #include "base/macros.h" 32 #include "base/macros.h"
32 #endif 33 #endif
33 34
34 namespace { 35 namespace {
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 } 244 }
244 245
245 void Init() { 246 void Init() {
246 IPC::ChannelHandle in_handle("IN"); 247 IPC::ChannelHandle in_handle("IN");
247 in = IPC::Channel::CreateServer(in_handle, &null_listener_); 248 in = IPC::Channel::CreateServer(in_handle, &null_listener_);
248 IPC::ChannelHandle out_handle( 249 IPC::ChannelHandle out_handle(
249 "OUT", base::FileDescriptor(in->TakeClientFileDescriptor())); 250 "OUT", base::FileDescriptor(in->TakeClientFileDescriptor()));
250 out = IPC::Channel::CreateClient(out_handle, &cb_listener_); 251 out = IPC::Channel::CreateClient(out_handle, &cb_listener_);
251 // PostTask the connect calls to make sure the callbacks happens 252 // PostTask the connect calls to make sure the callbacks happens
252 // on the right threads. 253 // on the right threads.
253 in_thread_->message_loop()->PostTask( 254 in_thread_->task_runner()->PostTask(
254 FROM_HERE, 255 FROM_HERE, base::Bind(&PipeChannelHelper::Connect, in.get()));
255 base::Bind(&PipeChannelHelper::Connect, in.get())); 256 out_thread_->task_runner()->PostTask(
256 out_thread_->message_loop()->PostTask( 257 FROM_HERE, base::Bind(&PipeChannelHelper::Connect, out.get()));
257 FROM_HERE,
258 base::Bind(&PipeChannelHelper::Connect, out.get()));
259 } 258 }
260 259
261 static void DestroyChannel(scoped_ptr<IPC::Channel> *c, 260 static void DestroyChannel(scoped_ptr<IPC::Channel> *c,
262 base::WaitableEvent *event) { 261 base::WaitableEvent *event) {
263 c->reset(0); 262 c->reset(0);
264 event->Signal(); 263 event->Signal();
265 } 264 }
266 265
267 ~PipeChannelHelper() { 266 ~PipeChannelHelper() {
268 base::WaitableEvent a(true, false); 267 base::WaitableEvent a(true, false);
269 base::WaitableEvent b(true, false); 268 base::WaitableEvent b(true, false);
270 in_thread_->message_loop()->PostTask( 269 in_thread_->task_runner()->PostTask(
271 FROM_HERE, 270 FROM_HERE, base::Bind(&PipeChannelHelper::DestroyChannel, &in, &a));
272 base::Bind(&PipeChannelHelper::DestroyChannel, &in, &a)); 271 out_thread_->task_runner()->PostTask(
273 out_thread_->message_loop()->PostTask( 272 FROM_HERE, base::Bind(&PipeChannelHelper::DestroyChannel, &out, &b));
274 FROM_HERE,
275 base::Bind(&PipeChannelHelper::DestroyChannel, &out, &b));
276 a.Wait(); 273 a.Wait();
277 b.Wait(); 274 b.Wait();
278 } 275 }
279 276
280 static void Connect(IPC::Channel *channel) { 277 static void Connect(IPC::Channel *channel) {
281 EXPECT_TRUE(channel->Connect()); 278 EXPECT_TRUE(channel->Connect());
282 } 279 }
283 280
284 void Send(int fd) { 281 void Send(int fd) {
285 CHECK_EQ(base::MessageLoop::current(), in_thread_->message_loop()); 282 CHECK_EQ(base::MessageLoop::current(), in_thread_->message_loop());
(...skipping 28 matching lines...) Expand all
314 class IPCMultiSendingFdsTest : public testing::Test { 311 class IPCMultiSendingFdsTest : public testing::Test {
315 public: 312 public:
316 IPCMultiSendingFdsTest() : received_(true, false) {} 313 IPCMultiSendingFdsTest() : received_(true, false) {}
317 314
318 void Producer(PipeChannelHelper* dest, 315 void Producer(PipeChannelHelper* dest,
319 base::Thread* t, 316 base::Thread* t,
320 int pipes_to_send) { 317 int pipes_to_send) {
321 for (int i = 0; i < pipes_to_send; i++) { 318 for (int i = 0; i < pipes_to_send; i++) {
322 received_.Reset(); 319 received_.Reset();
323 std::pair<int, int> pipe_fds = make_socket_pair(); 320 std::pair<int, int> pipe_fds = make_socket_pair();
324 t->message_loop()->PostTask( 321 t->task_runner()->PostTask(
325 FROM_HERE, 322 FROM_HERE, base::Bind(&PipeChannelHelper::Send,
326 base::Bind(&PipeChannelHelper::Send, 323 base::Unretained(dest), pipe_fds.second));
327 base::Unretained(dest),
328 pipe_fds.second));
329 char tmp = 'x'; 324 char tmp = 'x';
330 CHECK_EQ(1, HANDLE_EINTR(write(pipe_fds.first, &tmp, 1))); 325 CHECK_EQ(1, HANDLE_EINTR(write(pipe_fds.first, &tmp, 1)));
331 CHECK_EQ(0, IGNORE_EINTR(close(pipe_fds.first))); 326 CHECK_EQ(0, IGNORE_EINTR(close(pipe_fds.first)));
332 received_.Wait(); 327 received_.Wait();
333 } 328 }
334 } 329 }
335 330
336 void ConsumerHandleFD(int fd) { 331 void ConsumerHandleFD(int fd) {
337 char tmp = 'y'; 332 char tmp = 'y';
338 CHECK_EQ(1, HANDLE_EINTR(read(fd, &tmp, 1))); 333 CHECK_EQ(1, HANDLE_EINTR(read(fd, &tmp, 1)));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 base::WaitableEvent received_; 373 base::WaitableEvent received_;
379 }; 374 };
380 375
381 TEST_F(IPCMultiSendingFdsTest, StressTest) { 376 TEST_F(IPCMultiSendingFdsTest, StressTest) {
382 Run(); 377 Run();
383 } 378 }
384 379
385 } // namespace 380 } // namespace
386 381
387 #endif // defined(OS_POSIX) 382 #endif // defined(OS_POSIX)
OLDNEW
« no previous file with comments | « ipc/ipc_perftest_support.cc ('k') | ipc/ipc_sync_channel_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698