Index: apps/app_shim/chrome_main_app_mode_mac.mm |
diff --git a/apps/app_shim/chrome_main_app_mode_mac.mm b/apps/app_shim/chrome_main_app_mode_mac.mm |
index ddad52a14822ac15e92c6c9d9c53d1c9b0d91bc0..a5e86c5fc032d3d9427e856ca1c1dd87f838f541 100644 |
--- a/apps/app_shim/chrome_main_app_mode_mac.mm |
+++ b/apps/app_shim/chrome_main_app_mode_mac.mm |
@@ -21,6 +21,7 @@ |
#include "base/mac/scoped_nsobject.h" |
#include "base/message_loop/message_loop.h" |
#include "base/path_service.h" |
+#include "base/strings/string_number_conversions.h" |
#include "base/strings/sys_string_conversions.h" |
#include "base/threading/thread.h" |
#include "chrome/common/chrome_constants.h" |
@@ -432,15 +433,26 @@ int ChromeAppModeStart(const app_mode::ChromeAppModeInfo* info) { |
g_io_thread = io_thread; |
// Find already running instances of Chrome. |
- NSString* chrome_bundle_id = [base::mac::OuterBundle() bundleIdentifier]; |
- NSArray* existing_chrome = [NSRunningApplication |
- runningApplicationsWithBundleIdentifier:chrome_bundle_id]; |
+ pid_t pid = -1; |
+ std::string chrome_process_id = CommandLine::ForCurrentProcess()-> |
+ GetSwitchValueASCII(app_mode::kChromeProcessId); |
+ if (!chrome_process_id.empty()) { |
+ if (!base::StringToInt(chrome_process_id, &pid)) |
+ pid = -1; |
+ } else { |
+ NSString* chrome_bundle_id = [base::mac::OuterBundle() bundleIdentifier]; |
+ NSArray* existing_chrome = [NSRunningApplication |
+ runningApplicationsWithBundleIdentifier:chrome_bundle_id]; |
+ if ([existing_chrome count] > 0) |
+ pid = [[existing_chrome objectAtIndex:0] processIdentifier]; |
+ } |
+ |
+ LOG(INFO) << "pid " << pid; |
// Launch Chrome if it isn't already running. |
ProcessSerialNumber psn; |
- if ([existing_chrome count] > 0) { |
- OSStatus status = GetProcessForPID( |
- [[existing_chrome objectAtIndex:0] processIdentifier], &psn); |
+ if (pid > -1) { |
+ OSStatus status = GetProcessForPID(pid, &psn); |
if (status) |
return 1; |