Index: extensions/shell/app/paths_mac.mm |
diff --git a/extensions/shell/app/paths_mac.mm b/extensions/shell/app/paths_mac.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d10c3c87532905b371d83226988e2d22691b135a |
--- /dev/null |
+++ b/extensions/shell/app/paths_mac.mm |
@@ -0,0 +1,52 @@ |
+// Copyright 2014 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 "extensions/shell/app/paths_mac.h" |
+ |
+#include "base/files/file_path.h" |
+#include "base/logging.h" |
+#include "base/path_service.h" |
+#include "base/mac/bundle_locations.h" |
+#include "base/mac/foundation_util.h" |
+#include "content/public/common/content_paths.h" |
+ |
+namespace extensions { |
+ |
+namespace { |
+ |
+base::FilePath GetFrameworksPath() { |
+ base::FilePath path; |
+ PathService::Get(base::FILE_EXE, &path); |
+ // We now have a path .../App Shell.app/Contents/MacOS/App Shell, and want to |
+ // transform it into |
+ // .../App Shell.app/Contents/Frameworks/App Shell Framework.framework. |
+ // But if it's App Shell Helper.app (inside Frameworks), we must go deeper. |
+ if (base::mac::IsBackgroundOnlyProcess()) { |
+ path = path.DirName().DirName().DirName().DirName().DirName(); |
+ } else { |
+ path = path.DirName().DirName(); |
+ } |
+ DCHECK_EQ("Contents", path.BaseName().value()); |
+ path = path.Append("Frameworks"); |
+ return path; |
+} |
+ |
+} // namespace |
+ |
+void OverrideFrameworkBundlePath() { |
+ base::FilePath path = |
+ GetFrameworksPath().Append("App Shell Framework.framework"); |
+ base::mac::SetOverrideFrameworkBundlePath(path); |
+} |
+ |
+void OverrideChildProcessFilePath() { |
+ base::FilePath path = GetFrameworksPath() |
+ .Append("App Shell Helper.app") |
+ .Append("Contents") |
+ .Append("MacOS") |
+ .Append("App Shell Helper"); |
+ PathService::Override(content::CHILD_PROCESS_EXE, path); |
+} |
+ |
+} // namespace extensions |