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 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 #include "media/base/cdm_factory.h" | 161 #include "media/base/cdm_factory.h" |
162 #include "media/base/decoder_factory.h" | 162 #include "media/base/decoder_factory.h" |
163 #include "media/base/media.h" | 163 #include "media/base/media.h" |
164 #include "media/base/media_log.h" | 164 #include "media/base/media_log.h" |
165 #include "media/base/media_switches.h" | 165 #include "media/base/media_switches.h" |
166 #include "media/base/renderer_factory_selector.h" | 166 #include "media/base/renderer_factory_selector.h" |
167 #include "media/blink/url_index.h" | 167 #include "media/blink/url_index.h" |
168 #include "media/blink/webencryptedmediaclient_impl.h" | 168 #include "media/blink/webencryptedmediaclient_impl.h" |
169 #include "media/blink/webmediaplayer_impl.h" | 169 #include "media/blink/webmediaplayer_impl.h" |
170 #include "media/media_features.h" | 170 #include "media/media_features.h" |
| 171 #include "media/renderers/default_renderer_factory.h" |
171 #include "media/renderers/gpu_video_accelerator_factories.h" | 172 #include "media/renderers/gpu_video_accelerator_factories.h" |
172 #include "mojo/edk/js/core.h" | 173 #include "mojo/edk/js/core.h" |
173 #include "mojo/edk/js/support.h" | 174 #include "mojo/edk/js/support.h" |
174 #include "net/base/data_url.h" | 175 #include "net/base/data_url.h" |
175 #include "net/base/load_flags.h" | 176 #include "net/base/load_flags.h" |
176 #include "net/base/net_errors.h" | 177 #include "net/base/net_errors.h" |
177 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 178 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
178 #include "net/http/http_util.h" | 179 #include "net/http/http_util.h" |
179 #include "ppapi/features/features.h" | 180 #include "ppapi/features/features.h" |
180 #include "services/service_manager/public/cpp/connector.h" | 181 #include "services/service_manager/public/cpp/connector.h" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 #endif | 268 #endif |
268 | 269 |
269 #if defined(ENABLE_MOJO_CDM) | 270 #if defined(ENABLE_MOJO_CDM) |
270 #include "media/mojo/clients/mojo_cdm_factory.h" // nogncheck | 271 #include "media/mojo/clients/mojo_cdm_factory.h" // nogncheck |
271 #endif | 272 #endif |
272 | 273 |
273 #if defined(ENABLE_MOJO_RENDERER) | 274 #if defined(ENABLE_MOJO_RENDERER) |
274 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck | 275 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck |
275 #endif | 276 #endif |
276 | 277 |
277 #if !defined(ENABLE_MOJO_RENDERER) || \ | |
278 BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | |
279 #include "media/renderers/default_renderer_factory.h" // nogncheck | |
280 #endif | |
281 | |
282 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 278 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
283 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck | 279 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck |
284 #endif | 280 #endif |
285 | 281 |
286 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 282 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
287 #include "media/remoting/courier_renderer_factory.h" // nogncheck | 283 #include "media/remoting/courier_renderer_factory.h" // nogncheck |
288 #include "media/remoting/remoting_cdm_controller.h" // nogncheck | 284 #include "media/remoting/remoting_cdm_controller.h" // nogncheck |
289 #include "media/remoting/remoting_cdm_factory.h" // nogncheck | 285 #include "media/remoting/remoting_cdm_factory.h" // nogncheck |
290 #include "media/remoting/renderer_controller.h" // nogncheck | 286 #include "media/remoting/renderer_controller.h" // nogncheck |
291 #include "media/remoting/shared_session.h" // nogncheck | 287 #include "media/remoting/shared_session.h" // nogncheck |
(...skipping 2619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2911 render_thread->compositor_task_runner(), | 2907 render_thread->compositor_task_runner(), |
2912 std::move(mojo_media_player_renderer_factory), | 2908 std::move(mojo_media_player_renderer_factory), |
2913 base::Bind(&StreamTextureWrapperImpl::Create, | 2909 base::Bind(&StreamTextureWrapperImpl::Create, |
2914 render_thread->EnableStreamTextureCopy(), | 2910 render_thread->EnableStreamTextureCopy(), |
2915 render_thread->GetStreamTexureFactory(), | 2911 render_thread->GetStreamTexureFactory(), |
2916 base::ThreadTaskRunnerHandle::Get()))); | 2912 base::ThreadTaskRunnerHandle::Get()))); |
2917 | 2913 |
2918 factory_selector->SetUseMediaPlayer(UseMediaPlayerRenderer(url)); | 2914 factory_selector->SetUseMediaPlayer(UseMediaPlayerRenderer(url)); |
2919 #endif // defined(OS_ANDROID) | 2915 #endif // defined(OS_ANDROID) |
2920 | 2916 |
2921 // |factory_type| will be overwritten in all possible path below, and the | 2917 bool use_mojo_renderer_factory = false; |
2922 // DEFAULT value is not accurate. However, this prevents the compiler from | |
2923 // issuing a -Wsometimes-uninitialized warning. | |
2924 // TODO(tguilbert): Remove |factory_type|, and clean up the logic. The work is | |
2925 // already completed and incrementally being submitted. See crbug.com/663503. | |
2926 auto factory_type = media::RendererFactorySelector::FactoryType::DEFAULT; | |
2927 std::unique_ptr<media::RendererFactory> media_renderer_factory; | |
2928 | |
2929 #if defined(ENABLE_MOJO_RENDERER) | 2918 #if defined(ENABLE_MOJO_RENDERER) |
2930 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2919 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
2931 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 2920 use_mojo_renderer_factory = |
2932 switches::kDisableMojoRenderer)) { | 2921 !base::CommandLine::ForCurrentProcess()->HasSwitch( |
2933 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2922 switches::kDisableMojoRenderer); |
2934 media_log.get(), GetDecoderFactory(), | 2923 #else |
2935 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2924 use_mojo_renderer_factory = true; |
2936 base::Unretained(render_thread))); | 2925 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
| 2926 if (use_mojo_renderer_factory) { |
| 2927 factory_selector->AddFactory( |
| 2928 media::RendererFactorySelector::FactoryType::MOJO, |
| 2929 base::MakeUnique<media::MojoRendererFactory>( |
| 2930 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2931 base::Unretained(render_thread)), |
| 2932 GetMediaInterfaceProvider())); |
2937 | 2933 |
2938 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT; | 2934 factory_selector->SetBaseFactoryType( |
| 2935 media::RendererFactorySelector::FactoryType::MOJO); |
2939 } | 2936 } |
2940 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2937 #endif // defined(ENABLE_MOJO_RENDERER) |
2941 if (!media_renderer_factory) { | |
2942 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | |
2943 base::Bind(&RenderThreadImpl::GetGpuFactories, | |
2944 base::Unretained(render_thread)), | |
2945 GetMediaInterfaceProvider()); | |
2946 | 2938 |
2947 factory_type = media::RendererFactorySelector::FactoryType::MOJO; | 2939 if (!use_mojo_renderer_factory) { |
| 2940 factory_selector->AddFactory( |
| 2941 media::RendererFactorySelector::FactoryType::DEFAULT, |
| 2942 base::MakeUnique<media::DefaultRendererFactory>( |
| 2943 media_log.get(), GetDecoderFactory(), |
| 2944 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2945 base::Unretained(render_thread)))); |
| 2946 |
| 2947 factory_selector->SetBaseFactoryType( |
| 2948 media::RendererFactorySelector::FactoryType::DEFAULT); |
2948 } | 2949 } |
2949 #else | |
2950 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | |
2951 media_log.get(), GetDecoderFactory(), | |
2952 base::Bind(&RenderThreadImpl::GetGpuFactories, | |
2953 base::Unretained(render_thread))); | |
2954 | |
2955 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT; | |
2956 #endif // defined(ENABLE_MOJO_RENDERER) | |
2957 | 2950 |
2958 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2951 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2959 auto courier_factory = | 2952 auto courier_factory = |
2960 base::MakeUnique<media::remoting::CourierRendererFactory>( | 2953 base::MakeUnique<media::remoting::CourierRendererFactory>( |
2961 std::move(remoting_controller)); | 2954 std::move(remoting_controller)); |
2962 | 2955 |
2963 // base::Unretained is safe here because |factory_selector| owns | 2956 // base::Unretained is safe here because |factory_selector| owns |
2964 // |courier_factory|. | 2957 // |courier_factory|. |
2965 factory_selector->SetQueryIsRemotingActiveCB( | 2958 factory_selector->SetQueryIsRemotingActiveCB( |
2966 base::Bind(&media::remoting::CourierRendererFactory::IsRemotingActive, | 2959 base::Bind(&media::remoting::CourierRendererFactory::IsRemotingActive, |
2967 base::Unretained(courier_factory.get()))); | 2960 base::Unretained(courier_factory.get()))); |
2968 | 2961 |
2969 factory_selector->AddFactory( | 2962 factory_selector->AddFactory( |
2970 media::RendererFactorySelector::FactoryType::COURIER, | 2963 media::RendererFactorySelector::FactoryType::COURIER, |
2971 std::move(courier_factory)); | 2964 std::move(courier_factory)); |
2972 #endif | 2965 #endif |
2973 | 2966 |
2974 if (!url_index_.get() || url_index_->frame() != frame_) | 2967 if (!url_index_.get() || url_index_->frame() != frame_) |
2975 url_index_.reset(new media::UrlIndex(frame_)); | 2968 url_index_.reset(new media::UrlIndex(frame_)); |
2976 | 2969 |
2977 factory_selector->AddFactory(factory_type, std::move(media_renderer_factory)); | |
2978 factory_selector->SetBaseFactoryType(factory_type); | |
2979 | |
2980 std::unique_ptr<media::WebMediaPlayerParams> params( | 2970 std::unique_ptr<media::WebMediaPlayerParams> params( |
2981 new media::WebMediaPlayerParams( | 2971 new media::WebMediaPlayerParams( |
2982 std::move(media_log), | 2972 std::move(media_log), |
2983 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2973 base::Bind(&ContentRendererClient::DeferMediaLoad, |
2984 base::Unretained(GetContentClient()->renderer()), | 2974 base::Unretained(GetContentClient()->renderer()), |
2985 static_cast<RenderFrame*>(this), | 2975 static_cast<RenderFrame*>(this), |
2986 GetWebMediaPlayerDelegate()->has_played_media()), | 2976 GetWebMediaPlayerDelegate()->has_played_media()), |
2987 audio_renderer_sink, render_thread->GetMediaThreadTaskRunner(), | 2977 audio_renderer_sink, render_thread->GetMediaThreadTaskRunner(), |
2988 render_thread->GetWorkerTaskRunner(), | 2978 render_thread->GetWorkerTaskRunner(), |
2989 render_thread->compositor_task_runner(), context_3d_cb, | 2979 render_thread->compositor_task_runner(), context_3d_cb, |
(...skipping 4086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7076 policy(info.default_policy), | 7066 policy(info.default_policy), |
7077 replaces_current_history_item(info.replaces_current_history_item), | 7067 replaces_current_history_item(info.replaces_current_history_item), |
7078 history_navigation_in_new_child_frame( | 7068 history_navigation_in_new_child_frame( |
7079 info.is_history_navigation_in_new_child_frame), | 7069 info.is_history_navigation_in_new_child_frame), |
7080 client_redirect(info.is_client_redirect), | 7070 client_redirect(info.is_client_redirect), |
7081 cache_disabled(info.is_cache_disabled), | 7071 cache_disabled(info.is_cache_disabled), |
7082 form(info.form), | 7072 form(info.form), |
7083 source_location(info.source_location) {} | 7073 source_location(info.source_location) {} |
7084 | 7074 |
7085 } // namespace content | 7075 } // namespace content |
OLD | NEW |