Add DidClearWindowObject for renderer client
This commit is contained in:
parent
7e33e26465
commit
f142f572c3
2 changed files with 15 additions and 8 deletions
|
@ -53,11 +53,14 @@ class AtomRenderFrameObserver : public content::RenderFrameObserver {
|
||||||
renderer_client_(renderer_client) {}
|
renderer_client_(renderer_client) {}
|
||||||
|
|
||||||
// content::RenderFrameObserver:
|
// content::RenderFrameObserver:
|
||||||
virtual void WillReleaseScriptContext(v8::Handle<v8::Context> context,
|
void WillReleaseScriptContext(v8::Handle<v8::Context> context,
|
||||||
int world_id) OVERRIDE {
|
int world_id) override {
|
||||||
renderer_client_->WillReleaseScriptContext(
|
renderer_client_->WillReleaseScriptContext(
|
||||||
render_frame()->GetWebFrame(), context, world_id);
|
render_frame()->GetWebFrame(), context, world_id);
|
||||||
}
|
}
|
||||||
|
void DidClearWindowObject() override {
|
||||||
|
renderer_client_->DidClearWindowObject();
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
AtomRendererClient* renderer_client_;
|
AtomRendererClient* renderer_client_;
|
||||||
|
@ -70,7 +73,7 @@ class AtomRenderFrameObserver : public content::RenderFrameObserver {
|
||||||
AtomRendererClient::AtomRendererClient()
|
AtomRendererClient::AtomRendererClient()
|
||||||
: node_bindings_(NodeBindings::Create(false)),
|
: node_bindings_(NodeBindings::Create(false)),
|
||||||
atom_bindings_(new AtomRendererBindings),
|
atom_bindings_(new AtomRendererBindings),
|
||||||
main_frame_(NULL) {
|
main_frame_(nullptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
AtomRendererClient::~AtomRendererClient() {
|
AtomRendererClient::~AtomRendererClient() {
|
||||||
|
@ -133,7 +136,7 @@ void AtomRendererClient::DidCreateScriptContext(blink::WebFrame* frame,
|
||||||
int extension_group,
|
int extension_group,
|
||||||
int world_id) {
|
int world_id) {
|
||||||
// The first web frame is the main frame.
|
// The first web frame is the main frame.
|
||||||
if (main_frame_ == NULL)
|
if (main_frame_ == nullptr)
|
||||||
main_frame_ = frame;
|
main_frame_ = frame;
|
||||||
|
|
||||||
v8::Context::Scope scope(context);
|
v8::Context::Scope scope(context);
|
||||||
|
@ -156,19 +159,22 @@ void AtomRendererClient::DidCreateScriptContext(blink::WebFrame* frame,
|
||||||
web_page_envs_.push_back(env);
|
web_page_envs_.push_back(env);
|
||||||
|
|
||||||
// Make uv loop being wrapped by window context.
|
// Make uv loop being wrapped by window context.
|
||||||
if (node_bindings_->uv_env() == NULL)
|
if (node_bindings_->uv_env() == nullptr)
|
||||||
node_bindings_->set_uv_env(env);
|
node_bindings_->set_uv_env(env);
|
||||||
|
|
||||||
// Load everything.
|
// Load everything.
|
||||||
node_bindings_->LoadEnvironment(env);
|
node_bindings_->LoadEnvironment(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AtomRendererClient::DidClearWindowObject() {
|
||||||
|
}
|
||||||
|
|
||||||
void AtomRendererClient::WillReleaseScriptContext(
|
void AtomRendererClient::WillReleaseScriptContext(
|
||||||
blink::WebLocalFrame* frame,
|
blink::WebLocalFrame* frame,
|
||||||
v8::Handle<v8::Context> context,
|
v8::Handle<v8::Context> context,
|
||||||
int world_id) {
|
int world_id) {
|
||||||
node::Environment* env = node::Environment::GetCurrent(context);
|
node::Environment* env = node::Environment::GetCurrent(context);
|
||||||
if (env == NULL) {
|
if (env == nullptr) {
|
||||||
LOG(ERROR) << "Encounter a non-node context when releasing script context";
|
LOG(ERROR) << "Encounter a non-node context when releasing script context";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -190,7 +196,7 @@ void AtomRendererClient::WillReleaseScriptContext(
|
||||||
// Wrap the uv loop with another environment.
|
// Wrap the uv loop with another environment.
|
||||||
if (env == node_bindings_->uv_env()) {
|
if (env == node_bindings_->uv_env()) {
|
||||||
node::Environment* env = web_page_envs_.size() > 0 ? web_page_envs_[0] :
|
node::Environment* env = web_page_envs_.size() > 0 ? web_page_envs_[0] :
|
||||||
NULL;
|
nullptr;
|
||||||
node_bindings_->set_uv_env(env);
|
node_bindings_->set_uv_env(env);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ class AtomRendererClient : public content::ContentRendererClient,
|
||||||
void WillReleaseScriptContext(blink::WebLocalFrame* frame,
|
void WillReleaseScriptContext(blink::WebLocalFrame* frame,
|
||||||
v8::Handle<v8::Context> context,
|
v8::Handle<v8::Context> context,
|
||||||
int world_id);
|
int world_id);
|
||||||
|
void DidClearWindowObject();
|
||||||
|
|
||||||
AtomRendererBindings* atom_bindings() const { return atom_bindings_.get(); }
|
AtomRendererBindings* atom_bindings() const { return atom_bindings_.get(); }
|
||||||
|
|
||||||
|
@ -42,7 +43,7 @@ class AtomRendererClient : public content::ContentRendererClient,
|
||||||
};
|
};
|
||||||
|
|
||||||
// content::RenderProcessObserver:
|
// content::RenderProcessObserver:
|
||||||
virtual void WebKitInitialized() OVERRIDE;
|
void WebKitInitialized() override;
|
||||||
|
|
||||||
// content::ContentRendererClient:
|
// content::ContentRendererClient:
|
||||||
void RenderThreadStarted() override;
|
void RenderThreadStarted() override;
|
||||||
|
|
Loading…
Add table
Reference in a new issue