Index: content/renderer/gpu/renderer_compositor_frame_sink.cc |
diff --git a/content/renderer/gpu/renderer_compositor_frame_sink.cc b/content/renderer/gpu/renderer_compositor_frame_sink.cc |
index 16ccae09e0618e338d0de11d2f4676883ea6cb42..2fafbf0613a132efe335d133ce594052dfcbd706 100644 |
--- a/content/renderer/gpu/renderer_compositor_frame_sink.cc |
+++ b/content/renderer/gpu/renderer_compositor_frame_sink.cc |
@@ -74,7 +74,11 @@ RendererCompositorFrameSink::RendererCompositorFrameSink( |
thread_checker_.DetachFromThread(); |
} |
-RendererCompositorFrameSink::~RendererCompositorFrameSink() = default; |
+RendererCompositorFrameSink::~RendererCompositorFrameSink() { |
+ // TODO(crbug.com/702764): If not detached then IPC messages would crash |
+ // after this class is destroyed. |
+ CHECK(!bound_); |
+} |
bool RendererCompositorFrameSink::BindToClient( |
cc::CompositorFrameSinkClient* client) { |
@@ -91,6 +95,7 @@ bool RendererCompositorFrameSink::BindToClient( |
compositor_frame_sink_proxy_); |
compositor_frame_sink_filter_->AddHandlerOnCompositorThread( |
routing_id_, compositor_frame_sink_filter_handler_); |
+ bound_ = true; |
return true; |
} |
@@ -105,6 +110,7 @@ void RendererCompositorFrameSink::DetachFromClient() { |
routing_id_, compositor_frame_sink_filter_handler_); |
cc::CompositorFrameSink::DetachFromClient(); |
+ bound_ = false; |
} |
void RendererCompositorFrameSink::SubmitCompositorFrame( |