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 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck | 253 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck |
254 #else | 254 #else |
255 #include "media/renderers/default_renderer_factory.h" | 255 #include "media/renderers/default_renderer_factory.h" |
256 #endif | 256 #endif |
257 | 257 |
258 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 258 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
259 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck | 259 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck |
260 #endif | 260 #endif |
261 | 261 |
262 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 262 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
263 #include "media/remoting/remoting_controller.h" // nogncheck | 263 #include "media/remoting/remoting_cdm_controller.h" // nogncheck |
264 #include "media/remoting/remoting_renderer_factory.h" // nogncheck | 264 #include "media/remoting/remoting_cdm_factory.h" // nogncheck |
| 265 #include "media/remoting/remoting_renderer_controller.h" // nogncheck |
| 266 #include "media/remoting/remoting_renderer_factory.h" // nogncheck |
| 267 #include "media/remoting/remoting_sink_observer.h" // nogncheck |
265 #endif | 268 #endif |
266 | 269 |
267 using base::Time; | 270 using base::Time; |
268 using base::TimeDelta; | 271 using base::TimeDelta; |
269 using blink::WebCachePolicy; | 272 using blink::WebCachePolicy; |
270 using blink::WebContentDecryptionModule; | 273 using blink::WebContentDecryptionModule; |
271 using blink::WebContextMenuData; | 274 using blink::WebContextMenuData; |
272 using blink::WebCString; | 275 using blink::WebCString; |
273 using blink::WebData; | 276 using blink::WebData; |
274 using blink::WebDataSource; | 277 using blink::WebDataSource; |
(...skipping 876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1151 #if defined(OS_ANDROID) | 1154 #if defined(OS_ANDROID) |
1152 new GinJavaBridgeDispatcher(this); | 1155 new GinJavaBridgeDispatcher(this); |
1153 #endif | 1156 #endif |
1154 | 1157 |
1155 #if defined(ENABLE_PLUGINS) | 1158 #if defined(ENABLE_PLUGINS) |
1156 // Manages its own lifetime. | 1159 // Manages its own lifetime. |
1157 plugin_power_saver_helper_ = new PluginPowerSaverHelper(this); | 1160 plugin_power_saver_helper_ = new PluginPowerSaverHelper(this); |
1158 #endif | 1161 #endif |
1159 | 1162 |
1160 manifest_manager_ = new ManifestManager(this); | 1163 manifest_manager_ = new ManifestManager(this); |
| 1164 |
| 1165 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| 1166 // Create the RemotingSinkObserver to monitor the remoting sink availablity. |
| 1167 media::mojom::RemotingSourcePtr remoting_source; |
| 1168 media::mojom::RemotingSourceRequest remoting_source_request = |
| 1169 mojo::GetProxy(&remoting_source); |
| 1170 media::mojom::RemoterPtr remoter; |
| 1171 GetRemoterFactory()->Create(std::move(remoting_source), |
| 1172 mojo::GetProxy(&remoter)); |
| 1173 remoting_sink_observer_ = base::MakeUnique<media::RemotingSinkObserver>( |
| 1174 std::move(remoting_source_request), std::move(remoter)); |
| 1175 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
1161 } | 1176 } |
1162 | 1177 |
1163 RenderFrameImpl::~RenderFrameImpl() { | 1178 RenderFrameImpl::~RenderFrameImpl() { |
1164 // If file chooser is still waiting for answer, dispatch empty answer. | 1179 // If file chooser is still waiting for answer, dispatch empty answer. |
1165 while (!file_chooser_completions_.empty()) { | 1180 while (!file_chooser_completions_.empty()) { |
1166 if (file_chooser_completions_.front()->completion) { | 1181 if (file_chooser_completions_.front()->completion) { |
1167 file_chooser_completions_.front()->completion->didChooseFile( | 1182 file_chooser_completions_.front()->completion->didChooseFile( |
1168 WebVector<WebString>()); | 1183 WebVector<WebString>()); |
1169 } | 1184 } |
1170 file_chooser_completions_.pop_front(); | 1185 file_chooser_completions_.pop_front(); |
(...skipping 1540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2711 | 2726 |
2712 WebPluginParams params_to_use = params; | 2727 WebPluginParams params_to_use = params; |
2713 params_to_use.mimeType = WebString::fromUTF8(mime_type); | 2728 params_to_use.mimeType = WebString::fromUTF8(mime_type); |
2714 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); | 2729 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); |
2715 #else | 2730 #else |
2716 return NULL; | 2731 return NULL; |
2717 #endif // defined(ENABLE_PLUGINS) | 2732 #endif // defined(ENABLE_PLUGINS) |
2718 } | 2733 } |
2719 | 2734 |
2720 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2735 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2721 std::unique_ptr<media::RemotingController> | 2736 std::unique_ptr<media::RemotingRendererController> |
2722 RenderFrameImpl::CreateRemotingController() { | 2737 RenderFrameImpl::CreateRemotingRendererController() { |
2723 media::mojom::RemotingSourcePtr remoting_source; | 2738 media::mojom::RemotingSourcePtr remoting_source; |
2724 media::mojom::RemotingSourceRequest remoting_source_request = | 2739 media::mojom::RemotingSourceRequest remoting_source_request = |
2725 mojo::GetProxy(&remoting_source); | 2740 mojo::GetProxy(&remoting_source); |
2726 media::mojom::RemoterPtr remoter; | 2741 media::mojom::RemoterPtr remoter; |
2727 GetRemoterFactory()->Create(std::move(remoting_source), | 2742 GetRemoterFactory()->Create(std::move(remoting_source), |
2728 mojo::GetProxy(&remoter)); | 2743 mojo::GetProxy(&remoter)); |
2729 return base::MakeUnique<media::RemotingController>( | 2744 return base::MakeUnique<media::RemotingRendererController>( |
2730 std::move(remoting_source_request), std::move(remoter)); | 2745 make_scoped_refptr(new media::RemotingSourceImpl( |
| 2746 std::move(remoting_source_request), std::move(remoter)))); |
2731 } | 2747 } |
2732 #endif | 2748 #endif |
2733 | 2749 |
2734 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( | 2750 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
2735 const blink::WebMediaPlayerSource& source, | 2751 const blink::WebMediaPlayerSource& source, |
2736 WebMediaPlayerClient* client, | 2752 WebMediaPlayerClient* client, |
2737 WebMediaPlayerEncryptedMediaClient* encrypted_client, | 2753 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
2738 WebContentDecryptionModule* initial_cdm, | 2754 WebContentDecryptionModule* initial_cdm, |
2739 const blink::WebString& sink_id) { | 2755 const blink::WebString& sink_id) { |
2740 blink::WebMediaStream web_stream = | 2756 blink::WebMediaStream web_stream = |
(...skipping 27 matching lines...) Expand all Loading... |
2768 | 2784 |
2769 scoped_refptr<media::MediaLog> media_log( | 2785 scoped_refptr<media::MediaLog> media_log( |
2770 new RenderMediaLog(url::Origin(frame_->getSecurityOrigin()).GetURL())); | 2786 new RenderMediaLog(url::Origin(frame_->getSecurityOrigin()).GetURL())); |
2771 | 2787 |
2772 #if defined(OS_ANDROID) | 2788 #if defined(OS_ANDROID) |
2773 if (UseWebMediaPlayerImpl(url) && !media_surface_manager_) | 2789 if (UseWebMediaPlayerImpl(url) && !media_surface_manager_) |
2774 media_surface_manager_ = new RendererSurfaceViewManager(this); | 2790 media_surface_manager_ = new RendererSurfaceViewManager(this); |
2775 #endif // defined(OS_ANDROID) | 2791 #endif // defined(OS_ANDROID) |
2776 | 2792 |
2777 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2793 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2778 std::unique_ptr<media::RemotingController> remoting_controller = | 2794 std::unique_ptr<media::RemotingRendererController> remoting_controller = |
2779 CreateRemotingController(); | 2795 CreateRemotingRendererController(); |
2780 base::WeakPtr<media::MediaObserver> media_observer = | 2796 base::WeakPtr<media::MediaObserver> media_observer = |
2781 remoting_controller->GetWeakPtr(); | 2797 remoting_controller->GetWeakPtr(); |
2782 #else | 2798 #else |
2783 base::WeakPtr<media::MediaObserver> media_observer = nullptr; | 2799 base::WeakPtr<media::MediaObserver> media_observer = nullptr; |
2784 #endif | 2800 #endif |
2785 | 2801 |
2786 media::WebMediaPlayerParams params( | 2802 media::WebMediaPlayerParams params( |
2787 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2803 base::Bind(&ContentRendererClient::DeferMediaLoad, |
2788 base::Unretained(GetContentClient()->renderer()), | 2804 base::Unretained(GetContentClient()->renderer()), |
2789 static_cast<RenderFrame*>(this), | 2805 static_cast<RenderFrame*>(this), |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2827 GetMediaInterfaceProvider()); | 2843 GetMediaInterfaceProvider()); |
2828 #else | 2844 #else |
2829 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2845 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2830 media_log, GetDecoderFactory(), | 2846 media_log, GetDecoderFactory(), |
2831 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2847 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2832 base::Unretained(render_thread))); | 2848 base::Unretained(render_thread))); |
2833 #endif | 2849 #endif |
2834 } | 2850 } |
2835 | 2851 |
2836 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2852 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2837 media::RemotingController* remoting_controller_ptr = | 2853 media::RemotingRendererController* remoting_controller_ptr = |
2838 remoting_controller.get(); | 2854 remoting_controller.get(); |
2839 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( | 2855 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( |
2840 std::move(media_renderer_factory), std::move(remoting_controller)); | 2856 std::move(media_renderer_factory), std::move(remoting_controller)); |
2841 #endif | 2857 #endif |
2842 | 2858 |
2843 if (!url_index_.get() || url_index_->frame() != frame_) | 2859 if (!url_index_.get() || url_index_->frame() != frame_) |
2844 url_index_.reset(new media::UrlIndex(frame_)); | 2860 url_index_.reset(new media::UrlIndex(frame_)); |
2845 | 2861 |
2846 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | 2862 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
2847 frame_, client, encrypted_client, | 2863 frame_, client, encrypted_client, |
(...skipping 3532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6380 return cdm_factory_.get(); | 6396 return cdm_factory_.get(); |
6381 } | 6397 } |
6382 #endif // defined(ENABLE_MOJO_CDM) | 6398 #endif // defined(ENABLE_MOJO_CDM) |
6383 | 6399 |
6384 #if BUILDFLAG(ENABLE_PEPPER_CDMS) | 6400 #if BUILDFLAG(ENABLE_PEPPER_CDMS) |
6385 DCHECK(frame_); | 6401 DCHECK(frame_); |
6386 cdm_factory_.reset( | 6402 cdm_factory_.reset( |
6387 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); | 6403 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); |
6388 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) | 6404 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) |
6389 | 6405 |
| 6406 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| 6407 cdm_factory_.reset(new media::RemotingCdmFactory( |
| 6408 std::move(cdm_factory_), GetRemoterFactory(), |
| 6409 std::move(remoting_sink_observer_))); |
| 6410 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| 6411 |
6390 return cdm_factory_.get(); | 6412 return cdm_factory_.get(); |
6391 } | 6413 } |
6392 | 6414 |
6393 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { | 6415 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { |
6394 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 6416 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
6395 if (!decoder_factory_) { | 6417 if (!decoder_factory_) { |
6396 decoder_factory_.reset( | 6418 decoder_factory_.reset( |
6397 new media::MojoDecoderFactory(GetMediaInterfaceProvider())); | 6419 new media::MojoDecoderFactory(GetMediaInterfaceProvider())); |
6398 } | 6420 } |
6399 #endif | 6421 #endif |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6584 // event target. Potentially a Pepper plugin will receive the event. | 6606 // event target. Potentially a Pepper plugin will receive the event. |
6585 // In order to tell whether a plugin gets the last mouse event and which it | 6607 // In order to tell whether a plugin gets the last mouse event and which it |
6586 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets | 6608 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets |
6587 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 6609 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
6588 // |pepper_last_mouse_event_target_|. | 6610 // |pepper_last_mouse_event_target_|. |
6589 pepper_last_mouse_event_target_ = nullptr; | 6611 pepper_last_mouse_event_target_ = nullptr; |
6590 #endif | 6612 #endif |
6591 } | 6613 } |
6592 | 6614 |
6593 } // namespace content | 6615 } // namespace content |
OLD | NEW |