Move node integration from RenderViewObserver to RendererClient.

This commit is contained in:
Cheng Zhao 2013-12-23 22:08:45 +08:00
parent 02d94c8b2e
commit df0094b6cb
6 changed files with 54 additions and 57 deletions

View file

@ -5,6 +5,7 @@
#include "renderer/atom_renderer_client.h"
#include "common/node_bindings.h"
#include "renderer/api/atom_renderer_bindings.h"
#include "renderer/atom_render_view_observer.h"
#include "common/v8/node_common.h"
@ -12,7 +13,8 @@
namespace atom {
AtomRendererClient::AtomRendererClient()
: node_bindings_(NodeBindings::Create(false)) {
: node_bindings_(NodeBindings::Create(false)),
atom_bindings_(new AtomRendererBindings) {
}
AtomRendererClient::~AtomRendererClient() {
@ -35,4 +37,29 @@ void AtomRendererClient::RenderViewCreated(content::RenderView* render_view) {
new AtomRenderViewObserver(render_view, this);
}
void AtomRendererClient::DidCreateScriptContext(WebKit::WebFrame* frame,
v8::Handle<v8::Context> context,
int extension_group,
int world_id) {
v8::Context::Scope scope(context);
// Check the existance of process object to prevent duplicate initialization.
if (context->Global()->Has(v8::String::New("process")))
return;
// Give the node loop a run to make sure everything is ready.
node_bindings_->RunMessageLoop();
// Setup node environment for each window.
node_bindings_->CreateEnvironment(context);
// Add atom-shell extended APIs.
atom_bindings_->BindToFrame(frame);
}
void AtomRendererClient::WillReleaseScriptContext(WebKit::WebFrame* frame,
v8::Handle<v8::Context>,
int world_id) {
}
} // namespace atom