| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/render_frame_impl.h" | 5 #include "content/renderer/render_frame_impl.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 | 175 |
| 176 #if defined(ENABLE_PEPPER_CDMS) | 176 #if defined(ENABLE_PEPPER_CDMS) |
| 177 #include "content/renderer/media/crypto/pepper_cdm_wrapper_impl.h" | 177 #include "content/renderer/media/crypto/pepper_cdm_wrapper_impl.h" |
| 178 #elif defined(ENABLE_BROWSER_CDMS) | 178 #elif defined(ENABLE_BROWSER_CDMS) |
| 179 #include "content/renderer/media/crypto/renderer_cdm_manager.h" | 179 #include "content/renderer/media/crypto/renderer_cdm_manager.h" |
| 180 #endif | 180 #endif |
| 181 | 181 |
| 182 #if defined(ENABLE_MOJO_MEDIA) | 182 #if defined(ENABLE_MOJO_MEDIA) |
| 183 #include "media/mojo/services/mojo_cdm_factory.h" | 183 #include "media/mojo/services/mojo_cdm_factory.h" |
| 184 #include "media/mojo/services/mojo_renderer_factory.h" | 184 #include "media/mojo/services/mojo_renderer_factory.h" |
| 185 #include "mojo/application/public/cpp/connect.h" |
| 185 #include "mojo/application/public/interfaces/shell.mojom.h" | 186 #include "mojo/application/public/interfaces/shell.mojom.h" |
| 186 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" | 187 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" |
| 187 #else | 188 #else |
| 188 #include "media/renderers/default_renderer_factory.h" | 189 #include "media/renderers/default_renderer_factory.h" |
| 189 #endif | 190 #endif |
| 190 | 191 |
| 191 #if defined(ENABLE_WEBVR) | 192 #if defined(ENABLE_WEBVR) |
| 192 #include "content/renderer/vr/vr_dispatcher.h" | 193 #include "content/renderer/vr/vr_dispatcher.h" |
| 193 #endif | 194 #endif |
| 194 | 195 |
| (...skipping 1830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2025 base::Unretained(GetContentClient()->renderer()), | 2026 base::Unretained(GetContentClient()->renderer()), |
| 2026 static_cast<RenderFrame*>(this)), | 2027 static_cast<RenderFrame*>(this)), |
| 2027 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), | 2028 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), |
| 2028 media_log, render_thread->GetMediaThreadTaskRunner(), | 2029 media_log, render_thread->GetMediaThreadTaskRunner(), |
| 2029 render_thread->compositor_task_runner(), | 2030 render_thread->compositor_task_runner(), |
| 2030 base::Bind(&GetSharedMainThreadContext3D), GetMediaPermission(), | 2031 base::Bind(&GetSharedMainThreadContext3D), GetMediaPermission(), |
| 2031 initial_cdm); | 2032 initial_cdm); |
| 2032 | 2033 |
| 2033 #if defined(ENABLE_MOJO_MEDIA) | 2034 #if defined(ENABLE_MOJO_MEDIA) |
| 2034 scoped_ptr<media::RendererFactory> media_renderer_factory( | 2035 scoped_ptr<media::RendererFactory> media_renderer_factory( |
| 2035 new media::MojoRendererFactory(GetMediaServiceProvider())); | 2036 new media::MojoRendererFactory(GetMediaServiceFactory())); |
| 2036 #else | 2037 #else |
| 2037 scoped_ptr<media::RendererFactory> media_renderer_factory = | 2038 scoped_ptr<media::RendererFactory> media_renderer_factory = |
| 2038 GetContentClient()->renderer()->CreateMediaRendererFactory( | 2039 GetContentClient()->renderer()->CreateMediaRendererFactory( |
| 2039 this, render_thread->GetGpuFactories(), media_log); | 2040 this, render_thread->GetGpuFactories(), media_log); |
| 2040 | 2041 |
| 2041 if (!media_renderer_factory.get()) { | 2042 if (!media_renderer_factory.get()) { |
| 2042 media_renderer_factory.reset(new media::DefaultRendererFactory( | 2043 media_renderer_factory.reset(new media::DefaultRendererFactory( |
| 2043 media_log, render_thread->GetGpuFactories(), | 2044 media_log, render_thread->GetGpuFactories(), |
| 2044 *render_thread->GetAudioHardwareConfig())); | 2045 *render_thread->GetAudioHardwareConfig())); |
| 2045 } | 2046 } |
| (...skipping 2933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4979 | 4980 |
| 4980 #endif // defined(OS_ANDROID) | 4981 #endif // defined(OS_ANDROID) |
| 4981 | 4982 |
| 4982 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { | 4983 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
| 4983 if (!media_permission_dispatcher_) | 4984 if (!media_permission_dispatcher_) |
| 4984 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); | 4985 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); |
| 4985 return media_permission_dispatcher_; | 4986 return media_permission_dispatcher_; |
| 4986 } | 4987 } |
| 4987 | 4988 |
| 4988 #if defined(ENABLE_MOJO_MEDIA) | 4989 #if defined(ENABLE_MOJO_MEDIA) |
| 4989 mojo::ServiceProvider* RenderFrameImpl::GetMediaServiceProvider() { | 4990 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { |
| 4990 if (!media_service_provider_) { | 4991 if (!media_service_factory_) { |
| 4991 mojo::InterfacePtr<mojo::Shell> shell_ptr; | 4992 mojo::InterfacePtr<mojo::Shell> shell_ptr; |
| 4992 GetServiceRegistry()->ConnectToRemoteService(mojo::GetProxy(&shell_ptr)); | 4993 GetServiceRegistry()->ConnectToRemoteService(mojo::GetProxy(&shell_ptr)); |
| 4994 |
| 4995 mojo::ServiceProviderPtr service_provider; |
| 4993 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 4996 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 4994 request->url = mojo::String::From("mojo:media"); | 4997 request->url = mojo::String::From("mojo:media"); |
| 4995 shell_ptr->ConnectToApplication( | 4998 shell_ptr->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
| 4996 request.Pass(), GetProxy(&media_service_provider_), nullptr); | 4999 nullptr); |
| 4997 media_service_provider_.set_connection_error_handler( | 5000 |
| 4998 base::Bind(&RenderFrameImpl::OnMediaServiceProviderConnectionError, | 5001 mojo::ConnectToService(service_provider.get(), &media_service_factory_); |
| 5002 |
| 5003 media_service_factory_.set_connection_error_handler( |
| 5004 base::Bind(&RenderFrameImpl::OnMediaServiceFactoryConnectionError, |
| 4999 base::Unretained(this))); | 5005 base::Unretained(this))); |
| 5000 } | 5006 } |
| 5001 return media_service_provider_.get(); | 5007 |
| 5008 return media_service_factory_.get(); |
| 5002 } | 5009 } |
| 5003 | 5010 |
| 5004 void RenderFrameImpl::OnMediaServiceProviderConnectionError() { | 5011 void RenderFrameImpl::OnMediaServiceFactoryConnectionError() { |
| 5005 media_service_provider_.reset(); | 5012 // TODO(xhwang): Resetting |media_service_factory_| could cause access |
| 5013 // violation on the old |media_service_factory_| by outstanding |
| 5014 // media::CdmFactory or media::RendererFactory. Find a better way to handle |
| 5015 // this. |
| 5016 // media_service_factory_.reset(); |
| 5006 } | 5017 } |
| 5007 #endif | 5018 #endif |
| 5008 | 5019 |
| 5009 bool RenderFrameImpl::AreSecureCodecsSupported() { | 5020 bool RenderFrameImpl::AreSecureCodecsSupported() { |
| 5010 #if defined(OS_ANDROID) | 5021 #if defined(OS_ANDROID) |
| 5011 // Hardware-secure codecs are only supported if secure surfaces are enabled. | 5022 // Hardware-secure codecs are only supported if secure surfaces are enabled. |
| 5012 return render_view_->renderer_preferences_ | 5023 return render_view_->renderer_preferences_ |
| 5013 .use_video_overlay_for_embedded_encrypted_video; | 5024 .use_video_overlay_for_embedded_encrypted_video; |
| 5014 #else | 5025 #else |
| 5015 return false; | 5026 return false; |
| 5016 #endif // defined(OS_ANDROID) | 5027 #endif // defined(OS_ANDROID) |
| 5017 } | 5028 } |
| 5018 | 5029 |
| 5019 media::CdmFactory* RenderFrameImpl::GetCdmFactory() { | 5030 media::CdmFactory* RenderFrameImpl::GetCdmFactory() { |
| 5020 #if defined(ENABLE_BROWSER_CDMS) | 5031 #if defined(ENABLE_BROWSER_CDMS) |
| 5021 if (!cdm_manager_) | 5032 if (!cdm_manager_) |
| 5022 cdm_manager_ = new RendererCdmManager(this); | 5033 cdm_manager_ = new RendererCdmManager(this); |
| 5023 #endif // defined(ENABLE_BROWSER_CDMS) | 5034 #endif // defined(ENABLE_BROWSER_CDMS) |
| 5024 | 5035 |
| 5025 if (!cdm_factory_) { | 5036 if (!cdm_factory_) { |
| 5026 DCHECK(frame_); | 5037 DCHECK(frame_); |
| 5027 | 5038 |
| 5028 #if defined(ENABLE_MOJO_MEDIA) | 5039 #if defined(ENABLE_MOJO_MEDIA) |
| 5029 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaServiceProvider())); | 5040 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaServiceFactory())); |
| 5030 #else | 5041 #else |
| 5031 cdm_factory_.reset(new RenderCdmFactory( | 5042 cdm_factory_.reset(new RenderCdmFactory( |
| 5032 #if defined(ENABLE_PEPPER_CDMS) | 5043 #if defined(ENABLE_PEPPER_CDMS) |
| 5033 base::Bind(&PepperCdmWrapperImpl::Create, frame_) | 5044 base::Bind(&PepperCdmWrapperImpl::Create, frame_) |
| 5034 #elif defined(ENABLE_BROWSER_CDMS) | 5045 #elif defined(ENABLE_BROWSER_CDMS) |
| 5035 cdm_manager_ | 5046 cdm_manager_ |
| 5036 #endif | 5047 #endif |
| 5037 )); | 5048 )); |
| 5038 #endif // defined(ENABLE_MOJO_MEDIA) | 5049 #endif // defined(ENABLE_MOJO_MEDIA) |
| 5039 } | 5050 } |
| 5040 | 5051 |
| 5041 return cdm_factory_.get(); | 5052 return cdm_factory_.get(); |
| 5042 } | 5053 } |
| 5043 | 5054 |
| 5044 void RenderFrameImpl::RegisterMojoServices() { | 5055 void RenderFrameImpl::RegisterMojoServices() { |
| 5045 // Only main frame have ImageDownloader service. | 5056 // Only main frame have ImageDownloader service. |
| 5046 if (!frame_->parent()) { | 5057 if (!frame_->parent()) { |
| 5047 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( | 5058 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( |
| 5048 base::Bind(&ImageDownloaderImpl::CreateMojoService, | 5059 base::Bind(&ImageDownloaderImpl::CreateMojoService, |
| 5049 base::Unretained(this))); | 5060 base::Unretained(this))); |
| 5050 } | 5061 } |
| 5051 } | 5062 } |
| 5052 | 5063 |
| 5053 } // namespace content | 5064 } // namespace content |
| OLD | NEW |