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 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
262 #endif | 262 #endif |
263 | 263 |
264 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 264 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
265 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck | 265 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck |
266 #endif | 266 #endif |
267 | 267 |
268 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 268 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
269 #include "content/renderer/image_downloader/single_image_downloader.h" // nognc heck | 269 #include "content/renderer/image_downloader/single_image_downloader.h" // nognc heck |
270 #include "media/remoting/remoting_cdm_controller.h" // nogncheck | 270 #include "media/remoting/remoting_cdm_controller.h" // nogncheck |
271 #include "media/remoting/remoting_cdm_factory.h" // nogncheck | 271 #include "media/remoting/remoting_cdm_factory.h" // nogncheck |
272 #include "media/remoting/remoting_renderer_controller.h" // nogncheck | 272 #include "media/remoting/shared_session.h" // nogncheck |
273 #include "media/remoting/remoting_renderer_factory.h" // nogncheck | 273 #include "media/remoting/sink_availability_observer.h" // nogncheck |
274 #include "media/remoting/remoting_sink_observer.h" // nogncheck | 274 #include "media/remoting/situational_renderer_factory.h" // nogncheck |
275 #include "media/remoting/user_experience_controller.h" // nogncheck | |
275 #endif | 276 #endif |
276 | 277 |
277 using base::Time; | 278 using base::Time; |
278 using base::TimeDelta; | 279 using base::TimeDelta; |
279 using blink::WebCachePolicy; | 280 using blink::WebCachePolicy; |
280 using blink::WebContentDecryptionModule; | 281 using blink::WebContentDecryptionModule; |
281 using blink::WebContextMenuData; | 282 using blink::WebContextMenuData; |
282 using blink::WebCString; | 283 using blink::WebCString; |
283 using blink::WebData; | 284 using blink::WebData; |
284 using blink::WebDataSource; | 285 using blink::WebDataSource; |
(...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1146 #endif | 1147 #endif |
1147 | 1148 |
1148 #if BUILDFLAG(ENABLE_PLUGINS) | 1149 #if BUILDFLAG(ENABLE_PLUGINS) |
1149 // Manages its own lifetime. | 1150 // Manages its own lifetime. |
1150 plugin_power_saver_helper_ = new PluginPowerSaverHelper(this); | 1151 plugin_power_saver_helper_ = new PluginPowerSaverHelper(this); |
1151 #endif | 1152 #endif |
1152 | 1153 |
1153 manifest_manager_ = new ManifestManager(this); | 1154 manifest_manager_ = new ManifestManager(this); |
1154 | 1155 |
1155 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 1156 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
1156 // Create the RemotingSinkObserver to monitor the remoting sink availablity. | 1157 // Create the SinkAvailabilityObserver to monitor the remoting sink |
1158 // availablity. | |
1157 media::mojom::RemotingSourcePtr remoting_source; | 1159 media::mojom::RemotingSourcePtr remoting_source; |
1158 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); | 1160 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); |
1159 media::mojom::RemoterPtr remoter; | 1161 media::mojom::RemoterPtr remoter; |
1160 GetRemoterFactory()->Create(std::move(remoting_source), | 1162 GetRemoterFactory()->Create(std::move(remoting_source), |
1161 mojo::MakeRequest(&remoter)); | 1163 mojo::MakeRequest(&remoter)); |
1162 remoting_sink_observer_ = base::MakeUnique<media::RemotingSinkObserver>( | 1164 remoting_sink_observer_ = |
1163 std::move(remoting_source_request), std::move(remoter)); | 1165 base::MakeUnique<media::remoting::SinkAvailabilityObserver>( |
1166 std::move(remoting_source_request), std::move(remoter)); | |
1164 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) | 1167 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
1165 } | 1168 } |
1166 | 1169 |
1167 RenderFrameImpl::~RenderFrameImpl() { | 1170 RenderFrameImpl::~RenderFrameImpl() { |
1168 // If file chooser is still waiting for answer, dispatch empty answer. | 1171 // If file chooser is still waiting for answer, dispatch empty answer. |
1169 while (!file_chooser_completions_.empty()) { | 1172 while (!file_chooser_completions_.empty()) { |
1170 if (file_chooser_completions_.front()->completion) { | 1173 if (file_chooser_completions_.front()->completion) { |
1171 file_chooser_completions_.front()->completion->didChooseFile( | 1174 file_chooser_completions_.front()->completion->didChooseFile( |
1172 WebVector<WebString>()); | 1175 WebVector<WebString>()); |
1173 } | 1176 } |
(...skipping 1583 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() { | |
miu
2017/01/20 23:14:41
Note: I just in-lined this where it was used (beca
xjz
2017/01/21 06:12:33
Sounds good.
| |
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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2875 GetMediaInterfaceProvider()); | 2871 GetMediaInterfaceProvider()); |
2876 #else | 2872 #else |
2877 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2873 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2878 media_log, GetDecoderFactory(), | 2874 media_log, GetDecoderFactory(), |
2879 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2875 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2880 base::Unretained(render_thread))); | 2876 base::Unretained(render_thread))); |
2881 #endif | 2877 #endif |
2882 } | 2878 } |
2883 | 2879 |
2884 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2880 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2885 media::RemotingRendererController* remoting_controller_ptr = | 2881 auto* const remoting_controller_ptr = remoting_controller.get(); |
2886 remoting_controller.get(); | 2882 media_renderer_factory = |
2887 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( | 2883 base::MakeUnique<media::remoting::SituationalRendererFactory>( |
2888 std::move(media_renderer_factory), std::move(remoting_controller)); | 2884 std::move(media_renderer_factory), std::move(remoting_controller)); |
2889 #endif | 2885 #endif |
2890 | 2886 |
2891 if (!url_index_.get() || url_index_->frame() != frame_) | 2887 if (!url_index_.get() || url_index_->frame() != frame_) |
2892 url_index_.reset(new media::UrlIndex(frame_)); | 2888 url_index_.reset(new media::UrlIndex(frame_)); |
2893 | 2889 |
2894 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | 2890 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
2895 frame_, client, encrypted_client, | 2891 frame_, client, encrypted_client, |
2896 GetWebMediaPlayerDelegate()->AsWeakPtr(), | 2892 GetWebMediaPlayerDelegate()->AsWeakPtr(), |
2897 std::move(media_renderer_factory), url_index_, params); | 2893 std::move(media_renderer_factory), url_index_, params); |
2898 | 2894 |
(...skipping 3711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
6610 } | 6606 } |
6611 #endif // defined(ENABLE_MOJO_CDM) | 6607 #endif // defined(ENABLE_MOJO_CDM) |
6612 | 6608 |
6613 #if BUILDFLAG(ENABLE_PEPPER_CDMS) | 6609 #if BUILDFLAG(ENABLE_PEPPER_CDMS) |
6614 DCHECK(frame_); | 6610 DCHECK(frame_); |
6615 cdm_factory_.reset( | 6611 cdm_factory_.reset( |
6616 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); | 6612 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); |
6617 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) | 6613 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) |
6618 | 6614 |
6619 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 6615 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
6620 cdm_factory_.reset(new media::RemotingCdmFactory( | 6616 cdm_factory_.reset(new media::remoting::RemotingCdmFactory( |
6621 std::move(cdm_factory_), GetRemoterFactory(), | 6617 std::move(cdm_factory_), GetRemoterFactory(), |
6622 std::move(remoting_sink_observer_))); | 6618 std::move(remoting_sink_observer_))); |
6623 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) | 6619 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
6624 | 6620 |
6625 return cdm_factory_.get(); | 6621 return cdm_factory_.get(); |
6626 } | 6622 } |
6627 | 6623 |
6628 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { | 6624 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { |
6629 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 6625 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
6630 if (!decoder_factory_) { | 6626 if (!decoder_factory_) { |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
6874 // event target. Potentially a Pepper plugin will receive the event. | 6870 // event target. Potentially a Pepper plugin will receive the event. |
6875 // In order to tell whether a plugin gets the last mouse event and which it | 6871 // In order to tell whether a plugin gets the last mouse event and which it |
6876 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets | 6872 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets |
6877 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 6873 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
6878 // |pepper_last_mouse_event_target_|. | 6874 // |pepper_last_mouse_event_target_|. |
6879 pepper_last_mouse_event_target_ = nullptr; | 6875 pepper_last_mouse_event_target_ = nullptr; |
6880 #endif | 6876 #endif |
6881 } | 6877 } |
6882 | 6878 |
6883 } // namespace content | 6879 } // namespace content |
OLD | NEW |