OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/browser/mac/relauncher.h" | 5 #include "chrome/browser/mac/relauncher.h" |
6 | 6 |
7 #include <ApplicationServices/ApplicationServices.h> | 7 #include <ApplicationServices/ApplicationServices.h> |
8 #include <AvailabilityMacros.h> | 8 #include <AvailabilityMacros.h> |
9 #include <crt_externs.h> | 9 #include <crt_externs.h> |
10 #include <dlfcn.h> | 10 #include <dlfcn.h> |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 LOG(ERROR) << "relauncher process invoked with unexpected arguments"; | 287 LOG(ERROR) << "relauncher process invoked with unexpected arguments"; |
288 return 1; | 288 return 1; |
289 } | 289 } |
290 | 290 |
291 RelauncherSynchronizeWithParent(); | 291 RelauncherSynchronizeWithParent(); |
292 | 292 |
293 // The capacity for relaunch_args is 4 less than argc, because it | 293 // The capacity for relaunch_args is 4 less than argc, because it |
294 // won't contain the argv[0] of the relauncher process, the | 294 // won't contain the argv[0] of the relauncher process, the |
295 // RelauncherTypeArg() at argv[1], kRelauncherArgSeparator, or the | 295 // RelauncherTypeArg() at argv[1], kRelauncherArgSeparator, or the |
296 // executable path of the process to be launched. | 296 // executable path of the process to be launched. |
297 base::mac::ScopedCFTypeRef<CFMutableArrayRef> relaunch_args( | 297 base::ScopedCFTypeRef<CFMutableArrayRef> relaunch_args( |
298 CFArrayCreateMutable(NULL, argc - 4, &kCFTypeArrayCallBacks)); | 298 CFArrayCreateMutable(NULL, argc - 4, &kCFTypeArrayCallBacks)); |
299 if (!relaunch_args) { | 299 if (!relaunch_args) { |
300 LOG(ERROR) << "CFArrayCreateMutable"; | 300 LOG(ERROR) << "CFArrayCreateMutable"; |
301 return 1; | 301 return 1; |
302 } | 302 } |
303 | 303 |
304 // Figure out what to execute, what arguments to pass it, and whether to | 304 // Figure out what to execute, what arguments to pass it, and whether to |
305 // start it in the background. | 305 // start it in the background. |
306 bool background = false; | 306 bool background = false; |
307 bool in_relaunch_args = false; | 307 bool in_relaunch_args = false; |
(...skipping 20 matching lines...) Expand all Loading... |
328 } | 328 } |
329 } else { | 329 } else { |
330 if (!seen_relaunch_executable) { | 330 if (!seen_relaunch_executable) { |
331 // The first argument after kRelauncherBackgroundArg is the path to | 331 // The first argument after kRelauncherBackgroundArg is the path to |
332 // the executable file or .app bundle directory. The Launch Services | 332 // the executable file or .app bundle directory. The Launch Services |
333 // interface wants this separate from the rest of the arguments. In | 333 // interface wants this separate from the rest of the arguments. In |
334 // the relaunched process, this path will still be visible at argv[0]. | 334 // the relaunched process, this path will still be visible at argv[0]. |
335 relaunch_executable.assign(arg); | 335 relaunch_executable.assign(arg); |
336 seen_relaunch_executable = true; | 336 seen_relaunch_executable = true; |
337 } else { | 337 } else { |
338 base::mac::ScopedCFTypeRef<CFStringRef> arg_cf( | 338 base::ScopedCFTypeRef<CFStringRef> arg_cf( |
339 base::SysUTF8ToCFStringRef(arg)); | 339 base::SysUTF8ToCFStringRef(arg)); |
340 if (!arg_cf) { | 340 if (!arg_cf) { |
341 LOG(ERROR) << "base::SysUTF8ToCFStringRef failed for " << arg; | 341 LOG(ERROR) << "base::SysUTF8ToCFStringRef failed for " << arg; |
342 return 1; | 342 return 1; |
343 } | 343 } |
344 CFArrayAppendValue(relaunch_args, arg_cf); | 344 CFArrayAppendValue(relaunch_args, arg_cf); |
345 } | 345 } |
346 } | 346 } |
347 } | 347 } |
348 | 348 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 if (!dmg_bsd_device_name.empty()) { | 381 if (!dmg_bsd_device_name.empty()) { |
382 EjectAndTrashDiskImage(dmg_bsd_device_name); | 382 EjectAndTrashDiskImage(dmg_bsd_device_name); |
383 } | 383 } |
384 | 384 |
385 return 0; | 385 return 0; |
386 } | 386 } |
387 | 387 |
388 } // namespace internal | 388 } // namespace internal |
389 | 389 |
390 } // namespace mac_relauncher | 390 } // namespace mac_relauncher |
OLD | NEW |