diff --git a/atom.gyp b/atom.gyp index 345474b5b6..3a0f8cbb73 100644 --- a/atom.gyp +++ b/atom.gyp @@ -60,6 +60,7 @@ 'atom/app/atom_content_client.h', 'atom/app/atom_main_delegate.cc', 'atom/app/atom_main_delegate.h', + 'atom/app/atom_main_delegate_mac.mm', 'atom/browser/api/atom_api_app.cc', 'atom/browser/api/atom_api_app.h', 'atom/browser/api/atom_api_auto_updater.cc', diff --git a/atom/app/atom_main_delegate.h b/atom/app/atom_main_delegate.h index 9f74386304..8cd4a28ee1 100644 --- a/atom/app/atom_main_delegate.h +++ b/atom/app/atom_main_delegate.h @@ -26,6 +26,10 @@ class AtomMainDelegate : public brightray::MainDelegate { scoped_ptr CreateContentClient() override; void AddDataPackFromPath( ui::ResourceBundle* bundle, const base::FilePath& pak_dir) override; +#if defined(OS_MACOSX) + void OverrideChildProcessPath() override; + void OverrideFrameworkBundlePath() override; +#endif private: brightray::ContentClient content_client_; diff --git a/atom/app/atom_main_delegate_mac.mm b/atom/app/atom_main_delegate_mac.mm new file mode 100644 index 0000000000..37fdf06647 --- /dev/null +++ b/atom/app/atom_main_delegate_mac.mm @@ -0,0 +1,37 @@ +// Copyright (c) 2014 GitHub, Inc. +// Use of this source code is governed by the MIT license that can be +// found in the LICENSE file. + +#include "atom/app/atom_main_delegate.h" + +#include "base/mac/bundle_locations.h" +#include "base/files/file_path.h" +#include "base/path_service.h" +#include "brightray/common/mac/main_application_bundle.h" +#include "content/public/common/content_paths.h" + +namespace atom { + +namespace { + +base::FilePath GetFrameworksPath() { + return brightray::MainApplicationBundlePath().Append("Contents") + .Append("Frameworks"); +} + +} // namespace + +void AtomMainDelegate::OverrideFrameworkBundlePath() { + base::mac::SetOverrideFrameworkBundlePath( + GetFrameworksPath().Append("Atom Framework.framework")); +} + +void AtomMainDelegate::OverrideChildProcessPath() { + base::FilePath helper_path = GetFrameworksPath().Append("Atom Helper.app") + .Append("Contents") + .Append("MacOS") + .Append("Atom Helper"); + PathService::Override(content::CHILD_PROCESS_EXE, helper_path); +} + +} // namespace atom