| 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 "ipc/ipc_test_base.h" | 5 #include "ipc/ipc_test_base.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/process/kill.h" | 10 #include "base/process/kill.h" |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 DCHECK(channel_.get()); | 74 DCHECK(channel_.get()); |
| 75 channel_.reset(); | 75 channel_.reset(); |
| 76 } | 76 } |
| 77 | 77 |
| 78 void IPCTestBase::CreateChannelFromChannelHandle( | 78 void IPCTestBase::CreateChannelFromChannelHandle( |
| 79 const IPC::ChannelHandle& channel_handle, | 79 const IPC::ChannelHandle& channel_handle, |
| 80 IPC::Listener* listener) { | 80 IPC::Listener* listener) { |
| 81 CHECK(!channel_.get()); | 81 CHECK(!channel_.get()); |
| 82 CHECK(!channel_proxy_.get()); | 82 CHECK(!channel_proxy_.get()); |
| 83 channel_ = CreateChannelFactory( | 83 channel_ = CreateChannelFactory( |
| 84 channel_handle, task_runner().get())->BuildChannel(listener); | 84 channel_handle, io_task_runner().get())->BuildChannel(listener); |
| 85 } | 85 } |
| 86 | 86 |
| 87 void IPCTestBase::CreateChannelProxy( | 87 void IPCTestBase::CreateChannelProxy( |
| 88 IPC::Listener* listener, | 88 IPC::Listener* listener, |
| 89 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) { | 89 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) { |
| 90 CHECK(!channel_.get()); | 90 CHECK(!channel_.get()); |
| 91 CHECK(!channel_proxy_.get()); | 91 CHECK(!channel_proxy_.get()); |
| 92 channel_proxy_ = IPC::ChannelProxy::Create( | 92 channel_proxy_ = IPC::ChannelProxy::Create( |
| 93 CreateChannelFactory(GetTestChannelHandle(), ipc_task_runner.get()), | 93 CreateChannelFactory(GetTestChannelHandle(), ipc_task_runner.get()), |
| 94 listener, ipc_task_runner); | 94 listener, ipc_task_runner); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 118 | 118 |
| 119 bool IPCTestBase::StartClientWithFD(int ipcfd) { | 119 bool IPCTestBase::StartClientWithFD(int ipcfd) { |
| 120 DCHECK(!client_process_.IsValid()); | 120 DCHECK(!client_process_.IsValid()); |
| 121 | 121 |
| 122 base::FileHandleMappingVector fds_to_map; | 122 base::FileHandleMappingVector fds_to_map; |
| 123 if (ipcfd > -1) | 123 if (ipcfd > -1) |
| 124 fds_to_map.push_back(std::pair<int, int>(ipcfd, | 124 fds_to_map.push_back(std::pair<int, int>(ipcfd, |
| 125 kPrimaryIPCChannel + base::GlobalDescriptors::kBaseDescriptor)); | 125 kPrimaryIPCChannel + base::GlobalDescriptors::kBaseDescriptor)); |
| 126 base::LaunchOptions options; | 126 base::LaunchOptions options; |
| 127 options.fds_to_remap = &fds_to_map; | 127 options.fds_to_remap = &fds_to_map; |
| 128 AboutToSpawnChild(&options); |
| 128 client_process_ = SpawnChildWithOptions(GetTestMainName(), options); | 129 client_process_ = SpawnChildWithOptions(GetTestMainName(), options); |
| 129 | 130 |
| 130 return DidStartClient(); | 131 return DidStartClient(); |
| 131 } | 132 } |
| 132 | 133 |
| 133 #elif defined(OS_WIN) | 134 #elif defined(OS_WIN) |
| 134 | 135 |
| 135 bool IPCTestBase::StartClient() { | 136 bool IPCTestBase::StartClient() { |
| 136 DCHECK(!client_process_.IsValid()); | 137 DCHECK(!client_process_.IsValid()); |
| 137 client_process_ = SpawnChild(GetTestMainName()); | 138 base::LaunchOptions options; |
| 139 base::HandlesToInheritVector handles_to_inherit; |
| 140 options.handles_to_inherit = &handles_to_inherit; |
| 141 AboutToSpawnChild(&options); |
| 142 client_process_ = SpawnChildWithOptions(GetTestMainName(), options); |
| 138 return DidStartClient(); | 143 return DidStartClient(); |
| 139 } | 144 } |
| 140 | 145 |
| 141 #endif | 146 #endif |
| 142 | 147 |
| 143 bool IPCTestBase::WaitForClientShutdown() { | 148 bool IPCTestBase::WaitForClientShutdown() { |
| 144 DCHECK(client_process_.IsValid()); | 149 DCHECK(client_process_.IsValid()); |
| 145 | 150 |
| 146 int exit_code; | 151 int exit_code; |
| 147 bool rv = client_process_.WaitForExitWithTimeout( | 152 bool rv = client_process_.WaitForExitWithTimeout( |
| 148 base::TimeDelta::FromSeconds(5), &exit_code); | 153 base::TimeDelta::FromSeconds(5), &exit_code); |
| 149 client_process_.Close(); | 154 client_process_.Close(); |
| 150 return rv; | 155 return rv; |
| 151 } | 156 } |
| 152 | 157 |
| 153 IPC::ChannelHandle IPCTestBase::GetTestChannelHandle() { | 158 IPC::ChannelHandle IPCTestBase::GetTestChannelHandle() { |
| 154 return GetChannelName(test_client_name_); | 159 return GetChannelName(test_client_name_); |
| 155 } | 160 } |
| 156 | 161 |
| 157 scoped_refptr<base::SequencedTaskRunner> IPCTestBase::task_runner() { | 162 scoped_refptr<base::TaskRunner> IPCTestBase::io_task_runner() { |
| 158 return message_loop_->task_runner(); | 163 return message_loop_->task_runner(); |
| 159 } | 164 } |
| 160 | 165 |
| 161 scoped_ptr<IPC::ChannelFactory> IPCTestBase::CreateChannelFactory( | 166 scoped_ptr<IPC::ChannelFactory> IPCTestBase::CreateChannelFactory( |
| 162 const IPC::ChannelHandle& handle, | 167 const IPC::ChannelHandle& handle, |
| 163 base::SequencedTaskRunner* runner) { | 168 base::TaskRunner* runner) { |
| 164 return IPC::ChannelFactory::Create(handle, IPC::Channel::MODE_SERVER); | 169 return IPC::ChannelFactory::Create(handle, IPC::Channel::MODE_SERVER); |
| 165 } | 170 } |
| OLD | NEW |