Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1283)

Unified Diff: mojo/embedder/channel_init.cc

Issue 472603002: Mojo: Add the ability to notify a Mojo Channel that it's going to be destroyed soon. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/embedder/channel_init.cc
diff --git a/mojo/embedder/channel_init.cc b/mojo/embedder/channel_init.cc
index 8b79fc8b3a09a04805fb7699bd5fedf7559db3e7..2da9bcd0cd952e59191a38df82f30c8e998b071b 100644
--- a/mojo/embedder/channel_init.cc
+++ b/mojo/embedder/channel_init.cc
@@ -15,11 +15,8 @@ ChannelInit::ChannelInit() : channel_info_(NULL), weak_factory_(this) {
}
ChannelInit::~ChannelInit() {
- if (channel_info_) {
- io_thread_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&mojo::embedder::DestroyChannelOnIOThread, channel_info_));
- }
+ if (channel_info_)
+ DestroyChannel(channel_info_);
}
mojo::ScopedMessagePipeHandle ChannelInit::Init(
@@ -39,19 +36,22 @@ mojo::ScopedMessagePipeHandle ChannelInit::Init(
return message_pipe.Pass();
}
+void ChannelInit::WillDestroySoon() {
+ if (channel_info_)
+ WillDestroyChannelSoon(channel_info_);
+}
+
// static
-void ChannelInit::OnCreatedChannel(base::WeakPtr<ChannelInit> host,
+void ChannelInit::OnCreatedChannel(base::WeakPtr<ChannelInit> self,
scoped_refptr<base::TaskRunner> io_thread,
embedder::ChannelInfo* channel) {
- // By the time we get here |host| may have been destroyed. If so, shutdown the
- // channel.
- if (!host.get()) {
- io_thread->PostTask(
- FROM_HERE,
- base::Bind(&mojo::embedder::DestroyChannelOnIOThread, channel));
+ // If |self| was already destroyed, shut the channel down.
+ if (!self) {
+ DestroyChannel(channel);
return;
}
- host->channel_info_ = channel;
+
+ self->channel_info_ = channel;
}
} // namespace embedder

Powered by Google App Engine
This is Rietveld 408576698