Move initialization of Single Instance into MakeSingleInstance call

This commit is contained in:
Paul Betts 2015-10-20 13:38:57 -07:00
parent 5d4c29a1e3
commit b6f1729acd
3 changed files with 18 additions and 14 deletions

View file

@ -270,12 +270,14 @@ v8::Local<v8::Value> App::DefaultSession(v8::Isolate* isolate) {
}
bool App::MakeSingleInstance(v8::Local<v8::Function> callback) {
auto browser = Browser::Get();
single_instance_callback_ = callback;
browser->InitializeSingleInstance();
ProcessSingleton::NotificationCallback cb;
mate::Converter<ProcessSingleton::NotificationCallback>::FromV8(isolate(), single_instance_callback_, &cb);
auto browser = Browser::Get();
browser->SetSingleInstanceCallback(cb);
switch(browser->GetSingleInstanceResult()) {

View file

@ -112,17 +112,6 @@ void Browser::Activate(bool has_visible_windows) {
}
void Browser::WillFinishLaunching() {
base::FilePath userDir;
PathService::Get(brightray::DIR_USER_DATA, &userDir);
auto no_refcount_this = base::Unretained(this);
process_singleton_.reset(new AtomProcessSingleton(
userDir,
base::Bind(&Browser::OnProcessSingletonNotification, no_refcount_this)));
LOG(ERROR) << "Setting up Process Singleton: " << userDir.value();
process_notify_result_ = process_singleton_->NotifyOtherProcessOrCreate();
FOR_EACH_OBSERVER(BrowserObserver, observers_, OnWillFinishLaunching());
}
@ -154,7 +143,7 @@ void Browser::NotifyAndShutdown() {
is_quiting_ = false;
return;
}
process_singleton_->Cleanup();
Shutdown();
}
@ -168,6 +157,18 @@ bool Browser::HandleBeforeQuit() {
return !prevent_default;
}
void Browser::InitializeSingleInstance() {
base::FilePath userDir;
PathService::Get(brightray::DIR_USER_DATA, &userDir);
auto no_refcount_this = base::Unretained(this);
process_singleton_.reset(new AtomProcessSingleton(
userDir,
base::Bind(&Browser::OnProcessSingletonNotification, no_refcount_this)));
process_notify_result_ = process_singleton_->NotifyOtherProcessOrCreate();
}
ProcessSingleton::NotifyResult Browser::GetSingleInstanceResult() {
LOG(ERROR) << "Process Notify Result: " << process_notify_result_;
return process_notify_result_;

View file

@ -66,6 +66,7 @@ class Browser : public WindowListObserver {
// Clear the recent documents list.
void ClearRecentDocuments();
void InitializeSingleInstance();
ProcessSingleton::NotifyResult GetSingleInstanceResult();
void SetSingleInstanceCallback(ProcessSingleton::NotificationCallback callback);
@ -157,7 +158,7 @@ class Browser : public WindowListObserver {
// WindowListObserver implementations:
void OnWindowCloseCancelled(NativeWindow* window) override;
void OnWindowAllClosed() override;
bool OnProcessSingletonNotification(
const base::CommandLine& command_line,
const base::FilePath& current_directory);