Chromium Code Reviews| Index: content/renderer/render_frame_impl.cc |
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc |
| index de2f118f34e72e2b833dba31aedd6962c6651302..658e12e0aa267cba100e7b211fed1c9f5ef7e311 100644 |
| --- a/content/renderer/render_frame_impl.cc |
| +++ b/content/renderer/render_frame_impl.cc |
| @@ -259,8 +259,11 @@ |
| #endif |
| #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| -#include "media/remoting/remoting_controller.h" // nogncheck |
| -#include "media/remoting/remoting_renderer_factory.h" // nogncheck |
| +#include "media/remoting/remoting_cdm_controller.h" // nogncheck |
| +#include "media/remoting/remoting_cdm_factory.h" // nogncheck |
| +#include "media/remoting/remoting_renderer_controller.h" // nogncheck |
| +#include "media/remoting/remoting_renderer_factory.h" // nogncheck |
| +#include "media/remoting/remoting_sink_observer.h" // nogncheck |
| #endif |
| using base::Time; |
| @@ -1157,6 +1160,18 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params) |
| #endif |
| manifest_manager_ = new ManifestManager(this); |
| + |
| +#if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| + // Create the RemotingSinkObserver to monitor the remoting sink availablity. |
| + media::mojom::RemotingSourcePtr remoting_source; |
| + media::mojom::RemotingSourceRequest remoting_source_request = |
| + mojo::GetProxy(&remoting_source); |
| + media::mojom::RemoterPtr remoter; |
| + GetRemoterFactory()->Create(std::move(remoting_source), |
| + mojo::GetProxy(&remoter)); |
| + remoting_sink_observer_ = base::MakeUnique<media::RemotingSinkObserver>( |
| + std::move(remoting_source_request), std::move(remoter)); |
| +#endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| } |
| RenderFrameImpl::~RenderFrameImpl() { |
| @@ -2717,16 +2732,21 @@ blink::WebPlugin* RenderFrameImpl::createPlugin( |
| } |
| #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| -std::unique_ptr<media::RemotingController> |
| -RenderFrameImpl::CreateRemotingController() { |
| +std::unique_ptr<media::RemotingRendererController> |
| +RenderFrameImpl::CreateRemotingRendererController() { |
| media::mojom::RemotingSourcePtr remoting_source; |
| media::mojom::RemotingSourceRequest remoting_source_request = |
| mojo::GetProxy(&remoting_source); |
| media::mojom::RemoterPtr remoter; |
| GetRemoterFactory()->Create(std::move(remoting_source), |
| mojo::GetProxy(&remoter)); |
| - return base::MakeUnique<media::RemotingController>( |
| - std::move(remoting_source_request), std::move(remoter)); |
| + scoped_refptr<media::RemotingSourceImpl> remoting_source_impl = |
| + new media::RemotingSourceImpl(std::move(remoting_source_request), |
| + std::move(remoter)); |
| + if (remoting_sink_observer_->is_sink_available()) |
|
miu
2016/11/05 04:05:15
Let's not do this for the Renderer:
1. Let the Re
xjz
2016/11/07 19:03:54
Done. And let |cdm_factory_| owns the |remoting_si
|
| + remoting_source_impl->OnSinkAvailable(); |
| + return base::MakeUnique<media::RemotingRendererController>( |
| + remoting_source_impl); |
| } |
| #endif |
| @@ -2774,8 +2794,8 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
| #endif // defined(OS_ANDROID) |
| #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| - std::unique_ptr<media::RemotingController> remoting_controller = |
| - CreateRemotingController(); |
| + std::unique_ptr<media::RemotingRendererController> remoting_controller = |
| + CreateRemotingRendererController(); |
| base::WeakPtr<media::MediaObserver> media_observer = |
| remoting_controller->GetWeakPtr(); |
| #else |
| @@ -2833,7 +2853,7 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
| } |
| #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| - media::RemotingController* remoting_controller_ptr = |
| + media::RemotingRendererController* remoting_controller_ptr = |
| remoting_controller.get(); |
| media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( |
| std::move(media_renderer_factory), std::move(remoting_controller)); |
| @@ -6427,8 +6447,15 @@ media::CdmFactory* RenderFrameImpl::GetCdmFactory() { |
| #if BUILDFLAG(ENABLE_PEPPER_CDMS) |
| DCHECK(frame_); |
| +#if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
|
miu
2016/11/05 04:05:15
nit: Please eliminate duplicate code and simplify:
xjz
2016/11/07 19:03:54
Done.
|
| + cdm_factory_.reset(new media::RemotingCdmFactory( |
| + base::MakeUnique<RenderCdmFactory>( |
| + base::Bind(&PepperCdmWrapperImpl::Create, frame_)), |
| + GetRemoterFactory(), remoting_sink_observer_.get())); |
| +#else |
| cdm_factory_.reset( |
| new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); |
| +#endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) |
| return cdm_factory_.get(); |