Commit f2bfd495 authored by Dave Tapuska's avatar Dave Tapuska Committed by Commit Bot

Add ChannelError callback on the browser_message_filter API.

It appears ipc_channel_mojo only calls ChannelError when the remote side
is closed. If we are in a blocking object wait on the UI thread in the
browser the ChannelClosing message won't be posted until the UI
thread is unblocked. The ChannelClosing message is sent when the host
side of the channel is actually closed; not when the remote site
closes the channel.

SynchronousCompositorBrowserFilter appears to be the only object that
waits on an object like this.

BUG=722928

Change-Id: Ie1fd2a4cf651317fdc197d3e260b2b7bd759d9cd
Reviewed-on: https://chromium-review.googlesource.com/887289
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Reviewed-by: default avatarAlex Moshchuk <alexmos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532215}
parent 8bb32fac
......@@ -167,6 +167,10 @@ void SynchronousCompositorBrowserFilter::OnChannelClosing() {
SignalAllFutures();
}
void SynchronousCompositorBrowserFilter::OnChannelError() {
SignalAllFutures();
}
void SynchronousCompositorBrowserFilter::SignalAllFutures() {
base::AutoLock lock(future_map_lock_);
for (auto& pair : future_map_) {
......
......@@ -38,6 +38,7 @@ class SynchronousCompositorBrowserFilter : public BrowserMessageFilter {
void OnFilterAdded(IPC::Channel* channel) override;
void OnFilterRemoved() override;
void OnChannelClosing() override;
void OnChannelError() override;
void SyncStateAfterVSync(ui::WindowAndroid* window_android,
SynchronousCompositorHost* compositor_host);
......
......@@ -49,6 +49,8 @@ class BrowserMessageFilter::Internal : public IPC::MessageFilter {
filter_->OnChannelClosing();
}
void OnChannelError() override { filter_->OnChannelError(); }
void OnChannelConnected(int32_t peer_pid) override {
filter_->peer_process_ = base::Process::OpenWithExtraPrivileges(peer_pid);
filter_->OnChannelConnected(peer_pid);
......
......@@ -48,6 +48,7 @@ class CONTENT_EXPORT BrowserMessageFilter
virtual void OnFilterAdded(IPC::Channel* channel) {}
virtual void OnFilterRemoved() {}
virtual void OnChannelClosing() {}
virtual void OnChannelError() {}
virtual void OnChannelConnected(int32_t peer_pid) {}
// Called when the message filter is about to be deleted. This gives
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment