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

View file

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