AtomRenderFrameObserver(content::RenderFrame* frame,
AtomRendererClient* renderer_client)
: content::RenderFrameObserver(frame),
+ world_id_(-1),
renderer_client_(renderer_client) {}
// content::RenderFrameObserver:
void DidCreateScriptContext(v8::Handle<v8::Context> context,
int extension_group,
int world_id) override {
- renderer_client_->DidCreateScriptContext(
- render_frame()->GetWebFrame(), context);
+ if (world_id_ != -1)
+ return;
+ world_id_ = world_id;
+ renderer_client_->DidCreateScriptContext(context);
}
-
void WillReleaseScriptContext(v8::Local<v8::Context> context,
int world_id) override {
+ if (world_id_ != world_id)
+ return;
renderer_client_->WillReleaseScriptContext(context);
}
private:
+ int world_id_;
AtomRendererClient* renderer_client_;
DISALLOW_COPY_AND_ASSIGN(AtomRenderFrameObserver);
blink::WebCustomElement::addEmbedderCustomElementName("webview");
blink::WebCustomElement::addEmbedderCustomElementName("browserplugin");
+ // Allow file scheme to handle service worker by default.
+ blink::WebSecurityPolicy::registerURLSchemeAsAllowingServiceWorkers("file");
+
OverrideNodeArrayBuffer();
node_bindings_->Initialize();
void AtomRendererClient::RenderFrameCreated(
content::RenderFrame* render_frame) {
new PepperHelper(render_frame);
- new AtomRenderFrameObserver(render_frame, this);
- // Allow file scheme to handle service worker by default.
- blink::WebSecurityPolicy::registerURLSchemeAsAllowingServiceWorkers("file");
+ // Only insert node integration for the main frame.
+ if (!render_frame->IsMainFrame())
+ return;
+
+ new AtomRenderFrameObserver(render_frame, this);
}
void AtomRendererClient::RenderViewCreated(content::RenderView* render_view) {
}
void AtomRendererClient::DidCreateScriptContext(
- blink::WebFrame* frame,
v8::Handle<v8::Context> context) {
- // Only insert node integration for the main frame.
- if (frame->parent())
- return;
-
// Give the node loop a run to make sure everything is ready.
node_bindings_->RunMessageLoop();