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" |
116 #include "media/renderers/gpu_video_accelerator_factories.h" | 117 #include "media/renderers/gpu_video_accelerator_factories.h" |
117 #include "net/base/data_url.h" | 118 #include "net/base/data_url.h" |
118 #include "net/base/net_errors.h" | 119 #include "net/base/net_errors.h" |
119 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 120 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
120 #include "net/http/http_util.h" | 121 #include "net/http/http_util.h" |
121 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" | 122 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" |
122 #include "third_party/WebKit/public/platform/WebString.h" | 123 #include "third_party/WebKit/public/platform/WebString.h" |
123 #include "third_party/WebKit/public/platform/WebURL.h" | 124 #include "third_party/WebKit/public/platform/WebURL.h" |
124 #include "third_party/WebKit/public/platform/WebURLError.h" | 125 #include "third_party/WebKit/public/platform/WebURLError.h" |
125 #include "third_party/WebKit/public/platform/WebURLResponse.h" | 126 #include "third_party/WebKit/public/platform/WebURLResponse.h" |
(...skipping 1891 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2017 render_view_->RegisterVideoHoleFrame(this); | 2018 render_view_->RegisterVideoHoleFrame(this); |
2018 contains_media_player_ = true; | 2019 contains_media_player_ = true; |
2019 } | 2020 } |
2020 #endif // defined(VIDEO_HOLE) | 2021 #endif // defined(VIDEO_HOLE) |
2021 | 2022 |
2022 blink::WebMediaStream web_stream( | 2023 blink::WebMediaStream web_stream( |
2023 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 2024 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
2024 if (!web_stream.isNull()) | 2025 if (!web_stream.isNull()) |
2025 return CreateWebMediaPlayerForMediaStream(client); | 2026 return CreateWebMediaPlayerForMediaStream(client); |
2026 | 2027 |
| 2028 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) |
| 2029 return CreateAndroidWebMediaPlayer(client, encrypted_client, |
| 2030 GetMediaPermission(), initial_cdm); |
| 2031 #else |
| 2032 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); |
| 2033 |
2027 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | 2034 RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
2028 | |
2029 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2030 scoped_refptr<media::AudioRendererSink> audio_renderer_sink; | |
2031 media::WebMediaPlayerParams::Context3DCB context_3d_cb; | |
2032 #else | |
2033 scoped_refptr<media::AudioRendererSink> audio_renderer_sink = | |
2034 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_); | |
2035 media::WebMediaPlayerParams::Context3DCB context_3d_cb = | |
2036 base::Bind(&GetSharedMainThreadContext3D); | |
2037 #endif // defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2038 | |
2039 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); | |
2040 media::WebMediaPlayerParams params( | 2035 media::WebMediaPlayerParams params( |
2041 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2036 base::Bind(&ContentRendererClient::DeferMediaLoad, |
2042 base::Unretained(GetContentClient()->renderer()), | 2037 base::Unretained(GetContentClient()->renderer()), |
2043 static_cast<RenderFrame*>(this), has_played_media_), | 2038 static_cast<RenderFrame*>(this), has_played_media_), |
2044 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), | 2039 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), |
| 2040 media_log, render_thread->GetMediaThreadTaskRunner(), |
2045 render_thread->GetWorkerTaskRunner(), | 2041 render_thread->GetWorkerTaskRunner(), |
2046 render_thread->compositor_task_runner(), context_3d_cb, | 2042 render_thread->compositor_task_runner(), |
2047 GetMediaPermission(), initial_cdm); | 2043 base::Bind(&GetSharedMainThreadContext3D), GetMediaPermission(), |
| 2044 initial_cdm); |
2048 | 2045 |
2049 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2050 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); | |
2051 #else | |
2052 #if defined(ENABLE_MOJO_MEDIA) | 2046 #if defined(ENABLE_MOJO_MEDIA) |
2053 scoped_ptr<media::RendererFactory> media_renderer_factory( | 2047 scoped_ptr<media::RendererFactory> media_renderer_factory( |
2054 new media::MojoRendererFactory(GetMediaServiceFactory())); | 2048 new media::MojoRendererFactory(GetMediaServiceFactory())); |
2055 #else | 2049 #else |
2056 scoped_ptr<media::RendererFactory> media_renderer_factory = | 2050 scoped_ptr<media::RendererFactory> media_renderer_factory = |
2057 GetContentClient()->renderer()->CreateMediaRendererFactory( | 2051 GetContentClient()->renderer()->CreateMediaRendererFactory( |
2058 this, render_thread->GetGpuFactories(), media_log); | 2052 this, render_thread->GetGpuFactories(), media_log); |
2059 | 2053 |
2060 if (!media_renderer_factory.get()) { | 2054 if (!media_renderer_factory.get()) { |
2061 media_renderer_factory.reset(new media::DefaultRendererFactory( | 2055 media_renderer_factory.reset(new media::DefaultRendererFactory( |
(...skipping 2884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4946 url::kJavaScriptScheme)) { | 4940 url::kJavaScriptScheme)) { |
4947 return NavigationStateImpl::CreateBrowserInitiated( | 4941 return NavigationStateImpl::CreateBrowserInitiated( |
4948 pending_navigation_params_->common_params, | 4942 pending_navigation_params_->common_params, |
4949 pending_navigation_params_->start_params, | 4943 pending_navigation_params_->start_params, |
4950 pending_navigation_params_->request_params); | 4944 pending_navigation_params_->request_params); |
4951 } | 4945 } |
4952 return NavigationStateImpl::CreateContentInitiated(); | 4946 return NavigationStateImpl::CreateContentInitiated(); |
4953 } | 4947 } |
4954 | 4948 |
4955 #if defined(OS_ANDROID) | 4949 #if defined(OS_ANDROID) |
| 4950 |
4956 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( | 4951 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( |
4957 WebMediaPlayerClient* client, | 4952 WebMediaPlayerClient* client, |
4958 WebMediaPlayerEncryptedMediaClient* encrypted_client, | 4953 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
4959 const media::WebMediaPlayerParams& params) { | 4954 media::MediaPermission* media_permission, |
| 4955 WebContentDecryptionModule* initial_cdm) { |
4960 scoped_refptr<StreamTextureFactory> stream_texture_factory; | 4956 scoped_refptr<StreamTextureFactory> stream_texture_factory; |
4961 if (SynchronousCompositorFactory* factory = | 4957 if (SynchronousCompositorFactory* factory = |
4962 SynchronousCompositorFactory::GetInstance()) { | 4958 SynchronousCompositorFactory::GetInstance()) { |
4963 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); | 4959 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); |
4964 } else { | 4960 } else { |
4965 GpuChannelHost* gpu_channel_host = | 4961 GpuChannelHost* gpu_channel_host = |
4966 RenderThreadImpl::current()->EstablishGpuChannelSync( | 4962 RenderThreadImpl::current()->EstablishGpuChannelSync( |
4967 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); | 4963 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); |
4968 | 4964 |
4969 if (!gpu_channel_host) { | 4965 if (!gpu_channel_host) { |
4970 LOG(ERROR) << "Failed to establish GPU channel for media player"; | 4966 LOG(ERROR) << "Failed to establish GPU channel for media player"; |
4971 return NULL; | 4967 return NULL; |
4972 } | 4968 } |
4973 | 4969 |
4974 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = | 4970 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = |
4975 RenderThreadImpl::current()->SharedMainThreadContextProvider(); | 4971 RenderThreadImpl::current()->SharedMainThreadContextProvider(); |
4976 | 4972 |
4977 if (!context_provider.get()) { | 4973 if (!context_provider.get()) { |
4978 LOG(ERROR) << "Failed to get context3d for media player"; | 4974 LOG(ERROR) << "Failed to get context3d for media player"; |
4979 return NULL; | 4975 return NULL; |
4980 } | 4976 } |
4981 | 4977 |
4982 stream_texture_factory = StreamTextureFactoryImpl::Create( | 4978 stream_texture_factory = StreamTextureFactoryImpl::Create( |
4983 context_provider, gpu_channel_host, routing_id_); | 4979 context_provider, gpu_channel_host, routing_id_); |
4984 } | 4980 } |
4985 | 4981 |
4986 return new WebMediaPlayerAndroid( | 4982 return new WebMediaPlayerAndroid( |
4987 frame_, client, encrypted_client, weak_factory_.GetWeakPtr(), | 4983 frame_, client, encrypted_client, weak_factory_.GetWeakPtr(), |
4988 GetMediaPlayerManager(), GetCdmFactory(), stream_texture_factory, params); | 4984 GetMediaPlayerManager(), GetCdmFactory(), media_permission, initial_cdm, |
| 4985 stream_texture_factory, |
| 4986 RenderThreadImpl::current()->GetMediaThreadTaskRunner(), |
| 4987 new RenderMediaLog()); |
4989 } | 4988 } |
4990 | 4989 |
4991 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { | 4990 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
4992 if (!media_player_manager_) | 4991 if (!media_player_manager_) |
4993 media_player_manager_ = new RendererMediaPlayerManager(this); | 4992 media_player_manager_ = new RendererMediaPlayerManager(this); |
4994 return media_player_manager_; | 4993 return media_player_manager_; |
4995 } | 4994 } |
| 4995 |
4996 #endif // defined(OS_ANDROID) | 4996 #endif // defined(OS_ANDROID) |
4997 | 4997 |
4998 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { | 4998 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
4999 if (!media_permission_dispatcher_) | 4999 if (!media_permission_dispatcher_) |
5000 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); | 5000 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); |
5001 return media_permission_dispatcher_; | 5001 return media_permission_dispatcher_; |
5002 } | 5002 } |
5003 | 5003 |
5004 #if defined(ENABLE_MOJO_MEDIA) | 5004 #if defined(ENABLE_MOJO_MEDIA) |
5005 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { | 5005 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5070 void RenderFrameImpl::RegisterMojoServices() { | 5070 void RenderFrameImpl::RegisterMojoServices() { |
5071 // Only main frame have ImageDownloader service. | 5071 // Only main frame have ImageDownloader service. |
5072 if (!frame_->parent()) { | 5072 if (!frame_->parent()) { |
5073 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( | 5073 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( |
5074 base::Bind(&ImageDownloaderImpl::CreateMojoService, | 5074 base::Bind(&ImageDownloaderImpl::CreateMojoService, |
5075 base::Unretained(this))); | 5075 base::Unretained(this))); |
5076 } | 5076 } |
5077 } | 5077 } |
5078 | 5078 |
5079 } // namespace content | 5079 } // namespace content |
OLD | NEW |