Simplify RemoteCallbackFreer

This commit is contained in:
Cheng Zhao 2016-04-26 16:37:46 +09:00
parent 4f21a50d23
commit 76a954077d
2 changed files with 6 additions and 33 deletions

View file

@ -7,8 +7,6 @@
#include "atom/common/api/api_messages.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h"
namespace atom {
@ -26,8 +24,6 @@ RemoteCallbackFreer::RemoteCallbackFreer(v8::Isolate* isolate,
content::WebContents* web_contents)
: ObjectLifeMonitor(isolate, target),
content::WebContentsObserver(web_contents),
web_contents_(web_contents),
renderer_process_id_(GetRendererProcessID()),
object_id_(object_id) {
}
@ -35,36 +31,17 @@ RemoteCallbackFreer::~RemoteCallbackFreer() {
}
void RemoteCallbackFreer::RunDestructor() {
if (!web_contents_)
return;
if (renderer_process_id_ == GetRendererProcessID()) {
base::string16 channel =
base::ASCIIToUTF16("ELECTRON_RENDERER_RELEASE_CALLBACK");
base::ListValue args;
args.AppendInteger(object_id_);
Send(new AtomViewMsg_Message(routing_id(), channel, args));
}
web_contents_ = nullptr;
Observe(nullptr);
}
void RemoteCallbackFreer::RenderViewDeleted(content::RenderViewHost*) {
if (!web_contents_)
return;
web_contents_ = nullptr;
delete this;
}
int RemoteCallbackFreer::GetRendererProcessID() {
if (!web_contents_)
return -1;
auto process = web_contents()->GetRenderProcessHost();
if (!process)
return -1;
return process->GetID();
}
} // namespace atom

View file

@ -30,10 +30,6 @@ class RemoteCallbackFreer : public ObjectLifeMonitor,
void RenderViewDeleted(content::RenderViewHost*) override;
private:
int GetRendererProcessID();
content::WebContents* web_contents_;
int renderer_process_id_;
int object_id_;
DISALLOW_COPY_AND_ASSIGN(RemoteCallbackFreer);