Index: chromecast/browser/cast_content_browser_client.cc |
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc |
index 0c601c31f543cf276084da536929169a3dacbd67..63d9e931edc9e6c59b7b75899e0c508f174cee29 100644 |
--- a/chromecast/browser/cast_content_browser_client.cc |
+++ b/chromecast/browser/cast_content_browser_client.cc |
@@ -77,28 +77,39 @@ namespace shell { |
namespace { |
#if defined(ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS) |
+ |
+static std::unique_ptr<media::CastMojoMediaClient> CreateCastMojoMediaClient( |
+ CastContentBrowserClient* browser_client) { |
+ return base::MakeUnique<media::CastMojoMediaClient>( |
+ base::Bind(&CastContentBrowserClient::CreateMediaPipelineBackend, |
+ base::Unretained(browser_client)), |
+ base::Bind(&CastContentBrowserClient::CreateCdmFactory, |
+ base::Unretained(browser_client)), |
+ browser_client->GetVideoResolutionPolicy(), |
+ browser_client->media_resource_tracker()); |
+} |
+ |
static std::unique_ptr<::shell::Service> CreateMojoMediaApplication( |
CastContentBrowserClient* browser_client, |
const base::Closure& quit_closure) { |
- std::unique_ptr<media::CastMojoMediaClient> mojo_media_client( |
- new media::CastMojoMediaClient( |
- base::Bind(&CastContentBrowserClient::CreateMediaPipelineBackend, |
- base::Unretained(browser_client)), |
- base::Bind(&CastContentBrowserClient::CreateCdmFactory, |
- base::Unretained(browser_client)), |
- browser_client->GetVideoResolutionPolicy(), |
- browser_client->media_resource_tracker())); |
- return std::unique_ptr<::shell::Service>( |
- new ::media::MojoMediaApplication(std::move(mojo_media_client), |
- quit_closure)); |
+ return std::unique_ptr<::shell::Service>(new ::media::MojoMediaApplication( |
+ CreateCastMojoMediaClient(browser_client), quit_closure)); |
} |
-#endif // defined(ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS) |
+static void CreateVideoDecoder(::media::MojoMediaClient* mojo_media_client, |
+ ::media::mojom::VideoDecoderRequest request) { |
+ DCHECK(mojo_media_client); |
+ mojo::MakeStrongBinding<::media::mojom::VideoDecoder>( |
+ base::MakeUnique<::media::MojoVideoDecoderService>(mojo_media_client), |
+ std::move(request)); |
+} |
+#endif // defined(ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS) |
} // namespace |
CastContentBrowserClient::CastContentBrowserClient() |
: cast_browser_main_parts_(nullptr), |
- url_request_context_factory_(new URLRequestContextFactory()) {} |
+ url_request_context_factory_(new URLRequestContextFactory()), |
+ cast_mojo_media_client_(CreateCastMojoMediaClient(this)) {} |
CastContentBrowserClient::~CastContentBrowserClient() { |
content::BrowserThread::DeleteSoon( |
@@ -422,6 +433,7 @@ void CastContentBrowserClient::ExposeInterfacesToRenderer( |
base::Bind(&media::MediaCapsImpl::AddBinding, |
base::Unretained(cast_browser_main_parts_->media_caps())), |
base::ThreadTaskRunnerHandle::Get()); |
+ registry->AddInterface() |
} |
void CastContentBrowserClient::RegisterInProcessMojoApplications( |