REVIEW: register BrowserChildProcessObserver once main message loop is ready
This commit is contained in:
parent
1b30cac372
commit
769fbd0d3b
6 changed files with 23 additions and 5 deletions
|
@ -532,7 +532,6 @@ App::App(v8::Isolate* isolate) {
|
||||||
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())->set_delegate(this);
|
static_cast<AtomBrowserClient*>(AtomBrowserClient::Get())->set_delegate(this);
|
||||||
Browser::Get()->AddObserver(this);
|
Browser::Get()->AddObserver(this);
|
||||||
content::GpuDataManager::GetInstance()->AddObserver(this);
|
content::GpuDataManager::GetInstance()->AddObserver(this);
|
||||||
content::BrowserChildProcessObserver::Add(this);
|
|
||||||
base::ProcessId pid = base::GetCurrentProcId();
|
base::ProcessId pid = base::GetCurrentProcId();
|
||||||
std::unique_ptr<atom::ProcessMetric> process_metric(
|
std::unique_ptr<atom::ProcessMetric> process_metric(
|
||||||
new atom::ProcessMetric(
|
new atom::ProcessMetric(
|
||||||
|
@ -597,6 +596,10 @@ void App::OnAccessibilitySupportChanged() {
|
||||||
Emit("accessibility-support-changed", IsAccessibilitySupportEnabled());
|
Emit("accessibility-support-changed", IsAccessibilitySupportEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void App::OnPreMainMessageLoopRun() {
|
||||||
|
content::BrowserChildProcessObserver::Add(this);
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(OS_MACOSX)
|
#if defined(OS_MACOSX)
|
||||||
void App::OnWillContinueUserActivity(
|
void App::OnWillContinueUserActivity(
|
||||||
bool* prevent_default,
|
bool* prevent_default,
|
||||||
|
|
|
@ -104,6 +104,7 @@ class App : public AtomBrowserClient::Delegate,
|
||||||
void OnLogin(LoginHandler* login_handler,
|
void OnLogin(LoginHandler* login_handler,
|
||||||
const base::DictionaryValue& request_details) override;
|
const base::DictionaryValue& request_details) override;
|
||||||
void OnAccessibilitySupportChanged() override;
|
void OnAccessibilitySupportChanged() override;
|
||||||
|
void OnPreMainMessageLoopRun() override;
|
||||||
#if defined(OS_MACOSX)
|
#if defined(OS_MACOSX)
|
||||||
void OnWillContinueUserActivity(
|
void OnWillContinueUserActivity(
|
||||||
bool* prevent_default,
|
bool* prevent_default,
|
||||||
|
|
|
@ -128,6 +128,10 @@ void AtomBrowserMainParts::PostEarlyInitialization() {
|
||||||
bridge_task_runner_ = new BridgeTaskRunner;
|
bridge_task_runner_ = new BridgeTaskRunner;
|
||||||
base::ThreadTaskRunnerHandle handle(bridge_task_runner_);
|
base::ThreadTaskRunnerHandle handle(bridge_task_runner_);
|
||||||
|
|
||||||
|
base::FilePath user_dir;
|
||||||
|
PathService::Get(brightray::DIR_USER_DATA, &user_dir);
|
||||||
|
process_singleton_.reset(new ProcessSingleton(user_dir));
|
||||||
|
|
||||||
// The ProxyResolverV8 has setup a complete V8 environment, in order to
|
// The ProxyResolverV8 has setup a complete V8 environment, in order to
|
||||||
// avoid conflicts we only initialize our V8 environment after that.
|
// avoid conflicts we only initialize our V8 environment after that.
|
||||||
js_env_.reset(new JavascriptEnvironment);
|
js_env_.reset(new JavascriptEnvironment);
|
||||||
|
@ -184,6 +188,9 @@ void AtomBrowserMainParts::PreMainMessageLoopRun() {
|
||||||
bridge_task_runner_->MessageLoopIsReady();
|
bridge_task_runner_->MessageLoopIsReady();
|
||||||
bridge_task_runner_ = nullptr;
|
bridge_task_runner_ = nullptr;
|
||||||
|
|
||||||
|
// Notify observers that main thread message loop was initialized.
|
||||||
|
Browser::Get()->PreMainMessageLoopRun();
|
||||||
|
|
||||||
#if defined(USE_X11)
|
#if defined(USE_X11)
|
||||||
libgtkui::GtkInitFromCommandLine(*base::CommandLine::ForCurrentProcess());
|
libgtkui::GtkInitFromCommandLine(*base::CommandLine::ForCurrentProcess());
|
||||||
#endif
|
#endif
|
||||||
|
@ -211,10 +218,6 @@ void AtomBrowserMainParts::PostMainMessageLoopStart() {
|
||||||
#endif
|
#endif
|
||||||
device::GeolocationProvider::SetGeolocationDelegate(
|
device::GeolocationProvider::SetGeolocationDelegate(
|
||||||
new AtomGeolocationDelegate());
|
new AtomGeolocationDelegate());
|
||||||
|
|
||||||
base::FilePath user_dir;
|
|
||||||
PathService::Get(brightray::DIR_USER_DATA, &user_dir);
|
|
||||||
process_singleton_.reset(new ProcessSingleton(user_dir));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AtomBrowserMainParts::PostMainMessageLoopRun() {
|
void AtomBrowserMainParts::PostMainMessageLoopRun() {
|
||||||
|
|
|
@ -203,6 +203,12 @@ void Browser::RequestLogin(
|
||||||
observer.OnLogin(login_handler, *(request_details.get()));
|
observer.OnLogin(login_handler, *(request_details.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Browser::PreMainMessageLoopRun() {
|
||||||
|
for (BrowserObserver& observer : observers_) {
|
||||||
|
observer.OnPreMainMessageLoopRun();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Browser::NotifyAndShutdown() {
|
void Browser::NotifyAndShutdown() {
|
||||||
if (is_shutdown_)
|
if (is_shutdown_)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -224,6 +224,8 @@ class Browser : public WindowListObserver {
|
||||||
void RequestLogin(LoginHandler* login_handler,
|
void RequestLogin(LoginHandler* login_handler,
|
||||||
std::unique_ptr<base::DictionaryValue> request_details);
|
std::unique_ptr<base::DictionaryValue> request_details);
|
||||||
|
|
||||||
|
void PreMainMessageLoopRun();
|
||||||
|
|
||||||
void AddObserver(BrowserObserver* obs) {
|
void AddObserver(BrowserObserver* obs) {
|
||||||
observers_.AddObserver(obs);
|
observers_.AddObserver(obs);
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,9 @@ class BrowserObserver {
|
||||||
// The browser's accessibility suppport has changed.
|
// The browser's accessibility suppport has changed.
|
||||||
virtual void OnAccessibilitySupportChanged() {}
|
virtual void OnAccessibilitySupportChanged() {}
|
||||||
|
|
||||||
|
// The app message loop is ready
|
||||||
|
virtual void OnPreMainMessageLoopRun() {}
|
||||||
|
|
||||||
#if defined(OS_MACOSX)
|
#if defined(OS_MACOSX)
|
||||||
// The browser wants to report that an user activity will resume. (macOS only)
|
// The browser wants to report that an user activity will resume. (macOS only)
|
||||||
virtual void OnWillContinueUserActivity(
|
virtual void OnWillContinueUserActivity(
|
||||||
|
|
Loading…
Reference in a new issue