Move all the browser.cc code over to atom_api_app.cc
This commit is contained in:
parent
658a9872fb
commit
938d68eb36
4 changed files with 34 additions and 85 deletions
|
@ -161,6 +161,14 @@ void App::OnWindowAllClosed() {
|
|||
|
||||
void App::OnQuit() {
|
||||
Emit("quit");
|
||||
|
||||
if (process_singleton_.get()) {
|
||||
if (process_notify_result_ == ProcessSingleton::PROCESS_NONE) {
|
||||
process_singleton_->Cleanup();
|
||||
}
|
||||
|
||||
process_singleton_.reset();
|
||||
}
|
||||
}
|
||||
|
||||
void App::OnOpenFile(bool* prevent_default, const std::string& file_path) {
|
||||
|
@ -188,6 +196,10 @@ void App::OnFinishLaunching() {
|
|||
auto handle = Session::CreateFrom(isolate(), browser_context);
|
||||
default_session_.Reset(isolate(), handle.ToV8());
|
||||
|
||||
if (process_singleton_.get()) {
|
||||
process_singleton_->Unlock();
|
||||
}
|
||||
|
||||
Emit("ready");
|
||||
}
|
||||
|
||||
|
@ -269,28 +281,32 @@ v8::Local<v8::Value> App::DefaultSession(v8::Isolate* isolate) {
|
|||
return v8::Local<v8::Value>::New(isolate, default_session_);
|
||||
}
|
||||
|
||||
bool App::MakeSingleInstance(v8::Local<v8::Function> callback) {
|
||||
auto browser = Browser::Get();
|
||||
if (browser->InitializeSingleInstance()) {
|
||||
single_instance_callback_ = callback;
|
||||
bool App::MakeSingleInstance(ProcessSingleton::NotificationCallback callback) {
|
||||
|
||||
ProcessSingleton::NotificationCallback cb;
|
||||
mate::Converter<ProcessSingleton::NotificationCallback>::FromV8(
|
||||
isolate(), single_instance_callback_, &cb);
|
||||
base::FilePath userDir;
|
||||
PathService::Get(brightray::DIR_USER_DATA, &userDir);
|
||||
|
||||
browser->SetSingleInstanceCallback(cb);
|
||||
if (!process_singleton_.get()) {
|
||||
auto browser = Browser::Get();
|
||||
process_singleton_.reset(new AtomProcessSingleton(userDir, callback));
|
||||
|
||||
if (browser->is_ready()) {
|
||||
process_singleton_->Unlock();
|
||||
}
|
||||
|
||||
process_notify_result_ = process_singleton_->NotifyOtherProcessOrCreate();
|
||||
}
|
||||
|
||||
switch (browser->GetSingleInstanceResult()) {
|
||||
switch (process_notify_result_) {
|
||||
case ProcessSingleton::NotifyResult::PROCESS_NONE:
|
||||
return false;
|
||||
case ProcessSingleton::NotifyResult::LOCK_ERROR:
|
||||
case ProcessSingleton::NotifyResult::PROFILE_IN_USE:
|
||||
case ProcessSingleton::NotifyResult::PROCESS_NOTIFIED:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
mate::ObjectTemplateBuilder App::GetObjectTemplateBuilder(
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <string>
|
||||
|
||||
#include "atom/browser/api/event_emitter.h"
|
||||
#include "atom/browser/atom_process_singleton.h"
|
||||
#include "atom/browser/browser_observer.h"
|
||||
#include "atom/common/native_mate_converters/callback.h"
|
||||
#include "chrome/browser/process_singleton.h"
|
||||
|
@ -70,14 +71,16 @@ class App : public mate::EventEmitter,
|
|||
|
||||
void AllowNTLMCredentialsForAllDomains(bool should_allow);
|
||||
|
||||
bool MakeSingleInstance(v8::Local<v8::Function> callback);
|
||||
bool MakeSingleInstance(ProcessSingleton::NotificationCallback callback);
|
||||
|
||||
std::string GetLocale();
|
||||
v8::Local<v8::Value> DefaultSession(v8::Isolate* isolate);
|
||||
|
||||
v8::Local<v8::Function> single_instance_callback_;
|
||||
v8::Global<v8::Value> default_session_;
|
||||
|
||||
scoped_ptr<AtomProcessSingleton> process_singleton_;
|
||||
ProcessSingleton::NotifyResult process_notify_result_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(App);
|
||||
};
|
||||
|
||||
|
|
|
@ -9,8 +9,6 @@
|
|||
#include "atom/browser/atom_browser_main_parts.h"
|
||||
#include "atom/browser/window_list.h"
|
||||
#include "base/message_loop/message_loop.h"
|
||||
#include "base/path_service.h"
|
||||
#include "brightray/browser/brightray_paths.h"
|
||||
#include "content/public/browser/client_certificate_delegate.h"
|
||||
#include "net/ssl/ssl_cert_request_info.h"
|
||||
|
||||
|
@ -19,8 +17,7 @@ namespace atom {
|
|||
Browser::Browser()
|
||||
: is_quiting_(false),
|
||||
is_ready_(false),
|
||||
is_shutdown_(false),
|
||||
process_notify_callback_set_(false) {
|
||||
is_shutdown_(false) {
|
||||
WindowList::AddObserver(this);
|
||||
}
|
||||
|
||||
|
@ -117,11 +114,6 @@ void Browser::WillFinishLaunching() {
|
|||
|
||||
void Browser::DidFinishLaunching() {
|
||||
is_ready_ = true;
|
||||
|
||||
if (process_notify_callback_set_) {
|
||||
process_singleton_->Unlock();
|
||||
}
|
||||
|
||||
FOR_EACH_OBSERVER(BrowserObserver, observers_, OnFinishLaunching());
|
||||
}
|
||||
|
||||
|
@ -148,14 +140,6 @@ void Browser::NotifyAndShutdown() {
|
|||
return;
|
||||
}
|
||||
|
||||
if (process_notify_callback_set_) {
|
||||
process_notify_callback_.Reset();
|
||||
|
||||
if (process_notify_result_ == ProcessSingleton::PROCESS_NONE) {
|
||||
process_singleton_->Cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
Shutdown();
|
||||
}
|
||||
|
||||
|
@ -168,34 +152,6 @@ bool Browser::HandleBeforeQuit() {
|
|||
return !prevent_default;
|
||||
}
|
||||
|
||||
bool 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)));
|
||||
|
||||
if (is_ready_) {
|
||||
process_singleton_->Unlock();
|
||||
}
|
||||
|
||||
process_notify_result_ = process_singleton_->NotifyOtherProcessOrCreate();
|
||||
return true;
|
||||
}
|
||||
|
||||
ProcessSingleton::NotifyResult Browser::GetSingleInstanceResult() {
|
||||
LOG(ERROR) << "Process Notify Result: " << process_notify_result_;
|
||||
return process_notify_result_;
|
||||
}
|
||||
|
||||
void Browser::SetSingleInstanceCallback(
|
||||
ProcessSingleton::NotificationCallback callback) {
|
||||
process_notify_callback_ = callback;
|
||||
process_notify_callback_set_ = true;
|
||||
}
|
||||
|
||||
void Browser::OnWindowCloseCancelled(NativeWindow* window) {
|
||||
if (is_quiting_)
|
||||
// Once a beforeunload handler has prevented the closing, we think the quit
|
||||
|
@ -210,14 +166,4 @@ void Browser::OnWindowAllClosed() {
|
|||
FOR_EACH_OBSERVER(BrowserObserver, observers_, OnWindowAllClosed());
|
||||
}
|
||||
|
||||
bool Browser::OnProcessSingletonNotification(
|
||||
const base::CommandLine& command_line,
|
||||
const base::FilePath& current_directory) {
|
||||
if (process_notify_callback_set_) {
|
||||
return process_notify_callback_.Run(command_line, current_directory);
|
||||
} else {
|
||||
return true; // We'll handle this, not a different process
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace atom
|
||||
|
|
|
@ -9,10 +9,8 @@
|
|||
#include <vector>
|
||||
|
||||
#include "base/basictypes.h"
|
||||
#include "base/memory/scoped_ptr.h"
|
||||
#include "base/compiler_specific.h"
|
||||
#include "base/observer_list.h"
|
||||
#include "atom/browser/atom_process_singleton.h"
|
||||
#include "atom/browser/browser_observer.h"
|
||||
#include "atom/browser/window_list_observer.h"
|
||||
|
||||
|
@ -66,11 +64,6 @@ class Browser : public WindowListObserver {
|
|||
// Clear the recent documents list.
|
||||
void ClearRecentDocuments();
|
||||
|
||||
bool InitializeSingleInstance();
|
||||
ProcessSingleton::NotifyResult GetSingleInstanceResult();
|
||||
void SetSingleInstanceCallback(
|
||||
ProcessSingleton::NotificationCallback callback);
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
// Bounce the dock icon.
|
||||
enum BounceType {
|
||||
|
@ -160,10 +153,6 @@ class Browser : public WindowListObserver {
|
|||
void OnWindowCloseCancelled(NativeWindow* window) override;
|
||||
void OnWindowAllClosed() override;
|
||||
|
||||
bool OnProcessSingletonNotification(
|
||||
const base::CommandLine& command_line,
|
||||
const base::FilePath& current_directory);
|
||||
|
||||
// Observers of the browser.
|
||||
base::ObserverList<BrowserObserver> observers_;
|
||||
|
||||
|
@ -176,11 +165,6 @@ class Browser : public WindowListObserver {
|
|||
std::string version_override_;
|
||||
std::string name_override_;
|
||||
|
||||
scoped_ptr<AtomProcessSingleton> process_singleton_;
|
||||
ProcessSingleton::NotifyResult process_notify_result_;
|
||||
ProcessSingleton::NotificationCallback process_notify_callback_;
|
||||
bool process_notify_callback_set_;
|
||||
|
||||
#if defined(OS_WIN)
|
||||
base::string16 app_user_model_id_;
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue