diff --git a/atom/app/atom_main_delegate.cc b/atom/app/atom_main_delegate.cc index 170bee2be..dbd271239 100644 --- a/atom/app/atom_main_delegate.cc +++ b/atom/app/atom_main_delegate.cc @@ -9,6 +9,7 @@ #include "atom/app/atom_content_client.h" #include "atom/browser/atom_browser_client.h" +#include "atom/browser/relauncher.h" #include "atom/common/google_api_key.h" #include "atom/renderer/atom_renderer_client.h" #include "atom/utility/atom_content_utility_client.h" @@ -21,17 +22,11 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" -#if defined(OS_MACOSX) -#include "chrome/browser/mac/relauncher.h" -#endif - namespace atom { namespace { -#if defined(OS_MACOSX) const char* kRelauncherProcess = "relauncher"; -#endif bool IsBrowserProcess(base::CommandLine* cmd) { std::string process_type = cmd->GetSwitchValueASCII(switches::kProcessType); @@ -154,12 +149,11 @@ content::ContentUtilityClient* AtomMainDelegate::CreateContentUtilityClient() { return utility_client_.get(); } -#if defined(OS_MACOSX) int AtomMainDelegate::RunProcess( const std::string& process_type, const content::MainFunctionParams& main_function_params) { if (process_type == kRelauncherProcess) - return mac_relauncher::internal::RelauncherMain(main_function_params); + return relauncher::RelauncherMain(main_function_params); else return -1; } @@ -172,7 +166,6 @@ bool AtomMainDelegate::DelaySandboxInitialization( const std::string& process_type) { return process_type == kRelauncherProcess; } -#endif std::unique_ptr AtomMainDelegate::CreateContentClient() { diff --git a/atom/app/atom_main_delegate.h b/atom/app/atom_main_delegate.h index b12a6dcdc..377665f62 100644 --- a/atom/app/atom_main_delegate.h +++ b/atom/app/atom_main_delegate.h @@ -24,13 +24,11 @@ class AtomMainDelegate : public brightray::MainDelegate { content::ContentBrowserClient* CreateContentBrowserClient() override; content::ContentRendererClient* CreateContentRendererClient() override; content::ContentUtilityClient* CreateContentUtilityClient() override; -#if defined(OS_MACOSX) int RunProcess( const std::string& process_type, const content::MainFunctionParams& main_function_params) override; bool ShouldSendMachPort(const std::string& process_type) override; bool DelaySandboxInitialization(const std::string& process_type) override; -#endif // brightray::MainDelegate: std::unique_ptr CreateContentClient() override; diff --git a/atom/browser/browser_mac.mm b/atom/browser/browser_mac.mm index 9149a2126..271b88de4 100644 --- a/atom/browser/browser_mac.mm +++ b/atom/browser/browser_mac.mm @@ -8,13 +8,13 @@ #include "atom/browser/mac/atom_application_delegate.h" #include "atom/browser/mac/dict_util.h" #include "atom/browser/native_window.h" +#include "atom/browser/relauncher.h" #include "atom/browser/window_list.h" #include "base/mac/bundle_locations.h" #include "base/mac/foundation_util.h" #include "base/strings/sys_string_conversions.h" #include "brightray/common/application_info.h" #include "brightray/common/mac/main_application_bundle.h" -#include "chrome/browser/mac/relauncher.h" #include "net/base/mac/url_conversions.h" #include "url/gurl.h" @@ -26,7 +26,7 @@ void Browser::Relaunch(const std::vector& args, args_with_app.insert( args_with_app.begin(), app.empty() ? brightray::MainApplicationBundlePath().value() : app); - mac_relauncher::RelaunchApp(args_with_app); + relauncher::RelaunchApp(args_with_app); } void Browser::Focus() { diff --git a/chromium_src/chrome/browser/mac/relauncher.cc b/atom/browser/relauncher.cc similarity index 95% rename from chromium_src/chrome/browser/mac/relauncher.cc rename to atom/browser/relauncher.cc index f76e44c63..284093152 100644 --- a/chromium_src/chrome/browser/mac/relauncher.cc +++ b/atom/browser/relauncher.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/mac/relauncher.h" +#include "atom/browser/relauncher.h" #include #include @@ -33,7 +33,7 @@ #include "content/public/common/content_switches.h" #include "content/public/common/main_function_params.h" -namespace mac_relauncher { +namespace relauncher { namespace { @@ -171,14 +171,6 @@ bool RelaunchAppWithHelper(const std::string& helper, return true; } -namespace { - -// In the relauncher process, performs the necessary synchronization steps -// with the parent by setting up a kqueue to watch for it to exit, writing a -// byte to the pipe, and then waiting for the exit notification on the kqueue. -// If anything fails, this logs a message and returns immediately. In those -// situations, it can be assumed that something went wrong with the parent -// process and the best recovery approach is to attempt relaunch anyway. void RelauncherSynchronizeWithParent() { base::ScopedFD relauncher_sync_fd(kRelauncherSyncFD); @@ -236,10 +228,6 @@ void RelauncherSynchronizeWithParent() { } } -} // namespace - -namespace internal { - int RelauncherMain(const content::MainFunctionParams& main_parameters) { // CommandLine rearranges the order of the arguments returned by // main_parameters.argv(), rendering it impossible to determine which @@ -360,6 +348,4 @@ int RelauncherMain(const content::MainFunctionParams& main_parameters) { return 0; } -} // namespace internal - -} // namespace mac_relauncher +} // namespace relauncher diff --git a/chromium_src/chrome/browser/mac/relauncher.h b/atom/browser/relauncher.h similarity index 77% rename from chromium_src/chrome/browser/mac/relauncher.h rename to atom/browser/relauncher.h index 66391b423..f072a7253 100644 --- a/chromium_src/chrome/browser/mac/relauncher.h +++ b/atom/browser/relauncher.h @@ -1,11 +1,11 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be +// Copyright (c) 2016 GitHub, Inc. +// Use of this source code is governed by the MIT license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_MAC_RELAUNCHER_H_ -#define CHROME_BROWSER_MAC_RELAUNCHER_H_ +#ifndef ATOM_BROWSER_RELAUNCHER_H_ +#define ATOM_BROWSER_RELAUNCHER_H_ -// mac_relauncher implements main browser application relaunches on the Mac. +// relauncher implements main browser application relaunches across platforms. // When a browser wants to relaunch itself, it can't simply fork off a new // process and exec a new browser from within. That leaves open a window // during which two browser applications might be running concurrently. If @@ -13,7 +13,7 @@ // especially bad if the user expected the Dock icon to be persistent by // choosing Keep in Dock from the icon's contextual menu. // -// mac_relauncher approaches this problem by introducing an intermediate +// relauncher approaches this problem by introducing an intermediate // process (the "relauncher") in between the original browser ("parent") and // replacement browser ("relaunched"). The helper executable is used for the // relauncher process; because it's an LSUIElement, it doesn't get a Dock @@ -36,7 +36,7 @@ namespace content { struct MainFunctionParams; } -namespace mac_relauncher { +namespace relauncher { // Relaunches the application using the helper application associated with the // currently running instance of Chrome in the parent browser process as the @@ -64,14 +64,17 @@ bool RelaunchAppWithHelper(const std::string& helper, const std::vector& relauncher_args, const std::vector& args); -namespace internal { +// In the relauncher process, performs the necessary synchronization steps +// with the parent by setting up a kqueue to watch for it to exit, writing a +// byte to the pipe, and then waiting for the exit notification on the kqueue. +// If anything fails, this logs a message and returns immediately. In those +// situations, it can be assumed that something went wrong with the parent +// process and the best recovery approach is to attempt relaunch anyway. +void RelauncherSynchronizeWithParent(); -// The entry point from ChromeMain into the relauncher process. This is not a -// user API. Don't call it if your name isn't ChromeMain. +// The entry point from ChromeMain into the relauncher process. int RelauncherMain(const content::MainFunctionParams& main_parameters); -} // namespace internal +} // namespace relauncher -} // namespace mac_relauncher - -#endif // CHROME_BROWSER_MAC_RELAUNCHER_H_ +#endif // ATOM_BROWSER_RELAUNCHER_H_ diff --git a/filenames.gypi b/filenames.gypi index 0d1d97711..3ce737f22 100644 --- a/filenames.gypi +++ b/filenames.gypi @@ -225,6 +225,8 @@ 'atom/browser/net/url_request_fetch_job.h', 'atom/browser/node_debugger.cc', 'atom/browser/node_debugger.h', + 'atom/browser/relauncher.cc', + 'atom/browser/relauncher.h', 'atom/browser/render_process_preferences.cc', 'atom/browser/render_process_preferences.h', 'atom/browser/ui/accelerator_util.cc', @@ -420,8 +422,6 @@ 'chromium_src/chrome/browser/extensions/global_shortcut_listener_x11.h', 'chromium_src/chrome/browser/extensions/global_shortcut_listener_win.cc', 'chromium_src/chrome/browser/extensions/global_shortcut_listener_win.h', - 'chromium_src/chrome/browser/mac/relauncher.cc', - 'chromium_src/chrome/browser/mac/relauncher.h', 'chromium_src/chrome/browser/media/desktop_media_list.h', 'chromium_src/chrome/browser/media/desktop_media_list_observer.h', 'chromium_src/chrome/browser/media/native_desktop_media_list.cc',