Initialize defaultSession after app is ready
authorCheng Zhao <zcbenz@gmail.com>
Wed, 24 Jun 2015 08:14:49 +0000 (16:14 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Wed, 24 Jun 2015 08:14:49 +0000 (16:14 +0800)
atom/browser/api/atom_api_app.cc

index ec9e86d..473111d 100644 (file)
@@ -133,6 +133,14 @@ void App::OnWillFinishLaunching() {
 }
 
 void App::OnFinishLaunching() {
+  // Create the defaultSession.
+  v8::Locker locker(isolate());
+  v8::HandleScope handle_scope(isolate());
+  auto browser_context = static_cast<AtomBrowserContext*>(
+      AtomBrowserMainParts::Get()->browser_context());
+  auto handle = Session::CreateFrom(isolate(), browser_context);
+  default_session_.Reset(isolate(), handle.ToV8());
+
   Emit("ready");
 }
 
@@ -173,13 +181,10 @@ void App::SetAppUserModelId(const std::string& app_id) {
 }
 
 v8::Local<v8::Value> App::DefaultSession(v8::Isolate* isolate) {
-  if (default_session_.IsEmpty()) {
-    auto browser_context = static_cast<AtomBrowserContext*>(
-        AtomBrowserMainParts::Get()->browser_context());
-    auto handle = Session::CreateFrom(isolate, browser_context);
-    default_session_.Reset(isolate, handle.ToV8());
-  }
-  return v8::Local<v8::Value>::New(isolate, default_session_);
+  if (default_session_.IsEmpty())
+    return v8::Null(isolate);
+  else
+    return v8::Local<v8::Value>::New(isolate, default_session_);
 }
 
 mate::ObjectTemplateBuilder App::GetObjectTemplateBuilder(