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

Side by Side Diff: services/service_manager/runner/host/service_process_launcher.cc

Issue 2573283002: Use a static catalog manifest for the standalone Mash runner (Closed)
Patch Set: . Created 3 years, 12 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "services/service_manager/runner/host/service_process_launcher.h" 5 #include "services/service_manager/runner/host/service_process_launcher.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/base_paths.h" 9 #include "base/base_paths.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 19 matching lines...) Expand all
30 #endif 30 #endif
31 31
32 #if defined(OS_WIN) 32 #if defined(OS_WIN)
33 #include "base/win/windows_version.h" 33 #include "base/win/windows_version.h"
34 #endif 34 #endif
35 35
36 #if defined(OS_MACOSX) 36 #if defined(OS_MACOSX)
37 #include "services/service_manager/public/cpp/standalone_service/mach_broker.h" 37 #include "services/service_manager/public/cpp/standalone_service/mach_broker.h"
38 #endif 38 #endif
39 39
40 #if defined(OS_WIN) && defined(COMPONENT_BUILD)
41 #include <windows.h>
42
43 namespace {
44
45 class ScopedDllDirectoryOverride {
46 public:
47 explicit ScopedDllDirectoryOverride(const base::FilePath& path) {
48 SetDllDirectory(path.value().c_str());
49 }
50
51 ~ScopedDllDirectoryOverride() {
52 SetDllDirectory(NULL);
53 }
54
55 private:
56 DISALLOW_COPY_AND_ASSIGN(ScopedDllDirectoryOverride);
57 };
58
59 } // namespace
60 #endif // defined(OS_WIN) && defined(COMPONENT_BUILD)
61
62 namespace service_manager { 40 namespace service_manager {
63 41
64 ServiceProcessLauncher::ServiceProcessLauncher( 42 ServiceProcessLauncher::ServiceProcessLauncher(
65 base::TaskRunner* launch_process_runner, 43 base::TaskRunner* launch_process_runner,
66 Delegate* delegate, 44 Delegate* delegate,
67 const base::FilePath& service_path) 45 const base::FilePath& service_path)
68 : launch_process_runner_(launch_process_runner), 46 : launch_process_runner_(launch_process_runner),
69 delegate_(delegate), 47 delegate_(delegate),
70 start_sandboxed_(false), 48 start_sandboxed_(false),
71 service_path_(service_path), 49 service_path_(service_path),
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 if (!child_process_.IsValid()) { 193 if (!child_process_.IsValid()) {
216 LOG(ERROR) << "Starting the process with a sandbox failed. Missing kernel" 194 LOG(ERROR) << "Starting the process with a sandbox failed. Missing kernel"
217 << " support."; 195 << " support.";
218 } 196 }
219 } else 197 } else
220 #endif 198 #endif
221 { 199 {
222 #if defined(OS_MACOSX) 200 #if defined(OS_MACOSX)
223 MachBroker* mach_broker = MachBroker::GetInstance(); 201 MachBroker* mach_broker = MachBroker::GetInstance();
224 base::AutoLock locker(mach_broker->GetLock()); 202 base::AutoLock locker(mach_broker->GetLock());
225 #elif defined(OS_WIN) && defined(COMPONENT_BUILD)
226 ScopedDllDirectoryOverride dll_override(exe_dir);
227 #endif 203 #endif
228 child_process_ = base::LaunchProcess(*child_command_line, options); 204 child_process_ = base::LaunchProcess(*child_command_line, options);
229 #if defined(OS_MACOSX) 205 #if defined(OS_MACOSX)
230 mach_broker->ExpectPid(child_process_.Handle()); 206 mach_broker->ExpectPid(child_process_.Handle());
231 #endif 207 #endif
232 } 208 }
233 209
234 if (child_process_.IsValid()) { 210 if (child_process_.IsValid()) {
235 DVLOG(0) << "Launched child process pid=" << child_process_.Pid() 211 DVLOG(0) << "Launched child process pid=" << child_process_.Pid()
236 << ", instance=" << target_.instance() 212 << ", instance=" << target_.instance()
237 << ", name=" << target_.name() 213 << ", name=" << target_.name()
238 << ", user_id=" << target_.user_id(); 214 << ", user_id=" << target_.user_id();
239 215
240 if (mojo_ipc_channel_.get()) { 216 if (mojo_ipc_channel_.get()) {
241 mojo_ipc_channel_->ChildProcessLaunched(); 217 mojo_ipc_channel_->ChildProcessLaunched();
242 mojo::edk::ChildProcessLaunched( 218 mojo::edk::ChildProcessLaunched(
243 child_process_.Handle(), 219 child_process_.Handle(),
244 mojo::edk::ScopedPlatformHandle(mojo::edk::PlatformHandle( 220 mojo::edk::ScopedPlatformHandle(mojo::edk::PlatformHandle(
245 mojo_ipc_channel_->PassServerHandle().release().handle)), 221 mojo_ipc_channel_->PassServerHandle().release().handle)),
246 child_token_); 222 child_token_);
247 } 223 }
248 } 224 }
249 start_child_process_event_.Signal(); 225 start_child_process_event_.Signal();
250 } 226 }
251 227
252 } // namespace service_manager 228 } // namespace service_manager
OLDNEW
« no previous file with comments | « services/service_manager/public/interfaces/resolver.mojom ('k') | services/service_manager/service_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698