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 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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/remoting_cdm_controller.h" // nogncheck | 271 #include "media/remoting/remoting_cdm_controller.h" // nogncheck |
272 #include "media/remoting/remoting_cdm_factory.h" // nogncheck | 272 #include "media/remoting/remoting_cdm_factory.h" // nogncheck |
273 #include "media/remoting/remoting_renderer_controller.h" // nogncheck | 273 #include "media/remoting/shared_session.h" // nogncheck |
274 #include "media/remoting/remoting_renderer_factory.h" // nogncheck | 274 #include "media/remoting/sink_availability_observer.h" // nogncheck |
275 #include "media/remoting/remoting_sink_observer.h" // nogncheck | 275 #include "media/remoting/situational_renderer_factory.h" // nogncheck |
| 276 #include "media/remoting/user_experience_controller.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 861 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1147 #endif | 1148 #endif |
1148 | 1149 |
1149 #if BUILDFLAG(ENABLE_PLUGINS) | 1150 #if BUILDFLAG(ENABLE_PLUGINS) |
1150 // Manages its own lifetime. | 1151 // Manages its own lifetime. |
1151 plugin_power_saver_helper_ = new PluginPowerSaverHelper(this); | 1152 plugin_power_saver_helper_ = new PluginPowerSaverHelper(this); |
1152 #endif | 1153 #endif |
1153 | 1154 |
1154 manifest_manager_ = new ManifestManager(this); | 1155 manifest_manager_ = new ManifestManager(this); |
1155 | 1156 |
1156 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 1157 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
1157 // Create the RemotingSinkObserver to monitor the remoting sink availablity. | 1158 // Create the SinkAvailabilityObserver to monitor the remoting sink |
| 1159 // availablity. |
1158 media::mojom::RemotingSourcePtr remoting_source; | 1160 media::mojom::RemotingSourcePtr remoting_source; |
1159 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); | 1161 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); |
1160 media::mojom::RemoterPtr remoter; | 1162 media::mojom::RemoterPtr remoter; |
1161 GetRemoterFactory()->Create(std::move(remoting_source), | 1163 GetRemoterFactory()->Create(std::move(remoting_source), |
1162 mojo::MakeRequest(&remoter)); | 1164 mojo::MakeRequest(&remoter)); |
1163 remoting_sink_observer_ = base::MakeUnique<media::RemotingSinkObserver>( | 1165 remoting_sink_observer_ = |
1164 std::move(remoting_source_request), std::move(remoter)); | 1166 base::MakeUnique<media::remoting::SinkAvailabilityObserver>( |
| 1167 std::move(remoting_source_request), std::move(remoter)); |
1165 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) | 1168 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
1166 } | 1169 } |
1167 | 1170 |
1168 RenderFrameImpl::~RenderFrameImpl() { | 1171 RenderFrameImpl::~RenderFrameImpl() { |
1169 // If file chooser is still waiting for answer, dispatch empty answer. | 1172 // If file chooser is still waiting for answer, dispatch empty answer. |
1170 while (!file_chooser_completions_.empty()) { | 1173 while (!file_chooser_completions_.empty()) { |
1171 if (file_chooser_completions_.front()->completion) { | 1174 if (file_chooser_completions_.front()->completion) { |
1172 file_chooser_completions_.front()->completion->didChooseFile( | 1175 file_chooser_completions_.front()->completion->didChooseFile( |
1173 WebVector<WebString>()); | 1176 WebVector<WebString>()); |
1174 } | 1177 } |
(...skipping 1582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2757 return NULL; | 2760 return NULL; |
2758 | 2761 |
2759 WebPluginParams params_to_use = params; | 2762 WebPluginParams params_to_use = params; |
2760 params_to_use.mimeType = WebString::fromUTF8(mime_type); | 2763 params_to_use.mimeType = WebString::fromUTF8(mime_type); |
2761 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); | 2764 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); |
2762 #else | 2765 #else |
2763 return NULL; | 2766 return NULL; |
2764 #endif // BUILDFLAG(ENABLE_PLUGINS) | 2767 #endif // BUILDFLAG(ENABLE_PLUGINS) |
2765 } | 2768 } |
2766 | 2769 |
2767 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | |
2768 std::unique_ptr<media::RemotingRendererController> | |
2769 RenderFrameImpl::CreateRemotingRendererController() { | |
2770 media::mojom::RemotingSourcePtr remoting_source; | |
2771 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); | |
2772 media::mojom::RemoterPtr remoter; | |
2773 GetRemoterFactory()->Create(std::move(remoting_source), | |
2774 mojo::MakeRequest(&remoter)); | |
2775 return base::MakeUnique<media::RemotingRendererController>( | |
2776 make_scoped_refptr(new media::RemotingSourceImpl( | |
2777 std::move(remoting_source_request), std::move(remoter)))); | |
2778 } | |
2779 #endif | |
2780 | |
2781 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( | 2770 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
2782 const blink::WebMediaPlayerSource& source, | 2771 const blink::WebMediaPlayerSource& source, |
2783 WebMediaPlayerClient* client, | 2772 WebMediaPlayerClient* client, |
2784 WebMediaPlayerEncryptedMediaClient* encrypted_client, | 2773 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
2785 WebContentDecryptionModule* initial_cdm, | 2774 WebContentDecryptionModule* initial_cdm, |
2786 const blink::WebString& sink_id) { | 2775 const blink::WebString& sink_id) { |
2787 blink::WebMediaStream web_stream = | 2776 blink::WebMediaStream web_stream = |
2788 GetWebMediaStreamFromWebMediaPlayerSource(source); | 2777 GetWebMediaStreamFromWebMediaPlayerSource(source); |
2789 if (!web_stream.isNull()) | 2778 if (!web_stream.isNull()) |
2790 return CreateWebMediaPlayerForMediaStream(client, sink_id, | 2779 return CreateWebMediaPlayerForMediaStream(client, sink_id, |
(...skipping 24 matching lines...) Expand all Loading... |
2815 | 2804 |
2816 scoped_refptr<media::MediaLog> media_log( | 2805 scoped_refptr<media::MediaLog> media_log( |
2817 new RenderMediaLog(url::Origin(frame_->getSecurityOrigin()).GetURL())); | 2806 new RenderMediaLog(url::Origin(frame_->getSecurityOrigin()).GetURL())); |
2818 | 2807 |
2819 #if defined(OS_ANDROID) | 2808 #if defined(OS_ANDROID) |
2820 if (UseWebMediaPlayerImpl(url) && !media_surface_manager_) | 2809 if (UseWebMediaPlayerImpl(url) && !media_surface_manager_) |
2821 media_surface_manager_ = new RendererSurfaceViewManager(this); | 2810 media_surface_manager_ = new RendererSurfaceViewManager(this); |
2822 #endif // defined(OS_ANDROID) | 2811 #endif // defined(OS_ANDROID) |
2823 | 2812 |
2824 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2813 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2825 std::unique_ptr<media::RemotingRendererController> remoting_controller = | 2814 media::mojom::RemotingSourcePtr remoting_source; |
2826 CreateRemotingRendererController(); | 2815 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); |
| 2816 media::mojom::RemoterPtr remoter; |
| 2817 GetRemoterFactory()->Create(std::move(remoting_source), |
| 2818 mojo::MakeRequest(&remoter)); |
| 2819 using RemotingController = media::remoting::UserExperienceController; |
| 2820 std::unique_ptr<RemotingController> remoting_controller( |
| 2821 new RemotingController(new media::remoting::SharedSession( |
| 2822 std::move(remoting_source_request), std::move(remoter)))); |
2827 base::WeakPtr<media::MediaObserver> media_observer = | 2823 base::WeakPtr<media::MediaObserver> media_observer = |
2828 remoting_controller->GetWeakPtr(); | 2824 remoting_controller->GetWeakPtr(); |
2829 #else | 2825 #else |
2830 base::WeakPtr<media::MediaObserver> media_observer = nullptr; | 2826 base::WeakPtr<media::MediaObserver> media_observer = nullptr; |
2831 #endif | 2827 #endif |
2832 | 2828 |
2833 media::WebMediaPlayerParams params( | 2829 media::WebMediaPlayerParams params( |
2834 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2830 base::Bind(&ContentRendererClient::DeferMediaLoad, |
2835 base::Unretained(GetContentClient()->renderer()), | 2831 base::Unretained(GetContentClient()->renderer()), |
2836 static_cast<RenderFrame*>(this), | 2832 static_cast<RenderFrame*>(this), |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2878 GetMediaInterfaceProvider()); | 2874 GetMediaInterfaceProvider()); |
2879 #else | 2875 #else |
2880 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2876 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2881 media_log, GetDecoderFactory(), | 2877 media_log, GetDecoderFactory(), |
2882 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2878 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2883 base::Unretained(render_thread))); | 2879 base::Unretained(render_thread))); |
2884 #endif | 2880 #endif |
2885 } | 2881 } |
2886 | 2882 |
2887 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2883 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2888 media::RemotingRendererController* remoting_controller_ptr = | 2884 auto* const remoting_controller_ptr = remoting_controller.get(); |
2889 remoting_controller.get(); | 2885 media_renderer_factory = |
2890 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( | 2886 base::MakeUnique<media::remoting::SituationalRendererFactory>( |
2891 std::move(media_renderer_factory), std::move(remoting_controller)); | 2887 std::move(media_renderer_factory), std::move(remoting_controller)); |
2892 #endif | 2888 #endif |
2893 | 2889 |
2894 if (!url_index_.get() || url_index_->frame() != frame_) | 2890 if (!url_index_.get() || url_index_->frame() != frame_) |
2895 url_index_.reset(new media::UrlIndex(frame_)); | 2891 url_index_.reset(new media::UrlIndex(frame_)); |
2896 | 2892 |
2897 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | 2893 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
2898 frame_, client, encrypted_client, | 2894 frame_, client, encrypted_client, |
2899 GetWebMediaPlayerDelegate()->AsWeakPtr(), | 2895 GetWebMediaPlayerDelegate()->AsWeakPtr(), |
2900 std::move(media_renderer_factory), url_index_, params); | 2896 std::move(media_renderer_factory), url_index_, params); |
2901 | 2897 |
(...skipping 3702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6604 } | 6600 } |
6605 #endif // defined(ENABLE_MOJO_CDM) | 6601 #endif // defined(ENABLE_MOJO_CDM) |
6606 | 6602 |
6607 #if BUILDFLAG(ENABLE_PEPPER_CDMS) | 6603 #if BUILDFLAG(ENABLE_PEPPER_CDMS) |
6608 DCHECK(frame_); | 6604 DCHECK(frame_); |
6609 cdm_factory_.reset( | 6605 cdm_factory_.reset( |
6610 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); | 6606 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); |
6611 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) | 6607 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) |
6612 | 6608 |
6613 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 6609 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
6614 cdm_factory_.reset(new media::RemotingCdmFactory( | 6610 cdm_factory_.reset(new media::remoting::RemotingCdmFactory( |
6615 std::move(cdm_factory_), GetRemoterFactory(), | 6611 std::move(cdm_factory_), GetRemoterFactory(), |
6616 std::move(remoting_sink_observer_))); | 6612 std::move(remoting_sink_observer_))); |
6617 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) | 6613 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
6618 | 6614 |
6619 return cdm_factory_.get(); | 6615 return cdm_factory_.get(); |
6620 } | 6616 } |
6621 | 6617 |
6622 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { | 6618 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { |
6623 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 6619 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
6624 if (!decoder_factory_) { | 6620 if (!decoder_factory_) { |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6880 // event target. Potentially a Pepper plugin will receive the event. | 6876 // event target. Potentially a Pepper plugin will receive the event. |
6881 // In order to tell whether a plugin gets the last mouse event and which it | 6877 // In order to tell whether a plugin gets the last mouse event and which it |
6882 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets | 6878 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets |
6883 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 6879 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
6884 // |pepper_last_mouse_event_target_|. | 6880 // |pepper_last_mouse_event_target_|. |
6885 pepper_last_mouse_event_target_ = nullptr; | 6881 pepper_last_mouse_event_target_ = nullptr; |
6886 #endif | 6882 #endif |
6887 } | 6883 } |
6888 | 6884 |
6889 } // namespace content | 6885 } // namespace content |
OLD | NEW |