It is not allowed to run scripts in DidCreateDocumentElement
authorCheng Zhao <zcbenz@gmail.com>
Tue, 10 May 2016 06:43:25 +0000 (15:43 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Fri, 13 May 2016 02:12:01 +0000 (11:12 +0900)
atom/renderer/atom_render_view_observer.cc
atom/renderer/atom_renderer_client.cc
atom/renderer/atom_renderer_client.h

index 96dffbd..bbaea35 100644 (file)
@@ -27,7 +27,6 @@
 #include "third_party/WebKit/public/web/WebFrame.h"
 #include "third_party/WebKit/public/web/WebLocalFrame.h"
 #include "third_party/WebKit/public/web/WebKit.h"
-#include "third_party/WebKit/public/web/WebScriptSource.h"
 #include "third_party/WebKit/public/web/WebView.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "native_mate/dictionary.h"
@@ -89,9 +88,6 @@ void AtomRenderViewObserver::DidCreateDocumentElement(
     blink::WebLocalFrame* frame) {
   document_created_ = true;
 
-  // Make sure every page will get a script context created.
-  frame->executeScript(blink::WebScriptSource("void 0"));
-
   // Read --zoom-factor from command line.
   std::string zoom_factor_str = base::CommandLine::ForCurrentProcess()->
       GetSwitchValueASCII(switches::kZoomFactor);
index d04e028..bb5b81b 100644 (file)
@@ -33,6 +33,7 @@
 #include "third_party/WebKit/public/web/WebLocalFrame.h"
 #include "third_party/WebKit/public/web/WebPluginParams.h"
 #include "third_party/WebKit/public/web/WebKit.h"
+#include "third_party/WebKit/public/web/WebScriptSource.h"
 #include "third_party/WebKit/public/web/WebSecurityPolicy.h"
 #include "third_party/WebKit/public/web/WebRuntimeFeatures.h"
 #include "third_party/WebKit/public/web/WebView.h"
@@ -160,6 +161,13 @@ void AtomRendererClient::RenderViewCreated(content::RenderView* render_view) {
   }
 }
 
+void AtomRendererClient::RunScriptsAtDocumentStart(
+    content::RenderFrame* render_frame) {
+  // Make sure every page will get a script context created.
+  render_frame->GetWebFrame()->executeScript(
+      blink::WebScriptSource("void 0"));
+}
+
 blink::WebSpeechSynthesizer* AtomRendererClient::OverrideSpeechSynthesizer(
     blink::WebSpeechSynthesizerClient* client) {
   return new TtsDispatcher(client);
index 59b407b..6e962bc 100644 (file)
@@ -40,6 +40,7 @@ class AtomRendererClient : public content::ContentRendererClient,
   void RenderThreadStarted() override;
   void RenderFrameCreated(content::RenderFrame*) override;
   void RenderViewCreated(content::RenderView*) override;
+  void RunScriptsAtDocumentStart(content::RenderFrame* render_frame) override;
   blink::WebSpeechSynthesizer* OverrideSpeechSynthesizer(
       blink::WebSpeechSynthesizerClient* client) override;
   bool OverrideCreatePlugin(content::RenderFrame* render_frame,