| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include <fcntl.h> | 7 #include <fcntl.h> |
| 8 #include <sys/mman.h> | 8 #include <sys/mman.h> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 | 376 |
| 377 if (!broker_.get()) | 377 if (!broker_.get()) |
| 378 SetBroker(new IPC::AttachmentBrokerUnprivilegedMac); | 378 SetBroker(new IPC::AttachmentBrokerUnprivilegedMac); |
| 379 | 379 |
| 380 broker_->AddObserver(&observer_); | 380 broker_->AddObserver(&observer_); |
| 381 CreateChannel(&proxy_listener_); | 381 CreateChannel(&proxy_listener_); |
| 382 broker_->DesignateBrokerCommunicationChannel(channel()); | 382 broker_->DesignateBrokerCommunicationChannel(channel()); |
| 383 ASSERT_TRUE(ConnectChannel()); | 383 ASSERT_TRUE(ConnectChannel()); |
| 384 ASSERT_TRUE(StartClient()); | 384 ASSERT_TRUE(StartClient()); |
| 385 | 385 |
| 386 client_port_.reset(IPC::ReceiveMachPort(server_port_).release()); | 386 client_port_.reset(IPC::ReceiveMachPort(server_port_.get()).release()); |
| 387 IPC::SendMachPort(client_port_, mach_task_self(), MACH_MSG_TYPE_COPY_SEND); | 387 IPC::SendMachPort( |
| 388 client_port_.get(), mach_task_self(), MACH_MSG_TYPE_COPY_SEND); |
| 388 active_names_at_start_ = IPC::GetActiveNameCount(); | 389 active_names_at_start_ = IPC::GetActiveNameCount(); |
| 389 get_proxy_listener()->set_listener(&result_listener_); | 390 get_proxy_listener()->set_listener(&result_listener_); |
| 390 } | 391 } |
| 391 | 392 |
| 392 void CheckChildResult() { | 393 void CheckChildResult() { |
| 393 ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED, | 394 ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED, |
| 394 get_proxy_listener()->get_reason()); | 395 get_proxy_listener()->get_reason()); |
| 395 ASSERT_EQ(get_result_listener()->get_result(), RESULT_SUCCESS); | 396 ASSERT_EQ(get_result_listener()->get_result(), RESULT_SUCCESS); |
| 396 } | 397 } |
| 397 | 398 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 // globals that must live at least as long as the test. | 464 // globals that must live at least as long as the test. |
| 464 scoped_ptr<ChildProcessGlobals> CommonChildProcessSetUp() { | 465 scoped_ptr<ChildProcessGlobals> CommonChildProcessSetUp() { |
| 465 base::CommandLine cmd_line = *base::CommandLine::ForCurrentProcess(); | 466 base::CommandLine cmd_line = *base::CommandLine::ForCurrentProcess(); |
| 466 std::string service_name = | 467 std::string service_name = |
| 467 cmd_line.GetSwitchValueASCII(g_service_switch_name); | 468 cmd_line.GetSwitchValueASCII(g_service_switch_name); |
| 468 base::mac::ScopedMachSendRight server_port( | 469 base::mac::ScopedMachSendRight server_port( |
| 469 IPC::LookupServer(service_name.c_str())); | 470 IPC::LookupServer(service_name.c_str())); |
| 470 base::mac::ScopedMachReceiveRight client_port(IPC::MakeReceivingPort()); | 471 base::mac::ScopedMachReceiveRight client_port(IPC::MakeReceivingPort()); |
| 471 | 472 |
| 472 // Send the port that this process is listening on to the server. | 473 // Send the port that this process is listening on to the server. |
| 473 IPC::SendMachPort(server_port, client_port, MACH_MSG_TYPE_MAKE_SEND); | 474 IPC::SendMachPort( |
| 475 server_port.get(), client_port.get(), MACH_MSG_TYPE_MAKE_SEND); |
| 474 | 476 |
| 475 // Receive the task port of the server process. | 477 // Receive the task port of the server process. |
| 476 base::mac::ScopedMachSendRight server_task_port( | 478 base::mac::ScopedMachSendRight server_task_port( |
| 477 IPC::ReceiveMachPort(client_port)); | 479 IPC::ReceiveMachPort(client_port.get())); |
| 478 | 480 |
| 479 scoped_ptr<ChildProcessGlobals> globals(new ChildProcessGlobals); | 481 scoped_ptr<ChildProcessGlobals> globals(new ChildProcessGlobals); |
| 480 globals->port_provider.InsertEntry(getppid(), server_task_port); | 482 globals->port_provider.InsertEntry(getppid(), server_task_port.get()); |
| 481 globals->broker.SetPortProvider(&globals->port_provider); | 483 globals->broker.SetPortProvider(&globals->port_provider); |
| 482 globals->server_task_port.reset(server_task_port.release()); | 484 globals->server_task_port.reset(server_task_port.release()); |
| 483 return globals; | 485 return globals; |
| 484 } | 486 } |
| 485 | 487 |
| 486 int CommonPrivilegedProcessMain(OnMessageReceivedCallback callback, | 488 int CommonPrivilegedProcessMain(OnMessageReceivedCallback callback, |
| 487 const char* channel_name) { | 489 const char* channel_name) { |
| 488 LOG(INFO) << "Privileged process start."; | 490 LOG(INFO) << "Privileged process start."; |
| 489 scoped_ptr<ChildProcessGlobals> globals(CommonChildProcessSetUp()); | 491 scoped_ptr<ChildProcessGlobals> globals(CommonChildProcessSetUp()); |
| 490 | 492 |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 829 // Do nothing special. The default behavior already runs the | 831 // Do nothing special. The default behavior already runs the |
| 830 // AttachmentBrokerPrivilegedMac. | 832 // AttachmentBrokerPrivilegedMac. |
| 831 } | 833 } |
| 832 | 834 |
| 833 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendSharedMemoryHandleToSelf) { | 835 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendSharedMemoryHandleToSelf) { |
| 834 return CommonPrivilegedProcessMain(&SendSharedMemoryHandleToSelfCallback, | 836 return CommonPrivilegedProcessMain(&SendSharedMemoryHandleToSelfCallback, |
| 835 "SendSharedMemoryHandleToSelf"); | 837 "SendSharedMemoryHandleToSelf"); |
| 836 } | 838 } |
| 837 | 839 |
| 838 } // namespace | 840 } // namespace |
| OLD | NEW |