Initialize script context in DidClearWindowObject

Doing it in RunScriptsAtDocumentStart would somehow result in weird
results when webSecurity is off.
This commit is contained in:
Cheng Zhao 2016-05-30 14:56:31 +09:00
parent ce0d3d93ab
commit 6755aa44f6
2 changed files with 10 additions and 3 deletions

View file

@ -68,6 +68,10 @@ class AtomRenderFrameObserver : public content::RenderFrameObserver {
renderer_client_(renderer_client) {} renderer_client_(renderer_client) {}
// content::RenderFrameObserver: // content::RenderFrameObserver:
void DidClearWindowObject() override {
renderer_client_->DidClearWindowObject(render_frame_);
}
void DidCreateScriptContext(v8::Handle<v8::Context> context, void DidCreateScriptContext(v8::Handle<v8::Context> context,
int extension_group, int extension_group,
int world_id) override { 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) { content::RenderFrame* render_frame) {
// Make sure every page will get a script context created. // Make sure every page will get a script context created.
render_frame->GetWebFrame()->executeScript( render_frame->GetWebFrame()->executeScript(blink::WebScriptSource("void 0"));
blink::WebScriptSource("void 0")); }
void AtomRendererClient::RunScriptsAtDocumentStart(
content::RenderFrame* render_frame) {
// Inform the document start pharse. // Inform the document start pharse.
node::Environment* env = node_bindings_->uv_env(); node::Environment* env = node_bindings_->uv_env();
if (env) { if (env) {

View file

@ -21,6 +21,7 @@ class AtomRendererClient : public content::ContentRendererClient {
AtomRendererClient(); AtomRendererClient();
virtual ~AtomRendererClient(); virtual ~AtomRendererClient();
void DidClearWindowObject(content::RenderFrame* render_frame);
void DidCreateScriptContext( void DidCreateScriptContext(
v8::Handle<v8::Context> context, content::RenderFrame* render_frame); v8::Handle<v8::Context> context, content::RenderFrame* render_frame);
void WillReleaseScriptContext( void WillReleaseScriptContext(