Do process.emit('exit') in WillReleaseScriptContext
authorCheng Zhao <zcbenz@gmail.com>
Tue, 2 Feb 2016 15:47:19 +0000 (23:47 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Tue, 2 Feb 2016 15:47:19 +0000 (23:47 +0800)
atom/renderer/atom_renderer_client.cc
atom/renderer/lib/init.js

index 00ac245..7ff87a5 100644 (file)
@@ -9,6 +9,7 @@
 
 #include "atom/common/api/api_messages.h"
 #include "atom/common/api/atom_bindings.h"
+#include "atom/common/api/event_emitter_caller.h"
 #include "atom/common/node_bindings.h"
 #include "atom/common/node_includes.h"
 #include "atom/common/options_switches.h"
@@ -174,6 +175,8 @@ void AtomRendererClient::DidCreateScriptContext(
 
 void AtomRendererClient::WillReleaseScriptContext(
     v8::Handle<v8::Context> context) {
+  node::Environment* env = node::Environment::GetCurrent(context);
+  mate::EmitEvent(env->isolate(), env->process_object(), "exit");
 }
 
 bool AtomRendererClient::ShouldFork(blink::WebLocalFrame* frame,
index 18be7b0..340a1ef 100644 (file)
@@ -106,11 +106,6 @@ if (nodeIntegration === 'true' || nodeIntegration === 'all' || nodeIntegration =
       return false;
     }
   };
-
-  // Emit the 'exit' event when page is unloading.
-  window.addEventListener('unload', function() {
-    return process.emit('exit');
-  });
 } else {
   // Delete Node's symbols after the Environment has been loaded.
   process.once('loaded', function() {