| // Copyright 2013 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "content/shell/app/paths_mac.h" | 
 |  | 
 | #include "base/mac/bundle_locations.h" | 
 | #include "base/mac/foundation_util.h" | 
 | #include "base/path_service.h" | 
 | #include "content/public/common/content_paths.h" | 
 |  | 
 | namespace { | 
 |  | 
 | base::FilePath GetContentsPath() { | 
 |   // Start out with the path to the running executable. | 
 |   base::FilePath path; | 
 |   PathService::Get(base::FILE_EXE, &path); | 
 |  | 
 |   // Up to Contents. | 
 |   if (base::mac::IsBackgroundOnlyProcess()) { | 
 |     // The running executable is the helper. Go up five steps: | 
 |     // Contents/Frameworks/Helper.app/Contents/MacOS/Helper | 
 |     // ^ to here                                     ^ from here | 
 |     path = path.DirName().DirName().DirName().DirName().DirName(); | 
 |   } else { | 
 |     // One step up to MacOS, another to Contents. | 
 |     path = path.DirName().DirName(); | 
 |   } | 
 |   DCHECK_EQ("Contents", path.BaseName().value()); | 
 |  | 
 |   return path; | 
 | } | 
 |  | 
 | base::FilePath GetFrameworksPath() { | 
 |   return GetContentsPath().Append("Frameworks"); | 
 | } | 
 |  | 
 | }  // namespace | 
 |  | 
 | void OverrideFrameworkBundlePath() { | 
 |   base::FilePath helper_path = | 
 |       GetFrameworksPath().Append("Content Shell Framework.framework"); | 
 |  | 
 |   base::mac::SetOverrideFrameworkBundlePath(helper_path); | 
 | } | 
 |  | 
 | void OverrideChildProcessPath() { | 
 |   base::FilePath helper_path = | 
 |       GetFrameworksPath().Append("Content Shell Helper.app") | 
 |                                             .Append("Contents") | 
 |                                             .Append("MacOS") | 
 |                                             .Append("Content Shell Helper"); | 
 |  | 
 |   PathService::Override(content::CHILD_PROCESS_EXE, helper_path); | 
 | } | 
 |  | 
 | base::FilePath GetResourcesPakFilePath() { | 
 |   NSString* pak_path = | 
 |       [base::mac::FrameworkBundle() pathForResource:@"content_shell" | 
 |                                              ofType:@"pak"]; | 
 |  | 
 |   return base::FilePath([pak_path fileSystemRepresentation]); | 
 | } | 
 |  | 
 | base::FilePath GetInfoPlistPath() { | 
 |   return GetContentsPath().Append("Info.plist"); | 
 | } |