Index: media/mojo/services/service_factory_impl.cc |
diff --git a/media/mojo/services/service_factory_impl.cc b/media/mojo/services/service_factory_impl.cc |
index 4bdf49055ca016762a9e476f3839dc01d44028dc..b93b17dd8d36d4e22e9fd276caad235cac012ffe 100644 |
--- a/media/mojo/services/service_factory_impl.cc |
+++ b/media/mojo/services/service_factory_impl.cc |
@@ -8,6 +8,7 @@ |
#include "base/threading/thread_task_runner_handle.h" |
#include "media/base/media_log.h" |
#include "media/mojo/services/mojo_media_client.h" |
+#include "mojo/public/cpp/bindings/strong_binding.h" |
#include "services/shell/public/interfaces/interface_provider.mojom.h" |
#if defined(ENABLE_MOJO_AUDIO_DECODER) |
@@ -33,12 +34,11 @@ |
namespace media { |
ServiceFactoryImpl::ServiceFactoryImpl( |
- mojo::InterfaceRequest<mojom::ServiceFactory> request, |
shell::mojom::InterfaceProviderPtr interfaces, |
scoped_refptr<MediaLog> media_log, |
std::unique_ptr<shell::ServiceContextRef> connection_ref, |
MojoMediaClient* mojo_media_client) |
- : binding_(this, std::move(request)), |
+ : |
#if defined(ENABLE_MOJO_CDM) |
interfaces_(std::move(interfaces)), |
#endif |
@@ -68,15 +68,19 @@ void ServiceFactoryImpl::CreateAudioDecoder( |
return; |
} |
- new MojoAudioDecoderService(cdm_service_context_.GetWeakPtr(), |
- std::move(audio_decoder), std::move(request)); |
+ mojo::MakeStrongBinding( |
+ base::MakeUnique<MojoAudioDecoderService>( |
+ cdm_service_context_.GetWeakPtr(), std::move(audio_decoder)), |
+ std::move(request)); |
#endif // defined(ENABLE_MOJO_AUDIO_DECODER) |
} |
void ServiceFactoryImpl::CreateVideoDecoder( |
mojom::VideoDecoderRequest request) { |
#if defined(ENABLE_MOJO_VIDEO_DECODER) |
- new MojoVideoDecoderService(std::move(request), mojo_media_client_); |
+ mojo::MakeStrongBinding( |
+ base::MakeUnique<MojoVideoDecoderService>(mojo_media_client_), |
+ std::move(request)); |
#endif // defined(ENABLE_MOJO_VIDEO_DECODER) |
} |
@@ -101,10 +105,11 @@ void ServiceFactoryImpl::CreateRenderer( |
return; |
} |
- // The created object is owned by the pipe. |
- new MojoRendererService(cdm_service_context_.GetWeakPtr(), |
- std::move(audio_sink), std::move(video_sink), |
- std::move(renderer), std::move(request)); |
+ mojo::MakeStrongBinding( |
+ base::MakeUnique<MojoRendererService>( |
+ cdm_service_context_.GetWeakPtr(), std::move(audio_sink), |
+ std::move(video_sink), std::move(renderer)), |
+ std::move(request)); |
#endif // defined(ENABLE_MOJO_RENDERER) |
} |
@@ -115,9 +120,9 @@ void ServiceFactoryImpl::CreateCdm( |
if (!cdm_factory) |
return; |
- // The created object is owned by the pipe. |
- new MojoCdmService(cdm_service_context_.GetWeakPtr(), cdm_factory, |
- std::move(request)); |
+ mojo::MakeStrongBinding(base::MakeUnique<MojoCdmService>( |
+ cdm_service_context_.GetWeakPtr(), cdm_factory), |
+ std::move(request)); |
#endif // defined(ENABLE_MOJO_CDM) |
} |