| 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 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 #include "content/renderer/shared_worker_repository.h" | 106 #include "content/renderer/shared_worker_repository.h" |
| 107 #include "content/renderer/skia_benchmarking_extension.h" | 107 #include "content/renderer/skia_benchmarking_extension.h" |
| 108 #include "content/renderer/stats_collection_controller.h" | 108 #include "content/renderer/stats_collection_controller.h" |
| 109 #include "content/renderer/web_ui_extension.h" | 109 #include "content/renderer/web_ui_extension.h" |
| 110 #include "content/renderer/websharedworker_proxy.h" | 110 #include "content/renderer/websharedworker_proxy.h" |
| 111 #include "gin/modules/module_registry.h" | 111 #include "gin/modules/module_registry.h" |
| 112 #include "media/base/audio_renderer_mixer_input.h" | 112 #include "media/base/audio_renderer_mixer_input.h" |
| 113 #include "media/base/media_log.h" | 113 #include "media/base/media_log.h" |
| 114 #include "media/blink/webencryptedmediaclient_impl.h" | 114 #include "media/blink/webencryptedmediaclient_impl.h" |
| 115 #include "media/blink/webmediaplayer_impl.h" | 115 #include "media/blink/webmediaplayer_impl.h" |
| 116 #include "media/blink/webmediaplayer_params.h" | |
| 117 #include "media/renderers/gpu_video_accelerator_factories.h" | 116 #include "media/renderers/gpu_video_accelerator_factories.h" |
| 118 #include "mojo/common/url_type_converters.h" | 117 #include "mojo/common/url_type_converters.h" |
| 119 #include "net/base/data_url.h" | 118 #include "net/base/data_url.h" |
| 120 #include "net/base/net_errors.h" | 119 #include "net/base/net_errors.h" |
| 121 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 120 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
| 122 #include "net/http/http_util.h" | 121 #include "net/http/http_util.h" |
| 123 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" | 122 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" |
| 124 #include "third_party/WebKit/public/platform/WebString.h" | 123 #include "third_party/WebKit/public/platform/WebString.h" |
| 125 #include "third_party/WebKit/public/platform/WebURL.h" | 124 #include "third_party/WebKit/public/platform/WebURL.h" |
| 126 #include "third_party/WebKit/public/platform/WebURLError.h" | 125 #include "third_party/WebKit/public/platform/WebURLError.h" |
| (...skipping 1931 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2058 render_view_->RegisterVideoHoleFrame(this); | 2057 render_view_->RegisterVideoHoleFrame(this); |
| 2059 contains_media_player_ = true; | 2058 contains_media_player_ = true; |
| 2060 } | 2059 } |
| 2061 #endif // defined(VIDEO_HOLE) | 2060 #endif // defined(VIDEO_HOLE) |
| 2062 | 2061 |
| 2063 blink::WebMediaStream web_stream( | 2062 blink::WebMediaStream web_stream( |
| 2064 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 2063 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
| 2065 if (!web_stream.isNull()) | 2064 if (!web_stream.isNull()) |
| 2066 return CreateWebMediaPlayerForMediaStream(client); | 2065 return CreateWebMediaPlayerForMediaStream(client); |
| 2067 | 2066 |
| 2067 RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
| 2068 |
| 2068 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | 2069 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
| 2069 return CreateAndroidWebMediaPlayer(client, encrypted_client, | 2070 scoped_refptr<media::AudioRendererSink> audio_renderer_sink; |
| 2070 GetMediaPermission(), initial_cdm); | 2071 media::WebMediaPlayerParams::Context3DCB context_3d_cb; |
| 2071 #else | 2072 #else |
| 2073 scoped_refptr<media::AudioRendererSink> audio_renderer_sink = |
| 2074 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_); |
| 2075 media::WebMediaPlayerParams::Context3DCB context_3d_cb = |
| 2076 base::Bind(&GetSharedMainThreadContext3D); |
| 2077 #endif // defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
| 2078 |
| 2072 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); | 2079 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); |
| 2073 | |
| 2074 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | |
| 2075 media::WebMediaPlayerParams params( | 2080 media::WebMediaPlayerParams params( |
| 2076 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2081 base::Bind(&ContentRendererClient::DeferMediaLoad, |
| 2077 base::Unretained(GetContentClient()->renderer()), | 2082 base::Unretained(GetContentClient()->renderer()), |
| 2078 static_cast<RenderFrame*>(this), has_played_media_), | 2083 static_cast<RenderFrame*>(this), has_played_media_), |
| 2079 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), | 2084 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), |
| 2080 media_log, render_thread->GetMediaThreadTaskRunner(), | |
| 2081 render_thread->GetWorkerTaskRunner(), | 2085 render_thread->GetWorkerTaskRunner(), |
| 2082 render_thread->compositor_task_runner(), | 2086 render_thread->compositor_task_runner(), context_3d_cb, |
| 2083 base::Bind(&GetSharedMainThreadContext3D), GetMediaPermission(), | 2087 GetMediaPermission(), initial_cdm); |
| 2084 initial_cdm); | |
| 2085 | 2088 |
| 2089 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
| 2090 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); |
| 2091 #else |
| 2086 #if defined(ENABLE_MOJO_MEDIA) | 2092 #if defined(ENABLE_MOJO_MEDIA) |
| 2087 scoped_ptr<media::RendererFactory> media_renderer_factory( | 2093 scoped_ptr<media::RendererFactory> media_renderer_factory( |
| 2088 new media::MojoRendererFactory(GetMediaServiceFactory())); | 2094 new media::MojoRendererFactory(GetMediaServiceFactory())); |
| 2089 #else | 2095 #else |
| 2090 scoped_ptr<media::RendererFactory> media_renderer_factory = | 2096 scoped_ptr<media::RendererFactory> media_renderer_factory = |
| 2091 GetContentClient()->renderer()->CreateMediaRendererFactory( | 2097 GetContentClient()->renderer()->CreateMediaRendererFactory( |
| 2092 this, render_thread->GetGpuFactories(), media_log); | 2098 this, render_thread->GetGpuFactories(), media_log); |
| 2093 | 2099 |
| 2094 if (!media_renderer_factory.get()) { | 2100 if (!media_renderer_factory.get()) { |
| 2095 media_renderer_factory.reset(new media::DefaultRendererFactory( | 2101 media_renderer_factory.reset(new media::DefaultRendererFactory( |
| (...skipping 2891 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4987 url::kJavaScriptScheme)) { | 4993 url::kJavaScriptScheme)) { |
| 4988 return NavigationStateImpl::CreateBrowserInitiated( | 4994 return NavigationStateImpl::CreateBrowserInitiated( |
| 4989 pending_navigation_params_->common_params, | 4995 pending_navigation_params_->common_params, |
| 4990 pending_navigation_params_->start_params, | 4996 pending_navigation_params_->start_params, |
| 4991 pending_navigation_params_->request_params); | 4997 pending_navigation_params_->request_params); |
| 4992 } | 4998 } |
| 4993 return NavigationStateImpl::CreateContentInitiated(); | 4999 return NavigationStateImpl::CreateContentInitiated(); |
| 4994 } | 5000 } |
| 4995 | 5001 |
| 4996 #if defined(OS_ANDROID) | 5002 #if defined(OS_ANDROID) |
| 4997 | |
| 4998 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( | 5003 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( |
| 4999 WebMediaPlayerClient* client, | 5004 WebMediaPlayerClient* client, |
| 5000 WebMediaPlayerEncryptedMediaClient* encrypted_client, | 5005 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
| 5001 media::MediaPermission* media_permission, | 5006 const media::WebMediaPlayerParams& params) { |
| 5002 WebContentDecryptionModule* initial_cdm) { | |
| 5003 scoped_refptr<StreamTextureFactory> stream_texture_factory; | 5007 scoped_refptr<StreamTextureFactory> stream_texture_factory; |
| 5004 if (SynchronousCompositorFactory* factory = | 5008 if (SynchronousCompositorFactory* factory = |
| 5005 SynchronousCompositorFactory::GetInstance()) { | 5009 SynchronousCompositorFactory::GetInstance()) { |
| 5006 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); | 5010 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); |
| 5007 } else { | 5011 } else { |
| 5008 GpuChannelHost* gpu_channel_host = | 5012 GpuChannelHost* gpu_channel_host = |
| 5009 RenderThreadImpl::current()->EstablishGpuChannelSync( | 5013 RenderThreadImpl::current()->EstablishGpuChannelSync( |
| 5010 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); | 5014 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); |
| 5011 | 5015 |
| 5012 if (!gpu_channel_host) { | 5016 if (!gpu_channel_host) { |
| 5013 LOG(ERROR) << "Failed to establish GPU channel for media player"; | 5017 LOG(ERROR) << "Failed to establish GPU channel for media player"; |
| 5014 return NULL; | 5018 return NULL; |
| 5015 } | 5019 } |
| 5016 | 5020 |
| 5017 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = | 5021 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = |
| 5018 RenderThreadImpl::current()->SharedMainThreadContextProvider(); | 5022 RenderThreadImpl::current()->SharedMainThreadContextProvider(); |
| 5019 | 5023 |
| 5020 if (!context_provider.get()) { | 5024 if (!context_provider.get()) { |
| 5021 LOG(ERROR) << "Failed to get context3d for media player"; | 5025 LOG(ERROR) << "Failed to get context3d for media player"; |
| 5022 return NULL; | 5026 return NULL; |
| 5023 } | 5027 } |
| 5024 | 5028 |
| 5025 stream_texture_factory = StreamTextureFactoryImpl::Create( | 5029 stream_texture_factory = StreamTextureFactoryImpl::Create( |
| 5026 context_provider, gpu_channel_host, routing_id_); | 5030 context_provider, gpu_channel_host, routing_id_); |
| 5027 } | 5031 } |
| 5028 | 5032 |
| 5029 return new WebMediaPlayerAndroid( | 5033 return new WebMediaPlayerAndroid( |
| 5030 frame_, client, encrypted_client, weak_factory_.GetWeakPtr(), | 5034 frame_, client, encrypted_client, weak_factory_.GetWeakPtr(), |
| 5031 GetMediaPlayerManager(), GetCdmFactory(), media_permission, initial_cdm, | 5035 GetMediaPlayerManager(), GetCdmFactory(), stream_texture_factory, params); |
| 5032 stream_texture_factory, | |
| 5033 RenderThreadImpl::current()->GetMediaThreadTaskRunner(), | |
| 5034 new RenderMediaLog()); | |
| 5035 } | 5036 } |
| 5036 | 5037 |
| 5037 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { | 5038 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
| 5038 if (!media_player_manager_) | 5039 if (!media_player_manager_) |
| 5039 media_player_manager_ = new RendererMediaPlayerManager(this); | 5040 media_player_manager_ = new RendererMediaPlayerManager(this); |
| 5040 return media_player_manager_; | 5041 return media_player_manager_; |
| 5041 } | 5042 } |
| 5042 | |
| 5043 #endif // defined(OS_ANDROID) | 5043 #endif // defined(OS_ANDROID) |
| 5044 | 5044 |
| 5045 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { | 5045 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
| 5046 if (!media_permission_dispatcher_) | 5046 if (!media_permission_dispatcher_) |
| 5047 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); | 5047 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); |
| 5048 return media_permission_dispatcher_; | 5048 return media_permission_dispatcher_; |
| 5049 } | 5049 } |
| 5050 | 5050 |
| 5051 #if defined(ENABLE_MOJO_MEDIA) | 5051 #if defined(ENABLE_MOJO_MEDIA) |
| 5052 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { | 5052 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5120 DCHECK(mojo_shell_); | 5120 DCHECK(mojo_shell_); |
| 5121 mojo::ServiceProviderPtr service_provider; | 5121 mojo::ServiceProviderPtr service_provider; |
| 5122 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 5122 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 5123 request->url = mojo::String::From(url); | 5123 request->url = mojo::String::From(url); |
| 5124 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), | 5124 mojo_shell_->ConnectToApplication(request.Pass(), GetProxy(&service_provider), |
| 5125 nullptr, nullptr); | 5125 nullptr, nullptr); |
| 5126 return service_provider.Pass(); | 5126 return service_provider.Pass(); |
| 5127 } | 5127 } |
| 5128 | 5128 |
| 5129 } // namespace content | 5129 } // namespace content |
| OLD | NEW |