| 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 "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> |
| 11 | 11 |
| 12 #include "base/bind.h" | 12 #include "base/bind.h" |
| 13 #include "base/command_line.h" | 13 #include "base/command_line.h" |
| 14 #include "base/files/file_path.h" | 14 #include "base/files/file_path.h" |
| 15 #include "base/mac/bundle_locations.h" | 15 #include "base/mac/bundle_locations.h" |
| 16 #include "base/mac/foundation_util.h" | 16 #include "base/mac/foundation_util.h" |
| 17 #include "base/mac/mac_util.h" | 17 #include "base/mac/mac_util.h" |
| 18 #include "base/mac/scoped_nsautorelease_pool.h" | 18 #include "base/mac/scoped_nsautorelease_pool.h" |
| 19 #include "base/mac/scoped_nsobject.h" | 19 #include "base/mac/scoped_nsobject.h" |
| 20 #include "base/metrics/histogram_macros.h" | 20 #include "base/metrics/histogram_macros.h" |
| 21 #include "base/path_service.h" | 21 #include "base/path_service.h" |
| 22 #include "base/strings/string_util.h" | 22 #include "base/strings/string_util.h" |
| 23 #include "base/strings/stringprintf.h" | 23 #include "base/strings/stringprintf.h" |
| 24 #include "base/strings/sys_string_conversions.h" | 24 #include "base/strings/sys_string_conversions.h" |
| 25 #include "base/threading/thread_restrictions.h" | 25 #include "base/threading/thread_restrictions.h" |
| 26 #include "base/version.h" | 26 #include "base/version.h" |
| 27 #include "chrome/common/chrome_paths.h" | 27 #include "chrome/common/chrome_paths.h" |
| 28 #include "chrome/common/chrome_switches.h" | 28 #include "chrome/common/chrome_switches.h" |
| 29 #include "chrome/common/chrome_version_info.h" | |
| 30 #include "chrome/common/mac/launchd.h" | 29 #include "chrome/common/mac/launchd.h" |
| 30 #include "components/version_info/version_info.h" |
| 31 #include "ipc/unix_domain_socket_util.h" | 31 #include "ipc/unix_domain_socket_util.h" |
| 32 | 32 |
| 33 using ::base::FilePathWatcher; | 33 using ::base::FilePathWatcher; |
| 34 | 34 |
| 35 namespace { | 35 namespace { |
| 36 | 36 |
| 37 #define kServiceProcessSessionType "Aqua" | 37 #define kServiceProcessSessionType "Aqua" |
| 38 | 38 |
| 39 CFStringRef CopyServiceProcessLaunchDName() { | 39 CFStringRef CopyServiceProcessLaunchDName() { |
| 40 base::mac::ScopedNSAutoreleasePool pool; | 40 base::mac::ScopedNSAutoreleasePool pool; |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 std::string version; | 201 std::string version; |
| 202 pid_t pid; | 202 pid_t pid; |
| 203 if (!GetServiceProcessData(&version, &pid)) { | 203 if (!GetServiceProcessData(&version, &pid)) { |
| 204 return false; | 204 return false; |
| 205 } | 205 } |
| 206 Version service_version(version); | 206 Version service_version(version); |
| 207 bool ready = true; | 207 bool ready = true; |
| 208 if (!service_version.IsValid()) { | 208 if (!service_version.IsValid()) { |
| 209 ready = false; | 209 ready = false; |
| 210 } else { | 210 } else { |
| 211 chrome::VersionInfo version_info; | 211 Version running_version(version_info::GetVersionNumber()); |
| 212 Version running_version(version_info.Version()); | |
| 213 if (!running_version.IsValid()) { | 212 if (!running_version.IsValid()) { |
| 214 // Our own version is invalid. This is an error case. Pretend that we | 213 // Our own version is invalid. This is an error case. Pretend that we |
| 215 // are out of date. | 214 // are out of date. |
| 216 NOTREACHED(); | 215 NOTREACHED(); |
| 217 ready = true; | 216 ready = true; |
| 218 } else if (running_version.CompareTo(service_version) > 0) { | 217 } else if (running_version.CompareTo(service_version) > 0) { |
| 219 ready = false; | 218 ready = false; |
| 220 } else { | 219 } else { |
| 221 ready = true; | 220 ready = true; |
| 222 } | 221 } |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 437 CFErrorRef err = NULL; | 436 CFErrorRef err = NULL; |
| 438 if (!Launchd::GetInstance()->RemoveJob(label, &err)) { | 437 if (!Launchd::GetInstance()->RemoveJob(label, &err)) { |
| 439 base::ScopedCFTypeRef<CFErrorRef> scoped_err(err); | 438 base::ScopedCFTypeRef<CFErrorRef> scoped_err(err); |
| 440 DLOG(ERROR) << "RemoveJob " << err; | 439 DLOG(ERROR) << "RemoveJob " << err; |
| 441 // Exiting with zero, so launchd doesn't restart the process. | 440 // Exiting with zero, so launchd doesn't restart the process. |
| 442 exit(0); | 441 exit(0); |
| 443 } | 442 } |
| 444 } | 443 } |
| 445 } | 444 } |
| 446 } | 445 } |
| OLD | NEW |