Index: media/mojo/services/mojo_renderer_service.cc |
diff --git a/media/mojo/services/mojo_renderer_service.cc b/media/mojo/services/mojo_renderer_service.cc |
index 22c9a833377e2c420ca172243b351f1f9eb849af..5cd986ef3eac7cc1b885c21ae7a71bf1366fd16e 100644 |
--- a/media/mojo/services/mojo_renderer_service.cc |
+++ b/media/mojo/services/mojo_renderer_service.cc |
@@ -18,6 +18,16 @@ |
namespace media { |
+namespace { |
+ |
+void CloseBindingOnBadMessage(mojo::StrongBindingPtr<mojom::Renderer> binding) { |
+ LOG(ERROR) << __func__; |
+ DCHECK(binding); |
+ binding->Close(); |
+} |
+ |
+} // namespace |
+ |
// Time interval to update media time. |
const int kTimeUpdateIntervalMs = 50; |
@@ -37,7 +47,7 @@ mojo::StrongBindingPtr<mojom::Renderer> MojoRendererService::Create( |
mojo::MakeStrongBinding<mojom::Renderer>(base::WrapUnique(service), |
std::move(request)); |
- service->binding_ = binding; |
+ service->set_bad_message_cb(base::Bind(&CloseBindingOnBadMessage, binding)); |
return binding; |
} |
@@ -271,7 +281,10 @@ void MojoRendererService::InitiateScopedSurfaceRequest( |
// |renderer_| is likely not of type MediaPlayerRenderer. |
// This is an unexpected call, and the connection should be closed. |
mojo::ReportBadMessage("Unexpected call to InitiateScopedSurfaceRequest."); |
- binding_->Close(); |
+ |
+ // This may cause |this| to be destructed. |
+ DCHECK(!bad_message_cb_.is_null()); |
+ bad_message_cb_.Run(); |
return; |
} |