Chromium Code Reviews| 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 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 174 | 174 |
| 175 #if defined(ENABLE_PEPPER_CDMS) | 175 #if defined(ENABLE_PEPPER_CDMS) |
| 176 #include "content/renderer/media/crypto/pepper_cdm_wrapper_impl.h" | 176 #include "content/renderer/media/crypto/pepper_cdm_wrapper_impl.h" |
| 177 #elif defined(ENABLE_BROWSER_CDMS) | 177 #elif defined(ENABLE_BROWSER_CDMS) |
| 178 #include "content/renderer/media/crypto/renderer_cdm_manager.h" | 178 #include "content/renderer/media/crypto/renderer_cdm_manager.h" |
| 179 #endif | 179 #endif |
| 180 | 180 |
| 181 #if defined(ENABLE_MOJO_MEDIA) | 181 #if defined(ENABLE_MOJO_MEDIA) |
| 182 #include "media/mojo/services/mojo_cdm_factory.h" | 182 #include "media/mojo/services/mojo_cdm_factory.h" |
| 183 #include "media/mojo/services/mojo_renderer_factory.h" | 183 #include "media/mojo/services/mojo_renderer_factory.h" |
| 184 #include "mojo/application/public/cpp/connect.h" | |
| 184 #include "mojo/application/public/interfaces/shell.mojom.h" | 185 #include "mojo/application/public/interfaces/shell.mojom.h" |
| 185 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" | 186 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" |
| 186 #else | 187 #else |
| 187 #include "media/renderers/default_renderer_factory.h" | 188 #include "media/renderers/default_renderer_factory.h" |
| 188 #endif | 189 #endif |
| 189 | 190 |
| 190 #if defined(ENABLE_WEBVR) | 191 #if defined(ENABLE_WEBVR) |
| 191 #include "content/renderer/vr/vr_dispatcher.h" | 192 #include "content/renderer/vr/vr_dispatcher.h" |
| 192 #endif | 193 #endif |
| 193 | 194 |
| (...skipping 1830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2024 base::Unretained(GetContentClient()->renderer()), | 2025 base::Unretained(GetContentClient()->renderer()), |
| 2025 static_cast<RenderFrame*>(this)), | 2026 static_cast<RenderFrame*>(this)), |
| 2026 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), | 2027 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), |
| 2027 media_log, render_thread->GetMediaThreadTaskRunner(), | 2028 media_log, render_thread->GetMediaThreadTaskRunner(), |
| 2028 render_thread->compositor_task_runner(), | 2029 render_thread->compositor_task_runner(), |
| 2029 base::Bind(&GetSharedMainThreadContext3D), GetMediaPermission(), | 2030 base::Bind(&GetSharedMainThreadContext3D), GetMediaPermission(), |
| 2030 initial_cdm); | 2031 initial_cdm); |
| 2031 | 2032 |
| 2032 #if defined(ENABLE_MOJO_MEDIA) | 2033 #if defined(ENABLE_MOJO_MEDIA) |
| 2033 scoped_ptr<media::RendererFactory> media_renderer_factory( | 2034 scoped_ptr<media::RendererFactory> media_renderer_factory( |
| 2034 new media::MojoRendererFactory(GetMediaServiceProvider())); | 2035 new media::MojoRendererFactory(GetMediaServiceFactory())); |
| 2035 #else | 2036 #else |
| 2036 scoped_ptr<media::RendererFactory> media_renderer_factory = | 2037 scoped_ptr<media::RendererFactory> media_renderer_factory = |
| 2037 GetContentClient()->renderer()->CreateMediaRendererFactory( | 2038 GetContentClient()->renderer()->CreateMediaRendererFactory( |
| 2038 this, render_thread->GetGpuFactories(), media_log); | 2039 this, render_thread->GetGpuFactories(), media_log); |
| 2039 | 2040 |
| 2040 if (!media_renderer_factory.get()) { | 2041 if (!media_renderer_factory.get()) { |
| 2041 media_renderer_factory.reset(new media::DefaultRendererFactory( | 2042 media_renderer_factory.reset(new media::DefaultRendererFactory( |
| 2042 media_log, render_thread->GetGpuFactories(), | 2043 media_log, render_thread->GetGpuFactories(), |
| 2043 *render_thread->GetAudioHardwareConfig())); | 2044 *render_thread->GetAudioHardwareConfig())); |
| 2044 } | 2045 } |
| (...skipping 2921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4966 | 4967 |
| 4967 #endif // defined(OS_ANDROID) | 4968 #endif // defined(OS_ANDROID) |
| 4968 | 4969 |
| 4969 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { | 4970 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
| 4970 if (!media_permission_dispatcher_) | 4971 if (!media_permission_dispatcher_) |
| 4971 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); | 4972 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); |
| 4972 return media_permission_dispatcher_; | 4973 return media_permission_dispatcher_; |
| 4973 } | 4974 } |
| 4974 | 4975 |
| 4975 #if defined(ENABLE_MOJO_MEDIA) | 4976 #if defined(ENABLE_MOJO_MEDIA) |
| 4976 mojo::ServiceProvider* RenderFrameImpl::GetMediaServiceProvider() { | 4977 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { |
| 4977 if (!media_service_provider_) { | 4978 if (!media_service_factory_) { |
| 4978 mojo::InterfacePtr<mojo::Shell> shell_ptr; | 4979 mojo::InterfacePtr<mojo::Shell> shell_ptr; |
| 4979 GetServiceRegistry()->ConnectToRemoteService(mojo::GetProxy(&shell_ptr)); | 4980 GetServiceRegistry()->ConnectToRemoteService(mojo::GetProxy(&shell_ptr)); |
| 4981 | |
| 4982 mojo::ServiceProviderPtr service_provider; | |
| 4980 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 4983 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 4981 request->url = mojo::String::From("mojo:media"); | 4984 request->url = mojo::String::From("mojo:media"); |
| 4982 shell_ptr->ConnectToApplication( | 4985 shell_ptr->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
|
Ken Rockot(use gerrit already)
2015/07/21 17:29:06
Hmm this is going to be a recurring pattern. I thi
xhwang
2015/07/21 22:30:54
Acknowledged.
| |
| 4983 request.Pass(), GetProxy(&media_service_provider_), nullptr); | 4986 nullptr); |
| 4984 media_service_provider_.set_connection_error_handler( | 4987 |
| 4985 base::Bind(&RenderFrameImpl::OnMediaServiceProviderConnectionError, | 4988 mojo::ConnectToService(service_provider.get(), &media_service_factory_); |
| 4989 | |
| 4990 media_service_factory_.set_connection_error_handler( | |
| 4991 base::Bind(&RenderFrameImpl::OnMediaServiceFactoryConnectionError, | |
| 4986 base::Unretained(this))); | 4992 base::Unretained(this))); |
| 4987 } | 4993 } |
| 4988 return media_service_provider_.get(); | 4994 |
| 4995 return media_service_factory_.get(); | |
| 4989 } | 4996 } |
| 4990 | 4997 |
| 4991 void RenderFrameImpl::OnMediaServiceProviderConnectionError() { | 4998 void RenderFrameImpl::OnMediaServiceFactoryConnectionError() { |
| 4992 media_service_provider_.reset(); | 4999 // TODO(xhwang): Resetting |media_service_factory_| could cause access |
| 5000 // violation on the old |media_service_factory_| by outstanding | |
| 5001 // media::CdmFactory or media::RendererFactory. Find a better way to handle | |
| 5002 // this. | |
| 5003 // media_service_factory_.reset(); | |
| 4993 } | 5004 } |
| 4994 #endif | 5005 #endif |
| 4995 | 5006 |
| 4996 bool RenderFrameImpl::AreSecureCodecsSupported() { | 5007 bool RenderFrameImpl::AreSecureCodecsSupported() { |
| 4997 #if defined(OS_ANDROID) | 5008 #if defined(OS_ANDROID) |
| 4998 // Hardware-secure codecs are only supported if secure surfaces are enabled. | 5009 // Hardware-secure codecs are only supported if secure surfaces are enabled. |
| 4999 return render_view_->renderer_preferences_ | 5010 return render_view_->renderer_preferences_ |
| 5000 .use_video_overlay_for_embedded_encrypted_video; | 5011 .use_video_overlay_for_embedded_encrypted_video; |
| 5001 #else | 5012 #else |
| 5002 return false; | 5013 return false; |
| 5003 #endif // defined(OS_ANDROID) | 5014 #endif // defined(OS_ANDROID) |
| 5004 } | 5015 } |
| 5005 | 5016 |
| 5006 media::CdmFactory* RenderFrameImpl::GetCdmFactory() { | 5017 media::CdmFactory* RenderFrameImpl::GetCdmFactory() { |
| 5007 #if defined(ENABLE_BROWSER_CDMS) | 5018 #if defined(ENABLE_BROWSER_CDMS) |
| 5008 if (!cdm_manager_) | 5019 if (!cdm_manager_) |
| 5009 cdm_manager_ = new RendererCdmManager(this); | 5020 cdm_manager_ = new RendererCdmManager(this); |
| 5010 #endif // defined(ENABLE_BROWSER_CDMS) | 5021 #endif // defined(ENABLE_BROWSER_CDMS) |
| 5011 | 5022 |
| 5012 if (!cdm_factory_) { | 5023 if (!cdm_factory_) { |
| 5013 DCHECK(frame_); | 5024 DCHECK(frame_); |
| 5014 | 5025 |
| 5015 #if defined(ENABLE_MOJO_MEDIA) | 5026 #if defined(ENABLE_MOJO_MEDIA) |
| 5016 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaServiceProvider())); | 5027 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaServiceFactory())); |
| 5017 #else | 5028 #else |
| 5018 cdm_factory_.reset(new RenderCdmFactory( | 5029 cdm_factory_.reset(new RenderCdmFactory( |
| 5019 #if defined(ENABLE_PEPPER_CDMS) | 5030 #if defined(ENABLE_PEPPER_CDMS) |
| 5020 base::Bind(&PepperCdmWrapperImpl::Create, frame_) | 5031 base::Bind(&PepperCdmWrapperImpl::Create, frame_) |
| 5021 #elif defined(ENABLE_BROWSER_CDMS) | 5032 #elif defined(ENABLE_BROWSER_CDMS) |
| 5022 cdm_manager_ | 5033 cdm_manager_ |
| 5023 #endif | 5034 #endif |
| 5024 )); | 5035 )); |
| 5025 #endif // defined(ENABLE_MOJO_MEDIA) | 5036 #endif // defined(ENABLE_MOJO_MEDIA) |
| 5026 } | 5037 } |
| 5027 | 5038 |
| 5028 return cdm_factory_.get(); | 5039 return cdm_factory_.get(); |
| 5029 } | 5040 } |
| 5030 | 5041 |
| 5031 void RenderFrameImpl::RegisterMojoServices() { | 5042 void RenderFrameImpl::RegisterMojoServices() { |
| 5032 // Only main frame have ImageDownloader service. | 5043 // Only main frame have ImageDownloader service. |
| 5033 if (!frame_->parent()) { | 5044 if (!frame_->parent()) { |
| 5034 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( | 5045 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( |
| 5035 base::Bind(&ImageDownloaderImpl::CreateMojoService, | 5046 base::Bind(&ImageDownloaderImpl::CreateMojoService, |
| 5036 base::Unretained(this))); | 5047 base::Unretained(this))); |
| 5037 } | 5048 } |
| 5038 } | 5049 } |
| 5039 | 5050 |
| 5040 } // namespace content | 5051 } // namespace content |
| OLD | NEW |