| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/common/service_process_util_posix.h" | 5 #include "chrome/common/service_process_util_posix.h" |
| 6 | 6 |
| 7 #import <Foundation/Foundation.h> | 7 #import <Foundation/Foundation.h> |
| 8 #include <launch.h> | 8 #include <launch.h> |
| 9 | 9 |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 CFErrorRef err = NULL; | 172 CFErrorRef err = NULL; |
| 173 CFDictionaryRef dict = | 173 CFDictionaryRef dict = |
| 174 Launchd::GetInstance()->CopyDictionaryByCheckingIn(&err); | 174 Launchd::GetInstance()->CopyDictionaryByCheckingIn(&err); |
| 175 | 175 |
| 176 if (!dict) { | 176 if (!dict) { |
| 177 LOG(ERROR) << "CopyLaunchdDictionaryByCheckingIn: " << err; | 177 LOG(ERROR) << "CopyLaunchdDictionaryByCheckingIn: " << err; |
| 178 CFRelease(err); | 178 CFRelease(err); |
| 179 return false; | 179 return false; |
| 180 } | 180 } |
| 181 state_->launchd_conf_.reset(dict); | 181 state_->launchd_conf_.reset(dict); |
| 182 state_->ui_message_loop_= base::MessageLoopProxy::CreateForCurrentThread(); | |
| 183 return true; | 182 return true; |
| 184 } | 183 } |
| 185 | 184 |
| 186 IPC::ChannelHandle ServiceProcessState::GetServiceProcessChannel() { | 185 IPC::ChannelHandle ServiceProcessState::GetServiceProcessChannel() { |
| 187 CHECK(state_); | 186 CHECK(state_); |
| 188 NSDictionary *ns_launchd_conf = base::mac::CFToNSCast(state_->launchd_conf_); | 187 NSDictionary *ns_launchd_conf = base::mac::CFToNSCast(state_->launchd_conf_); |
| 189 NSDictionary* socket_dict = | 188 NSDictionary* socket_dict = |
| 190 [ns_launchd_conf objectForKey:@ LAUNCH_JOBKEY_SOCKETS]; | 189 [ns_launchd_conf objectForKey:@ LAUNCH_JOBKEY_SOCKETS]; |
| 191 NSArray* sockets = | 190 NSArray* sockets = |
| 192 [socket_dict objectForKey:GetServiceProcessLaunchDSocketKey()]; | 191 [socket_dict objectForKey:GetServiceProcessLaunchDSocketKey()]; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 return false; | 315 return false; |
| 317 } | 316 } |
| 318 | 317 |
| 319 FilePath executable_path = FilePath([exe_path fileSystemRepresentation]); | 318 FilePath executable_path = FilePath([exe_path fileSystemRepresentation]); |
| 320 scoped_ptr<ExecFilePathWatcherDelegate> delegate( | 319 scoped_ptr<ExecFilePathWatcherDelegate> delegate( |
| 321 new ExecFilePathWatcherDelegate); | 320 new ExecFilePathWatcherDelegate); |
| 322 if (!delegate->Init(executable_path)) { | 321 if (!delegate->Init(executable_path)) { |
| 323 LOG(ERROR) << "executable_watcher_.Init " << executable_path.value(); | 322 LOG(ERROR) << "executable_watcher_.Init " << executable_path.value(); |
| 324 return false; | 323 return false; |
| 325 } | 324 } |
| 326 if (!executable_watcher_.Watch(executable_path, | 325 if (!executable_watcher_.Watch(executable_path, delegate.release())) { |
| 327 delegate.release(), | |
| 328 ui_message_loop_)) { | |
| 329 LOG(ERROR) << "executable_watcher_.watch " << executable_path.value(); | 326 LOG(ERROR) << "executable_watcher_.watch " << executable_path.value(); |
| 330 return false; | 327 return false; |
| 331 } | 328 } |
| 332 return true; | 329 return true; |
| 333 } | 330 } |
| 334 | 331 |
| 335 bool ExecFilePathWatcherDelegate::Init(const FilePath& path) { | 332 bool ExecFilePathWatcherDelegate::Init(const FilePath& path) { |
| 336 return base::mac::FSRefFromPath(path.value(), &executable_fsref_); | 333 return base::mac::FSRefFromPath(path.value(), &executable_fsref_); |
| 337 } | 334 } |
| 338 | 335 |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 CFErrorRef err = NULL; | 433 CFErrorRef err = NULL; |
| 437 if (!Launchd::GetInstance()->RemoveJob(label, &err)) { | 434 if (!Launchd::GetInstance()->RemoveJob(label, &err)) { |
| 438 base::mac::ScopedCFTypeRef<CFErrorRef> scoped_err(err); | 435 base::mac::ScopedCFTypeRef<CFErrorRef> scoped_err(err); |
| 439 LOG(ERROR) << "RemoveJob " << err; | 436 LOG(ERROR) << "RemoveJob " << err; |
| 440 // Exiting with zero, so launchd doesn't restart the process. | 437 // Exiting with zero, so launchd doesn't restart the process. |
| 441 exit(0); | 438 exit(0); |
| 442 } | 439 } |
| 443 } | 440 } |
| 444 } | 441 } |
| 445 } | 442 } |
| OLD | NEW |