Chromium Code Reviews| 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 |