migrate off QuitCurrent*Deprecated in browser.cc

modelled after 1096475 and 1096475
This commit is contained in:
Jeremy Apthorp 2018-10-03 14:47:00 -07:00
parent 98829aa916
commit f5eaa97d9d
4 changed files with 21 additions and 3 deletions

View file

@ -260,6 +260,11 @@ bool AtomBrowserMainParts::MainMessageLoopRun(int* result_code) {
return brightray::BrowserMainParts::MainMessageLoopRun(result_code); return brightray::BrowserMainParts::MainMessageLoopRun(result_code);
} }
void AtomBrowserMainParts::PreDefaultMainMessageLoopRun(
base::OnceClosure quit_closure) {
Browser::SetMainMessageLoopQuitClosure(std::move(quit_closure));
}
void AtomBrowserMainParts::PostMainMessageLoopStart() { void AtomBrowserMainParts::PostMainMessageLoopStart() {
brightray::BrowserMainParts::PostMainMessageLoopStart(); brightray::BrowserMainParts::PostMainMessageLoopStart();
#if defined(OS_POSIX) #if defined(OS_POSIX)

View file

@ -81,6 +81,7 @@ class AtomBrowserMainParts : public brightray::BrowserMainParts {
void ToolkitInitialized() override; void ToolkitInitialized() override;
void PreMainMessageLoopRun() override; void PreMainMessageLoopRun() override;
bool MainMessageLoopRun(int* result_code) override; bool MainMessageLoopRun(int* result_code) override;
void PreDefaultMainMessageLoopRun(base::OnceClosure quit_closure) override;
void PostMainMessageLoopStart() override; void PostMainMessageLoopStart() override;
void PostMainMessageLoopRun() override; void PostMainMessageLoopRun() override;
#if defined(OS_MACOSX) #if defined(OS_MACOSX)

View file

@ -6,6 +6,7 @@
#include <memory> #include <memory>
#include <string> #include <string>
#include <utility>
#include "atom/browser/atom_browser_main_parts.h" #include "atom/browser/atom_browser_main_parts.h"
#include "atom/browser/browser_observer.h" #include "atom/browser/browser_observer.h"
@ -14,6 +15,7 @@
#include "atom/browser/window_list.h" #include "atom/browser/window_list.h"
#include "base/files/file_util.h" #include "base/files/file_util.h"
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
#include "base/no_destructor.h"
#include "base/path_service.h" #include "base/path_service.h"
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/threading/thread_restrictions.h" #include "base/threading/thread_restrictions.h"
@ -23,6 +25,9 @@
namespace atom { namespace atom {
// Null until/unless the default main message loop is running.
base::NoDestructor<base::OnceClosure> g_quit_main_message_loop;
Browser::LoginItemSettings::LoginItemSettings() = default; Browser::LoginItemSettings::LoginItemSettings() = default;
Browser::LoginItemSettings::~LoginItemSettings() = default; Browser::LoginItemSettings::~LoginItemSettings() = default;
Browser::LoginItemSettings::LoginItemSettings(const LoginItemSettings& other) = Browser::LoginItemSettings::LoginItemSettings(const LoginItemSettings& other) =
@ -90,9 +95,8 @@ void Browser::Shutdown() {
for (BrowserObserver& observer : observers_) for (BrowserObserver& observer : observers_)
observer.OnQuit(); observer.OnQuit();
if (base::ThreadTaskRunnerHandle::IsSet()) { if (*g_quit_main_message_loop) {
base::ThreadTaskRunnerHandle::Get()->PostTask( std::move(*g_quit_main_message_loop).Run();
FROM_HERE, base::RunLoop::QuitCurrentWhenIdleClosureDeprecated());
} else { } else {
// There is no message loop available so we are in early stage. // There is no message loop available so we are in early stage.
exit(0); exit(0);
@ -191,6 +195,10 @@ void Browser::PreMainMessageLoopRun() {
} }
} }
void Browser::SetMainMessageLoopQuitClosure(base::OnceClosure quit_closure) {
*g_quit_main_message_loop = std::move(quit_closure);
}
void Browser::NotifyAndShutdown() { void Browser::NotifyAndShutdown() {
if (is_shutdown_) if (is_shutdown_)
return; return;

View file

@ -239,6 +239,10 @@ class Browser : public WindowListObserver {
void PreMainMessageLoopRun(); void PreMainMessageLoopRun();
// Stores the supplied |quit_closure|, to be run when the last Browser
// instance is destroyed.
static void SetMainMessageLoopQuitClosure(base::OnceClosure quit_closure);
void AddObserver(BrowserObserver* obs) { observers_.AddObserver(obs); } void AddObserver(BrowserObserver* obs) { observers_.AddObserver(obs); }
void RemoveObserver(BrowserObserver* obs) { observers_.RemoveObserver(obs); } void RemoveObserver(BrowserObserver* obs) { observers_.RemoveObserver(obs); }