diff --git a/atom/renderer/atom_renderer_client.cc b/atom/renderer/atom_renderer_client.cc index 4c0a3f201ca2..8739efef4572 100644 --- a/atom/renderer/atom_renderer_client.cc +++ b/atom/renderer/atom_renderer_client.cc @@ -14,10 +14,12 @@ #include "chrome/renderer/printing/print_web_view_helper.h" #include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_frame_observer.h" +#include "content/public/renderer/render_thread.h" #include "base/command_line.h" #include "native_mate/converter.h" #include "third_party/WebKit/public/web/WebDocument.h" #include "third_party/WebKit/public/web/WebFrame.h" +#include "third_party/WebKit/public/web/WebKit.h" #include "atom/common/node_includes.h" @@ -83,7 +85,7 @@ AtomRendererClient::AtomRendererClient() AtomRendererClient::~AtomRendererClient() { } -void AtomRendererClient::RenderThreadStarted() { +void AtomRendererClient::WebKitInitialized() { if (!IsNodeBindingEnabled()) return; @@ -94,12 +96,16 @@ void AtomRendererClient::RenderThreadStarted() { // Create a default empty environment which would be used when we need to // run V8 code out of a window context (like running a uv callback). - v8::Isolate* isolate = v8::Isolate::GetCurrent(); + v8::Isolate* isolate = blink::mainThreadIsolate(); v8::HandleScope handle_scope(isolate); v8::Local context = v8::Context::New(isolate); global_env = node::Environment::New(context); } +void AtomRendererClient::RenderThreadStarted() { + content::RenderThread::Get()->AddObserver(this); +} + void AtomRendererClient::RenderFrameCreated( content::RenderFrame* render_frame) { new AtomRenderFrameObserver(render_frame, this); diff --git a/atom/renderer/atom_renderer_client.h b/atom/renderer/atom_renderer_client.h index dd143d1a4a9f..818c65ed6be6 100644 --- a/atom/renderer/atom_renderer_client.h +++ b/atom/renderer/atom_renderer_client.h @@ -9,6 +9,7 @@ #include #include "content/public/renderer/content_renderer_client.h" +#include "content/public/renderer/render_process_observer.h" namespace node { class Environment; @@ -19,7 +20,8 @@ namespace atom { class AtomRendererBindings; class NodeBindings; -class AtomRendererClient : public content::ContentRendererClient { +class AtomRendererClient : public content::ContentRendererClient, + public content::RenderProcessObserver { public: AtomRendererClient(); virtual ~AtomRendererClient(); @@ -41,6 +43,9 @@ class AtomRendererClient : public content::ContentRendererClient { DISABLE, }; + // content::RenderProcessObserver: + virtual void WebKitInitialized() OVERRIDE; + // content::ContentRendererClient: virtual void RenderThreadStarted() OVERRIDE; virtual void RenderFrameCreated(content::RenderFrame* render_frame) OVERRIDE;