Add atom-shell bindings before loading environment

This commit is contained in:
Cheng Zhao 2015-01-21 15:02:09 -08:00
parent 5e58915bdd
commit 7e33e26465
8 changed files with 74 additions and 94 deletions

View file

@ -11,7 +11,6 @@
#include "base/memory/scoped_ptr.h"
#include "base/values.h"
#include "content/public/renderer/render_view.h"
#include "native_mate/converter.h"
#include "third_party/WebKit/public/web/WebFrame.h"
#include "third_party/WebKit/public/web/WebView.h"
@ -37,18 +36,6 @@ AtomRendererBindings::AtomRendererBindings() {
AtomRendererBindings::~AtomRendererBindings() {
}
void AtomRendererBindings::BindToFrame(blink::WebFrame* frame) {
v8::Isolate* isolate = v8::Isolate::GetCurrent();
v8::HandleScope handle_scope(isolate);
v8::Handle<v8::Context> context = frame->mainWorldScriptContext();
if (context.IsEmpty())
return;
v8::Context::Scope scope(context);
AtomBindings::BindTo(isolate, GetProcessObject(context));
}
void AtomRendererBindings::OnBrowserMessage(content::RenderView* render_view,
const base::string16& channel,
const base::ListValue& args) {

View file

@ -28,9 +28,6 @@ class AtomRendererBindings : public AtomBindings {
AtomRendererBindings();
virtual ~AtomRendererBindings();
// Call BindTo for process object of the frame.
void BindToFrame(blink::WebFrame* frame);
// Dispatch messages from browser.
void OnBrowserMessage(content::RenderView* render_view,
const base::string16& channel,

View file

@ -148,10 +148,9 @@ void AtomRendererClient::DidCreateScriptContext(blink::WebFrame* frame,
// Setup node environment for each window.
node::Environment* env = node_bindings_->CreateEnvironment(context);
node_bindings_->LoadEnvironment(env);
// Add atom-shell extended APIs.
atom_bindings_->BindToFrame(frame);
atom_bindings_->BindTo(env->isolate(), env->process_object());
// Store the created environment.
web_page_envs_.push_back(env);
@ -159,6 +158,9 @@ void AtomRendererClient::DidCreateScriptContext(blink::WebFrame* frame,
// Make uv loop being wrapped by window context.
if (node_bindings_->uv_env() == NULL)
node_bindings_->set_uv_env(env);
// Load everything.
node_bindings_->LoadEnvironment(env);
}
void AtomRendererClient::WillReleaseScriptContext(

View file

@ -86,12 +86,9 @@ if nodeIntegration in ['true', 'all', 'except-iframe', 'manual-enable-iframe']
window.addEventListener 'unload', ->
process.emit 'exit'
else
# There still some native initialization codes needs "process", delete the
# global reference after they are done.
process.once 'BIND_DONE', ->
delete global.process
delete global.setImmediate
delete global.clearImmediate
delete global.process
delete global.setImmediate
delete global.clearImmediate
# Load the script specfied by the "preload" attribute.
if preloadScript