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

View file

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

2
vendor/brightray vendored

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