Notify client each time main context is created

This commit is contained in:
Kevin Sawicki 2016-12-13 11:30:34 -08:00
parent c5e68ec165
commit 5da4f032c3

View file

@ -66,8 +66,6 @@ class AtomRenderFrameObserver : public content::RenderFrameObserver {
: content::RenderFrameObserver(frame), : content::RenderFrameObserver(frame),
render_frame_(frame), render_frame_(frame),
isolated_world_(isolated_world), isolated_world_(isolated_world),
main_context_created_(false),
isolated_context_created_(false),
renderer_client_(renderer_client) {} renderer_client_(renderer_client) {}
// content::RenderFrameObserver: // content::RenderFrameObserver:
@ -92,26 +90,19 @@ class AtomRenderFrameObserver : public content::RenderFrameObserver {
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 {
if (!main_context_created_ && IsMainWorld(world_id)) { bool notify_client =
main_context_created_ = true; isolated_world_ ? IsIsolatedWorld(world_id) : IsMainWorld(world_id);
if (isolated_world_) { if (notify_client)
CreateIsolatedWorldContext();
} else {
renderer_client_->DidCreateScriptContext(context, render_frame_);
}
}
if (isolated_world_ && !isolated_context_created_
&& IsIsolatedWorld(world_id)) {
isolated_context_created_ = true;
renderer_client_->DidCreateScriptContext(context, render_frame_); renderer_client_->DidCreateScriptContext(context, render_frame_);
}
if (isolated_world_ && IsMainWorld(world_id))
CreateIsolatedWorldContext();
} }
void WillReleaseScriptContext(v8::Local<v8::Context> context, void WillReleaseScriptContext(v8::Local<v8::Context> context,
int world_id) override { int world_id) override {
bool notify_client = bool notify_client =
isolated_world_ ? IsIsolatedWorld(world_id) : IsMainWorld(world_id); isolated_world_ ? IsIsolatedWorld(world_id) : IsMainWorld(world_id);
if (notify_client) if (notify_client)
renderer_client_->WillReleaseScriptContext(context, render_frame_); renderer_client_->WillReleaseScriptContext(context, render_frame_);
} }
@ -123,8 +114,6 @@ class AtomRenderFrameObserver : public content::RenderFrameObserver {
private: private:
content::RenderFrame* render_frame_; content::RenderFrame* render_frame_;
bool isolated_world_; bool isolated_world_;
bool main_context_created_;
bool isolated_context_created_;
AtomRendererClient* renderer_client_; AtomRendererClient* renderer_client_;
const int kMainWorldId = 0; const int kMainWorldId = 0;