Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 1230313010: media: Add ServiceFactory mojo interface and implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix html_viewer and tests Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | media/mojo/interfaces/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | media/mojo/interfaces/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698