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 |