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 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 #else | 261 #else |
262 #include "media/renderers/default_renderer_factory.h" | 262 #include "media/renderers/default_renderer_factory.h" |
263 #endif | 263 #endif |
264 | 264 |
265 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 265 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
266 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck | 266 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck |
267 #endif | 267 #endif |
268 | 268 |
269 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 269 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
270 #include "content/renderer/image_downloader/single_image_downloader.h" // nognc
heck | 270 #include "content/renderer/image_downloader/single_image_downloader.h" // nognc
heck |
| 271 #include "media/remoting/adaptive_renderer_factory.h" // nogncheck |
271 #include "media/remoting/remoting_cdm_controller.h" // nogncheck | 272 #include "media/remoting/remoting_cdm_controller.h" // nogncheck |
272 #include "media/remoting/remoting_cdm_factory.h" // nogncheck | 273 #include "media/remoting/remoting_cdm_factory.h" // nogncheck |
273 #include "media/remoting/remoting_renderer_controller.h" // nogncheck | 274 #include "media/remoting/renderer_controller.h" // nogncheck |
274 #include "media/remoting/remoting_renderer_factory.h" // nogncheck | 275 #include "media/remoting/shared_session.h" // nogncheck |
275 #include "media/remoting/remoting_sink_observer.h" // nogncheck | 276 #include "media/remoting/sink_availability_observer.h" // nogncheck |
276 #endif | 277 #endif |
277 | 278 |
278 using base::Time; | 279 using base::Time; |
279 using base::TimeDelta; | 280 using base::TimeDelta; |
280 using blink::WebCachePolicy; | 281 using blink::WebCachePolicy; |
281 using blink::WebContentDecryptionModule; | 282 using blink::WebContentDecryptionModule; |
282 using blink::WebContextMenuData; | 283 using blink::WebContextMenuData; |
283 using blink::WebCString; | 284 using blink::WebCString; |
284 using blink::WebData; | 285 using blink::WebData; |
285 using blink::WebDataSource; | 286 using blink::WebDataSource; |
(...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1158 #endif | 1159 #endif |
1159 | 1160 |
1160 #if BUILDFLAG(ENABLE_PLUGINS) | 1161 #if BUILDFLAG(ENABLE_PLUGINS) |
1161 // Manages its own lifetime. | 1162 // Manages its own lifetime. |
1162 plugin_power_saver_helper_ = new PluginPowerSaverHelper(this); | 1163 plugin_power_saver_helper_ = new PluginPowerSaverHelper(this); |
1163 #endif | 1164 #endif |
1164 | 1165 |
1165 manifest_manager_ = new ManifestManager(this); | 1166 manifest_manager_ = new ManifestManager(this); |
1166 | 1167 |
1167 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 1168 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
1168 // Create the RemotingSinkObserver to monitor the remoting sink availablity. | 1169 // Create the SinkAvailabilityObserver to monitor the remoting sink |
| 1170 // availablity. |
1169 media::mojom::RemotingSourcePtr remoting_source; | 1171 media::mojom::RemotingSourcePtr remoting_source; |
1170 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); | 1172 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); |
1171 media::mojom::RemoterPtr remoter; | 1173 media::mojom::RemoterPtr remoter; |
1172 GetRemoterFactory()->Create(std::move(remoting_source), | 1174 GetRemoterFactory()->Create(std::move(remoting_source), |
1173 mojo::MakeRequest(&remoter)); | 1175 mojo::MakeRequest(&remoter)); |
1174 remoting_sink_observer_ = base::MakeUnique<media::RemotingSinkObserver>( | 1176 remoting_sink_observer_ = |
1175 std::move(remoting_source_request), std::move(remoter)); | 1177 base::MakeUnique<media::remoting::SinkAvailabilityObserver>( |
| 1178 std::move(remoting_source_request), std::move(remoter)); |
1176 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) | 1179 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
1177 } | 1180 } |
1178 | 1181 |
1179 RenderFrameImpl::~RenderFrameImpl() { | 1182 RenderFrameImpl::~RenderFrameImpl() { |
1180 // If file chooser is still waiting for answer, dispatch empty answer. | 1183 // If file chooser is still waiting for answer, dispatch empty answer. |
1181 while (!file_chooser_completions_.empty()) { | 1184 while (!file_chooser_completions_.empty()) { |
1182 if (file_chooser_completions_.front()->completion) { | 1185 if (file_chooser_completions_.front()->completion) { |
1183 file_chooser_completions_.front()->completion->didChooseFile( | 1186 file_chooser_completions_.front()->completion->didChooseFile( |
1184 WebVector<WebString>()); | 1187 WebVector<WebString>()); |
1185 } | 1188 } |
(...skipping 1569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2755 return NULL; | 2758 return NULL; |
2756 | 2759 |
2757 WebPluginParams params_to_use = params; | 2760 WebPluginParams params_to_use = params; |
2758 params_to_use.mimeType = WebString::fromUTF8(mime_type); | 2761 params_to_use.mimeType = WebString::fromUTF8(mime_type); |
2759 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); | 2762 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); |
2760 #else | 2763 #else |
2761 return NULL; | 2764 return NULL; |
2762 #endif // BUILDFLAG(ENABLE_PLUGINS) | 2765 #endif // BUILDFLAG(ENABLE_PLUGINS) |
2763 } | 2766 } |
2764 | 2767 |
2765 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | |
2766 std::unique_ptr<media::RemotingRendererController> | |
2767 RenderFrameImpl::CreateRemotingRendererController() { | |
2768 media::mojom::RemotingSourcePtr remoting_source; | |
2769 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); | |
2770 media::mojom::RemoterPtr remoter; | |
2771 GetRemoterFactory()->Create(std::move(remoting_source), | |
2772 mojo::MakeRequest(&remoter)); | |
2773 return base::MakeUnique<media::RemotingRendererController>( | |
2774 make_scoped_refptr(new media::RemotingSourceImpl( | |
2775 std::move(remoting_source_request), std::move(remoter)))); | |
2776 } | |
2777 #endif | |
2778 | |
2779 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( | 2768 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
2780 const blink::WebMediaPlayerSource& source, | 2769 const blink::WebMediaPlayerSource& source, |
2781 WebMediaPlayerClient* client, | 2770 WebMediaPlayerClient* client, |
2782 WebMediaPlayerEncryptedMediaClient* encrypted_client, | 2771 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
2783 WebContentDecryptionModule* initial_cdm, | 2772 WebContentDecryptionModule* initial_cdm, |
2784 const blink::WebString& sink_id) { | 2773 const blink::WebString& sink_id) { |
2785 blink::WebMediaStream web_stream = | 2774 blink::WebMediaStream web_stream = |
2786 GetWebMediaStreamFromWebMediaPlayerSource(source); | 2775 GetWebMediaStreamFromWebMediaPlayerSource(source); |
2787 if (!web_stream.isNull()) | 2776 if (!web_stream.isNull()) |
2788 return CreateWebMediaPlayerForMediaStream(client, sink_id, | 2777 return CreateWebMediaPlayerForMediaStream(client, sink_id, |
(...skipping 24 matching lines...) Expand all Loading... |
2813 | 2802 |
2814 scoped_refptr<media::MediaLog> media_log( | 2803 scoped_refptr<media::MediaLog> media_log( |
2815 new RenderMediaLog(url::Origin(frame_->getSecurityOrigin()).GetURL())); | 2804 new RenderMediaLog(url::Origin(frame_->getSecurityOrigin()).GetURL())); |
2816 | 2805 |
2817 #if defined(OS_ANDROID) | 2806 #if defined(OS_ANDROID) |
2818 if (UseWebMediaPlayerImpl(url) && !media_surface_manager_) | 2807 if (UseWebMediaPlayerImpl(url) && !media_surface_manager_) |
2819 media_surface_manager_ = new RendererSurfaceViewManager(this); | 2808 media_surface_manager_ = new RendererSurfaceViewManager(this); |
2820 #endif // defined(OS_ANDROID) | 2809 #endif // defined(OS_ANDROID) |
2821 | 2810 |
2822 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2811 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2823 std::unique_ptr<media::RemotingRendererController> remoting_controller = | 2812 media::mojom::RemotingSourcePtr remoting_source; |
2824 CreateRemotingRendererController(); | 2813 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); |
| 2814 media::mojom::RemoterPtr remoter; |
| 2815 GetRemoterFactory()->Create(std::move(remoting_source), |
| 2816 mojo::MakeRequest(&remoter)); |
| 2817 using RemotingController = media::remoting::RendererController; |
| 2818 std::unique_ptr<RemotingController> remoting_controller( |
| 2819 new RemotingController(new media::remoting::SharedSession( |
| 2820 std::move(remoting_source_request), std::move(remoter)))); |
2825 base::WeakPtr<media::MediaObserver> media_observer = | 2821 base::WeakPtr<media::MediaObserver> media_observer = |
2826 remoting_controller->GetWeakPtr(); | 2822 remoting_controller->GetWeakPtr(); |
2827 #else | 2823 #else |
2828 base::WeakPtr<media::MediaObserver> media_observer = nullptr; | 2824 base::WeakPtr<media::MediaObserver> media_observer = nullptr; |
2829 #endif | 2825 #endif |
2830 | 2826 |
2831 media::WebMediaPlayerParams params( | 2827 media::WebMediaPlayerParams params( |
2832 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2828 base::Bind(&ContentRendererClient::DeferMediaLoad, |
2833 base::Unretained(GetContentClient()->renderer()), | 2829 base::Unretained(GetContentClient()->renderer()), |
2834 static_cast<RenderFrame*>(this), | 2830 static_cast<RenderFrame*>(this), |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2876 GetMediaInterfaceProvider()); | 2872 GetMediaInterfaceProvider()); |
2877 #else | 2873 #else |
2878 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2874 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2879 media_log, GetDecoderFactory(), | 2875 media_log, GetDecoderFactory(), |
2880 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2876 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2881 base::Unretained(render_thread))); | 2877 base::Unretained(render_thread))); |
2882 #endif | 2878 #endif |
2883 } | 2879 } |
2884 | 2880 |
2885 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2881 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2886 media::RemotingRendererController* remoting_controller_ptr = | 2882 auto* const remoting_controller_ptr = remoting_controller.get(); |
2887 remoting_controller.get(); | 2883 media_renderer_factory = |
2888 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( | 2884 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( |
2889 std::move(media_renderer_factory), std::move(remoting_controller)); | 2885 std::move(media_renderer_factory), std::move(remoting_controller)); |
2890 #endif | 2886 #endif |
2891 | 2887 |
2892 if (!url_index_.get() || url_index_->frame() != frame_) | 2888 if (!url_index_.get() || url_index_->frame() != frame_) |
2893 url_index_.reset(new media::UrlIndex(frame_)); | 2889 url_index_.reset(new media::UrlIndex(frame_)); |
2894 | 2890 |
2895 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | 2891 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
2896 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), | 2892 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), |
2897 std::move(media_renderer_factory), url_index_, params); | 2893 std::move(media_renderer_factory), url_index_, params); |
2898 | 2894 |
2899 #if defined(OS_ANDROID) // WMPI_CAST | 2895 #if defined(OS_ANDROID) // WMPI_CAST |
(...skipping 3707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6607 } | 6603 } |
6608 #endif // defined(ENABLE_MOJO_CDM) | 6604 #endif // defined(ENABLE_MOJO_CDM) |
6609 | 6605 |
6610 #if BUILDFLAG(ENABLE_PEPPER_CDMS) | 6606 #if BUILDFLAG(ENABLE_PEPPER_CDMS) |
6611 DCHECK(frame_); | 6607 DCHECK(frame_); |
6612 cdm_factory_.reset( | 6608 cdm_factory_.reset( |
6613 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); | 6609 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); |
6614 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) | 6610 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) |
6615 | 6611 |
6616 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 6612 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
6617 cdm_factory_.reset(new media::RemotingCdmFactory( | 6613 cdm_factory_.reset(new media::remoting::RemotingCdmFactory( |
6618 std::move(cdm_factory_), GetRemoterFactory(), | 6614 std::move(cdm_factory_), GetRemoterFactory(), |
6619 std::move(remoting_sink_observer_))); | 6615 std::move(remoting_sink_observer_))); |
6620 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) | 6616 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
6621 | 6617 |
6622 return cdm_factory_.get(); | 6618 return cdm_factory_.get(); |
6623 } | 6619 } |
6624 | 6620 |
6625 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { | 6621 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { |
6626 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 6622 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
6627 if (!decoder_factory_) { | 6623 if (!decoder_factory_) { |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6876 // event target. Potentially a Pepper plugin will receive the event. | 6872 // event target. Potentially a Pepper plugin will receive the event. |
6877 // In order to tell whether a plugin gets the last mouse event and which it | 6873 // In order to tell whether a plugin gets the last mouse event and which it |
6878 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets | 6874 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets |
6879 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 6875 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
6880 // |pepper_last_mouse_event_target_|. | 6876 // |pepper_last_mouse_event_target_|. |
6881 pepper_last_mouse_event_target_ = nullptr; | 6877 pepper_last_mouse_event_target_ = nullptr; |
6882 #endif | 6878 #endif |
6883 } | 6879 } |
6884 | 6880 |
6885 } // namespace content | 6881 } // namespace content |
OLD | NEW |