From f3a8a0741cf3c8c0622d80e996153fec5dfa3155 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Thu, 23 May 2013 13:49:13 +0800 Subject: [PATCH] Use the new way of reporting exception in node context. More on this can be found at: https://github.com/atom/cefode/commit/3c0fc7ad9fa27c7a7c42d3fec4c9f413c88b1835 --- renderer/atom_render_view_observer.cc | 19 ++++++++----------- renderer/atom_renderer_client.cc | 14 +++++++++++--- vendor/brightray | 2 +- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/renderer/atom_render_view_observer.cc b/renderer/atom_render_view_observer.cc index daf24592096a..0c2c611d0396 100644 --- a/renderer/atom_render_view_observer.cc +++ b/renderer/atom_render_view_observer.cc @@ -17,10 +17,9 @@ using WebKit::WebFrame; -namespace webkit_atom { -extern void SetNodeContext(v8::Persistent context); -extern void SetEnterFirstWindowContext(bool (*func)()); -extern void SetIsValidWindowContext(bool (*func)(v8::Handle)); +namespace webkit { +extern void SetGetFirstWindowContext(v8::Handle (*)()); +extern void SetIsValidWindowContext(bool (*)(v8::Handle)); } namespace atom { @@ -32,13 +31,11 @@ std::vector& web_frames() { return frames; } -bool EnterFirstWindowContext() { +v8::Handle GetFirstWindowContext() { if (web_frames().size() == 0) - return false; + return v8::Handle(); - DCHECK(!web_frames()[0]->mainWorldScriptContext().IsEmpty()); - web_frames()[0]->mainWorldScriptContext()->Enter(); - return true; + return web_frames()[0]->mainWorldScriptContext(); } bool IsValidWindowContext(v8::Handle 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() { diff --git a/renderer/atom_renderer_client.cc b/renderer/atom_renderer_client.cc index 142e6ff470bc..36cb4052532d 100644 --- a/renderer/atom_renderer_client.cc +++ b/renderer/atom_renderer_client.cc @@ -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 context); +namespace webkit { +extern void SetGetNodeContext(v8::Handle (*)()); } namespace atom { +namespace { + +v8::Handle 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(); diff --git a/vendor/brightray b/vendor/brightray index 05db4299da03..6b9c1b6761ff 160000 --- a/vendor/brightray +++ b/vendor/brightray @@ -1 +1 @@ -Subproject commit 05db4299da03bad186bf394761843c5dcc8a8203 +Subproject commit 6b9c1b6761ff164173e4f7fdebc478af99e411e5