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

Side by Side Diff: mojo/shell/runner/host/child_process_host.cc

Issue 1679573002: Move shell interfaces into the shell.mojom namespace. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@delegate
Patch Set: . Created 4 years, 10 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "mojo/shell/runner/host/child_process_host.h" 5 #include "mojo/shell/runner/host/child_process_host.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 } 81 }
82 82
83 ChildProcessHost::ChildProcessHost(ScopedHandle channel) 83 ChildProcessHost::ChildProcessHost(ScopedHandle channel)
84 : launch_process_runner_(nullptr), 84 : launch_process_runner_(nullptr),
85 start_sandboxed_(false), 85 start_sandboxed_(false),
86 channel_info_(nullptr), 86 channel_info_(nullptr),
87 start_child_process_event_(false, false), 87 start_child_process_event_(false, false),
88 weak_factory_(this) { 88 weak_factory_(this) {
89 CHECK(channel.is_valid()); 89 CHECK(channel.is_valid());
90 ScopedMessagePipeHandle handle(MessagePipeHandle(channel.release().value())); 90 ScopedMessagePipeHandle handle(MessagePipeHandle(channel.release().value()));
91 controller_.Bind(InterfacePtrInfo<ChildController>(std::move(handle), 0u)); 91 controller_.Bind(
92 InterfacePtrInfo<mojom::ChildController>(std::move(handle), 0u));
92 } 93 }
93 94
94 ChildProcessHost::~ChildProcessHost() { 95 ChildProcessHost::~ChildProcessHost() {
95 if (!app_path_.empty()) 96 if (!app_path_.empty())
96 CHECK(!controller_) << "Destroying ChildProcessHost before calling Join"; 97 CHECK(!controller_) << "Destroying ChildProcessHost before calling Join";
97 } 98 }
98 99
99 void ChildProcessHost::Start(const ProcessReadyCallback& callback) { 100 void ChildProcessHost::Start(const ProcessReadyCallback& callback) {
100 DCHECK(!child_process_.IsValid()); 101 DCHECK(!child_process_.IsValid());
101 DCHECK(process_ready_callback_.is_null()); 102 DCHECK(process_ready_callback_.is_null());
(...skipping 29 matching lines...) Expand all
131 launch_process_runner_->PostTaskAndReply( 132 launch_process_runner_->PostTaskAndReply(
132 FROM_HERE, 133 FROM_HERE,
133 base::Bind(&ChildProcessHost::DoLaunch, base::Unretained(this)), 134 base::Bind(&ChildProcessHost::DoLaunch, base::Unretained(this)),
134 base::Bind(&ChildProcessHost::DidStart, weak_factory_.GetWeakPtr())); 135 base::Bind(&ChildProcessHost::DidStart, weak_factory_.GetWeakPtr()));
135 } 136 }
136 137
137 int ChildProcessHost::Join() { 138 int ChildProcessHost::Join() {
138 if (controller_) // We use this as a signal that Start was called. 139 if (controller_) // We use this as a signal that Start was called.
139 start_child_process_event_.Wait(); 140 start_child_process_event_.Wait();
140 141
141 controller_ = ChildControllerPtr(); 142 controller_ = mojom::ChildControllerPtr();
142 DCHECK(child_process_.IsValid()); 143 DCHECK(child_process_.IsValid());
143 144
144 // Ensure the child pipe is closed even if it wasn't yet connected to the 145 // Ensure the child pipe is closed even if it wasn't yet connected to the
145 // controller. 146 // controller.
146 pipe_holder_->Reject(); 147 pipe_holder_->Reject();
147 148
148 int rv = -1; 149 int rv = -1;
149 LOG_IF(ERROR, !child_process_.WaitForExit(&rv)) 150 LOG_IF(ERROR, !child_process_.WaitForExit(&rv))
150 << "Failed to wait for child process"; 151 << "Failed to wait for child process";
151 152
152 child_process_.Close(); 153 child_process_.Close();
153 154
154 return rv; 155 return rv;
155 } 156 }
156 157
157 void ChildProcessHost::StartApp( 158 void ChildProcessHost::StartApp(
158 InterfaceRequest<Application> application_request, 159 InterfaceRequest<mojom::Application> application_request,
159 const ChildController::StartAppCallback& on_app_complete) { 160 const mojom::ChildController::StartAppCallback& on_app_complete) {
160 DCHECK(controller_); 161 DCHECK(controller_);
161 162
162 on_app_complete_ = on_app_complete; 163 on_app_complete_ = on_app_complete;
163 controller_->StartApp( 164 controller_->StartApp(
164 std::move(application_request), 165 std::move(application_request),
165 base::Bind(&ChildProcessHost::AppCompleted, weak_factory_.GetWeakPtr())); 166 base::Bind(&ChildProcessHost::AppCompleted, weak_factory_.GetWeakPtr()));
166 } 167 }
167 168
168 void ChildProcessHost::ExitNow(int32_t exit_code) { 169 void ChildProcessHost::ExitNow(int32_t exit_code) {
169 DCHECK(controller_); 170 DCHECK(controller_);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 void ChildProcessHost::DidCreateChannel(embedder::ChannelInfo* channel_info) { 281 void ChildProcessHost::DidCreateChannel(embedder::ChannelInfo* channel_info) {
281 DVLOG(2) << "AppChildProcessHost::DidCreateChannel()"; 282 DVLOG(2) << "AppChildProcessHost::DidCreateChannel()";
282 283
283 DCHECK(channel_info || 284 DCHECK(channel_info ||
284 base::CommandLine::ForCurrentProcess()->HasSwitch("use-new-edk")); 285 base::CommandLine::ForCurrentProcess()->HasSwitch("use-new-edk"));
285 channel_info_ = channel_info; 286 channel_info_ = channel_info;
286 } 287 }
287 288
288 void ChildProcessHost::OnMessagePipeCreated() { 289 void ChildProcessHost::OnMessagePipeCreated() {
289 controller_.Bind( 290 controller_.Bind(
290 InterfacePtrInfo<ChildController>(pipe_holder_->PassPipe(), 0u)); 291 InterfacePtrInfo<mojom::ChildController>(pipe_holder_->PassPipe(), 0u));
291 MaybeNotifyProcessReady(); 292 MaybeNotifyProcessReady();
292 } 293 }
293 294
294 void ChildProcessHost::MaybeNotifyProcessReady() { 295 void ChildProcessHost::MaybeNotifyProcessReady() {
295 if (controller_.is_bound() && child_process_.IsValid()) 296 if (controller_.is_bound() && child_process_.IsValid())
296 process_ready_callback_.Run(child_process_.Pid()); 297 process_ready_callback_.Run(child_process_.Pid());
297 } 298 }
298 299
299 // static 300 // static
300 void ChildProcessHost::OnParentMessagePipeCreated( 301 void ChildProcessHost::OnParentMessagePipeCreated(
301 scoped_refptr<PipeHolder> holder, 302 scoped_refptr<PipeHolder> holder,
302 scoped_refptr<base::TaskRunner> callback_task_runner, 303 scoped_refptr<base::TaskRunner> callback_task_runner,
303 const base::Closure& callback, 304 const base::Closure& callback,
304 ScopedMessagePipeHandle pipe) { 305 ScopedMessagePipeHandle pipe) {
305 holder->SetPipe(std::move(pipe)); 306 holder->SetPipe(std::move(pipe));
306 callback_task_runner->PostTask(FROM_HERE, callback); 307 callback_task_runner->PostTask(FROM_HERE, callback);
307 } 308 }
308 309
309 } // namespace shell 310 } // namespace shell
310 } // namespace mojo 311 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/shell/runner/host/child_process_host.h ('k') | mojo/shell/runner/host/in_process_native_runner.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698