Initialize script context in DidClearWindowObject
authorCheng Zhao <zcbenz@gmail.com>
Mon, 30 May 2016 05:56:31 +0000 (14:56 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Mon, 30 May 2016 07:34:28 +0000 (16:34 +0900)
Doing it in RunScriptsAtDocumentStart would somehow result in weird
results when webSecurity is off.

atom/renderer/atom_renderer_client.cc
atom/renderer/atom_renderer_client.h

index 283930b..ee2dd7d 100644 (file)
@@ -68,6 +68,10 @@ class AtomRenderFrameObserver : public content::RenderFrameObserver {
         renderer_client_(renderer_client) {}
 
   // content::RenderFrameObserver:
+  void DidClearWindowObject() override {
+    renderer_client_->DidClearWindowObject(render_frame_);
+  }
+
   void DidCreateScriptContext(v8::Handle<v8::Context> context,
                               int extension_group,
                               int world_id) override {
@@ -185,12 +189,14 @@ void AtomRendererClient::RenderViewCreated(content::RenderView* render_view) {
   }
 }
 
-void AtomRendererClient::RunScriptsAtDocumentStart(
+void AtomRendererClient::DidClearWindowObject(
     content::RenderFrame* render_frame) {
   // Make sure every page will get a script context created.
-  render_frame->GetWebFrame()->executeScript(
-      blink::WebScriptSource("void 0"));
+  render_frame->GetWebFrame()->executeScript(blink::WebScriptSource("void 0"));
+}
 
+void AtomRendererClient::RunScriptsAtDocumentStart(
+    content::RenderFrame* render_frame) {
   // Inform the document start pharse.
   node::Environment* env = node_bindings_->uv_env();
   if (env) {
index 51872e5..f4a5489 100644 (file)
@@ -21,6 +21,7 @@ class AtomRendererClient : public content::ContentRendererClient {
   AtomRendererClient();
   virtual ~AtomRendererClient();
 
+  void DidClearWindowObject(content::RenderFrame* render_frame);
   void DidCreateScriptContext(
       v8::Handle<v8::Context> context, content::RenderFrame* render_frame);
   void WillReleaseScriptContext(