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

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

Issue 2711153006: Add RendererFactorySelector (Closed)
Patch Set: Added UTs Created 3 years, 8 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 | « no previous file | media/base/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 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 #include "gin/modules/console.h" 153 #include "gin/modules/console.h"
154 #include "gin/modules/module_registry.h" 154 #include "gin/modules/module_registry.h"
155 #include "gin/modules/timer.h" 155 #include "gin/modules/timer.h"
156 #include "media/audio/audio_output_device.h" 156 #include "media/audio/audio_output_device.h"
157 #include "media/base/audio_renderer_mixer_input.h" 157 #include "media/base/audio_renderer_mixer_input.h"
158 #include "media/base/cdm_factory.h" 158 #include "media/base/cdm_factory.h"
159 #include "media/base/decoder_factory.h" 159 #include "media/base/decoder_factory.h"
160 #include "media/base/media.h" 160 #include "media/base/media.h"
161 #include "media/base/media_log.h" 161 #include "media/base/media_log.h"
162 #include "media/base/media_switches.h" 162 #include "media/base/media_switches.h"
163 #include "media/base/renderer_factory_selector.h"
163 #include "media/blink/url_index.h" 164 #include "media/blink/url_index.h"
164 #include "media/blink/webencryptedmediaclient_impl.h" 165 #include "media/blink/webencryptedmediaclient_impl.h"
165 #include "media/blink/webmediaplayer_impl.h" 166 #include "media/blink/webmediaplayer_impl.h"
166 #include "media/media_features.h" 167 #include "media/media_features.h"
167 #include "media/renderers/gpu_video_accelerator_factories.h" 168 #include "media/renderers/gpu_video_accelerator_factories.h"
168 #include "mojo/edk/js/core.h" 169 #include "mojo/edk/js/core.h"
169 #include "mojo/edk/js/support.h" 170 #include "mojo/edk/js/support.h"
170 #include "net/base/data_url.h" 171 #include "net/base/data_url.h"
171 #include "net/base/load_flags.h" 172 #include "net/base/load_flags.h"
172 #include "net/base/net_errors.h" 173 #include "net/base/net_errors.h"
(...skipping 2727 matching lines...) Expand 10 before | Expand all | Expand 10 after
2900 GetWebkitPreferences().enable_instant_source_buffer_gc, 2901 GetWebkitPreferences().enable_instant_source_buffer_gc,
2901 GetContentClient()->renderer()->AllowMediaSuspend(), 2902 GetContentClient()->renderer()->AllowMediaSuspend(),
2902 embedded_media_experience_enabled); 2903 embedded_media_experience_enabled);
2903 2904
2904 bool use_fallback_path = false; 2905 bool use_fallback_path = false;
2905 #if defined(OS_ANDROID) 2906 #if defined(OS_ANDROID)
2906 use_fallback_path = UseMediaPlayerRenderer(url); 2907 use_fallback_path = UseMediaPlayerRenderer(url);
2907 #endif // defined(OS_ANDROID) 2908 #endif // defined(OS_ANDROID)
2908 2909
2909 std::unique_ptr<media::RendererFactory> media_renderer_factory; 2910 std::unique_ptr<media::RendererFactory> media_renderer_factory;
2911 media::RendererFactorySelector::FactoryType factory_type;
tguilbert 2017/04/19 03:24:14 There is some extra boilerplate in this iteration,
2910 if (use_fallback_path) { 2912 if (use_fallback_path) {
2911 #if defined(OS_ANDROID) 2913 #if defined(OS_ANDROID)
2912 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( 2914 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>(
2913 media::MojoRendererFactory::GetGpuFactoriesCB(), 2915 media::MojoRendererFactory::GetGpuFactoriesCB(),
2914 GetRemoteInterfaces()->get()); 2916 GetRemoteInterfaces()->get());
2915 2917
2916 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>( 2918 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>(
2917 render_thread->compositor_task_runner(), 2919 render_thread->compositor_task_runner(),
2918 std::move(mojo_renderer_factory), 2920 std::move(mojo_renderer_factory),
2919 base::Bind(&StreamTextureWrapperImpl::Create, 2921 base::Bind(&StreamTextureWrapperImpl::Create,
2920 render_thread->EnableStreamTextureCopy(), 2922 render_thread->EnableStreamTextureCopy(),
2921 render_thread->GetStreamTexureFactory(), 2923 render_thread->GetStreamTexureFactory(),
2922 base::ThreadTaskRunnerHandle::Get())); 2924 base::ThreadTaskRunnerHandle::Get()));
2925
2926 factory_type = media::RendererFactorySelector::FactoryType::MEDIA_PLAYER;
2923 #endif // defined(OS_ANDROID) 2927 #endif // defined(OS_ANDROID)
2924 } else { 2928 } else {
2925 #if defined(ENABLE_MOJO_RENDERER) 2929 #if defined(ENABLE_MOJO_RENDERER)
2926 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) 2930 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION)
2927 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 2931 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
2928 switches::kDisableMojoRenderer)) { 2932 switches::kDisableMojoRenderer)) {
2929 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( 2933 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>(
2930 media_log, GetDecoderFactory(), 2934 media_log, GetDecoderFactory(),
2931 base::Bind(&RenderThreadImpl::GetGpuFactories, 2935 base::Bind(&RenderThreadImpl::GetGpuFactories,
2932 base::Unretained(render_thread))); 2936 base::Unretained(render_thread)));
2937
2938 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT;
2933 } 2939 }
2934 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) 2940 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION)
2935 if (!media_renderer_factory) { 2941 if (!media_renderer_factory) {
2936 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( 2942 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>(
2937 base::Bind(&RenderThreadImpl::GetGpuFactories, 2943 base::Bind(&RenderThreadImpl::GetGpuFactories,
2938 base::Unretained(render_thread)), 2944 base::Unretained(render_thread)),
2939 GetMediaInterfaceProvider()); 2945 GetMediaInterfaceProvider());
2946
2947 factory_type = media::RendererFactorySelector::FactoryType::MOJO;
2940 } 2948 }
2941 #else 2949 #else
2942 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( 2950 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>(
2943 media_log, GetDecoderFactory(), 2951 media_log, GetDecoderFactory(),
2944 base::Bind(&RenderThreadImpl::GetGpuFactories, 2952 base::Bind(&RenderThreadImpl::GetGpuFactories,
2945 base::Unretained(render_thread))); 2953 base::Unretained(render_thread)));
2954
2955 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT;
2946 #endif // defined(ENABLE_MOJO_RENDERER) 2956 #endif // defined(ENABLE_MOJO_RENDERER)
2947 } 2957 }
2948 2958
2949 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) 2959 #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
2950 auto* const remoting_controller_ptr = remoting_controller.get(); 2960 auto* const remoting_controller_ptr = remoting_controller.get();
2951 media_renderer_factory = 2961 media_renderer_factory =
2952 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( 2962 base::MakeUnique<media::remoting::AdaptiveRendererFactory>(
2953 std::move(media_renderer_factory), std::move(remoting_controller)); 2963 std::move(media_renderer_factory), std::move(remoting_controller));
2964
2965 factory_type = media::RendererFactorySelector::FactoryType::ADAPTIVE;
2954 #endif 2966 #endif
2955 2967
2956 if (!url_index_.get() || url_index_->frame() != frame_) 2968 if (!url_index_.get() || url_index_->frame() != frame_)
2957 url_index_.reset(new media::UrlIndex(frame_)); 2969 url_index_.reset(new media::UrlIndex(frame_));
2958 2970
2971 auto factory_selector = base::MakeUnique<media::RendererFactorySelector>();
2972
2973 factory_selector->AddFactory(factory_type, std::move(media_renderer_factory));
2974 factory_selector->SetBaseFactoryType(factory_type);
2975
2959 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( 2976 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl(
2960 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), 2977 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(),
2961 std::move(media_renderer_factory), url_index_, params); 2978 std::move(factory_selector), url_index_, params);
2962 2979
2963 #if defined(OS_ANDROID) // WMPI_CAST 2980 #if defined(OS_ANDROID) // WMPI_CAST
2964 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); 2981 media_player->SetMediaPlayerManager(GetMediaPlayerManager());
2965 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); 2982 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor());
2966 media_player->SetUseFallbackPath(use_fallback_path); 2983 media_player->SetUseFallbackPath(use_fallback_path);
2967 #endif // defined(OS_ANDROID) 2984 #endif // defined(OS_ANDROID)
2968 2985
2969 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) 2986 #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
2970 remoting_controller_ptr->SetDownloadPosterCallback(base::Bind( 2987 remoting_controller_ptr->SetDownloadPosterCallback(base::Bind(
2971 &SingleImageDownloader::DownloadImage, weak_factory_.GetWeakPtr())); 2988 &SingleImageDownloader::DownloadImage, weak_factory_.GetWeakPtr()));
(...skipping 4019 matching lines...) Expand 10 before | Expand all | Expand 10 after
6991 policy(info.default_policy), 7008 policy(info.default_policy),
6992 replaces_current_history_item(info.replaces_current_history_item), 7009 replaces_current_history_item(info.replaces_current_history_item),
6993 history_navigation_in_new_child_frame( 7010 history_navigation_in_new_child_frame(
6994 info.is_history_navigation_in_new_child_frame), 7011 info.is_history_navigation_in_new_child_frame),
6995 client_redirect(info.is_client_redirect), 7012 client_redirect(info.is_client_redirect),
6996 cache_disabled(info.is_cache_disabled), 7013 cache_disabled(info.is_cache_disabled),
6997 form(info.form), 7014 form(info.form),
6998 source_location(info.source_location) {} 7015 source_location(info.source_location) {}
6999 7016
7000 } // namespace content 7017 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | media/base/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698