Use the new way of reporting exception in node context.

More on this can be found at:
3c0fc7ad9f
This commit is contained in:
Cheng Zhao 2013-05-23 13:49:13 +08:00
parent 0bab9a9d84
commit f3a8a0741c
3 changed files with 20 additions and 15 deletions

View file

@ -17,10 +17,9 @@
using WebKit::WebFrame; using WebKit::WebFrame;
namespace webkit_atom { namespace webkit {
extern void SetNodeContext(v8::Persistent<v8::Context> context); extern void SetGetFirstWindowContext(v8::Handle<v8::Context> (*)());
extern void SetEnterFirstWindowContext(bool (*func)()); extern void SetIsValidWindowContext(bool (*)(v8::Handle<v8::Context>));
extern void SetIsValidWindowContext(bool (*func)(v8::Handle<v8::Context>));
} }
namespace atom { namespace atom {
@ -32,13 +31,11 @@ std::vector<WebFrame*>& web_frames() {
return frames; return frames;
} }
bool EnterFirstWindowContext() { v8::Handle<v8::Context> GetFirstWindowContext() {
if (web_frames().size() == 0) if (web_frames().size() == 0)
return false; return v8::Handle<v8::Context>();
DCHECK(!web_frames()[0]->mainWorldScriptContext().IsEmpty()); return web_frames()[0]->mainWorldScriptContext();
web_frames()[0]->mainWorldScriptContext()->Enter();
return true;
} }
bool IsValidWindowContext(v8::Handle<v8::Context> context) { bool IsValidWindowContext(v8::Handle<v8::Context> context) {
@ -59,8 +56,8 @@ AtomRenderViewObserver::AtomRenderViewObserver(
atom_bindings_(new AtomRendererBindings(render_view)), atom_bindings_(new AtomRendererBindings(render_view)),
renderer_client_(renderer_client) { renderer_client_(renderer_client) {
// Interact with dirty workarounds of extra node context in WebKit. // Interact with dirty workarounds of extra node context in WebKit.
webkit_atom::SetEnterFirstWindowContext(EnterFirstWindowContext); webkit::SetGetFirstWindowContext(GetFirstWindowContext);
webkit_atom::SetIsValidWindowContext(IsValidWindowContext); webkit::SetIsValidWindowContext(IsValidWindowContext);
} }
AtomRenderViewObserver::~AtomRenderViewObserver() { AtomRenderViewObserver::~AtomRenderViewObserver() {

View file

@ -8,12 +8,20 @@
#include "renderer/atom_render_view_observer.h" #include "renderer/atom_render_view_observer.h"
#include "vendor/node/src/node_internals.h" #include "vendor/node/src/node_internals.h"
namespace webkit_atom { namespace webkit {
extern void SetNodeContext(v8::Persistent<v8::Context> context); extern void SetGetNodeContext(v8::Handle<v8::Context> (*)());
} }
namespace atom { namespace atom {
namespace {
v8::Handle<v8::Context> GetNodeContext() {
return node::g_context;
}
} // namespace
AtomRendererClient::AtomRendererClient() AtomRendererClient::AtomRendererClient()
: node_bindings_(NodeBindings::Create(false)) { : node_bindings_(NodeBindings::Create(false)) {
} }
@ -25,7 +33,7 @@ void AtomRendererClient::RenderThreadStarted() {
node_bindings_->Initialize(); node_bindings_->Initialize();
// Interact with dirty workarounds of extra node context in WebKit. // Interact with dirty workarounds of extra node context in WebKit.
webkit_atom::SetNodeContext(node::g_context); webkit::SetGetNodeContext(GetNodeContext);
node_bindings_->Load(); node_bindings_->Load();
node_bindings_->PrepareMessageLoop(); node_bindings_->PrepareMessageLoop();

2
vendor/brightray vendored

@ -1 +1 @@
Subproject commit 05db4299da03bad186bf394761843c5dcc8a8203 Subproject commit 6b9c1b6761ff164173e4f7fdebc478af99e411e5