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 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 252 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck | 252 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck |
| 253 #else | 253 #else |
| 254 #include "media/renderers/default_renderer_factory.h" | 254 #include "media/renderers/default_renderer_factory.h" |
| 255 #endif | 255 #endif |
| 256 | 256 |
| 257 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 257 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
| 258 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck | 258 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck |
| 259 #endif | 259 #endif |
| 260 | 260 |
| 261 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 261 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| 262 #include "media/remoting/remoting_controller.h" // nogncheck | 262 #include "media/remoting/remoting_cdm_controller.h" // nogncheck |
| 263 #include "media/remoting/remoting_renderer_factory.h" // nogncheck | 263 #include "media/remoting/remoting_cdm_factory.h" // nogncheck |
| 264 #include "media/remoting/remoting_renderer_controller.h" // nogncheck | |
| 265 #include "media/remoting/remoting_renderer_factory.h" // nogncheck | |
| 266 #include "media/remoting/remoting_sink_observer.h" // nogncheck | |
| 264 #endif | 267 #endif |
| 265 | 268 |
| 266 using base::Time; | 269 using base::Time; |
| 267 using base::TimeDelta; | 270 using base::TimeDelta; |
| 268 using blink::WebCachePolicy; | 271 using blink::WebCachePolicy; |
| 269 using blink::WebContentDecryptionModule; | 272 using blink::WebContentDecryptionModule; |
| 270 using blink::WebContextMenuData; | 273 using blink::WebContextMenuData; |
| 271 using blink::WebCString; | 274 using blink::WebCString; |
| 272 using blink::WebData; | 275 using blink::WebData; |
| 273 using blink::WebDataSource; | 276 using blink::WebDataSource; |
| (...skipping 876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1150 #if defined(OS_ANDROID) | 1153 #if defined(OS_ANDROID) |
| 1151 new GinJavaBridgeDispatcher(this); | 1154 new GinJavaBridgeDispatcher(this); |
| 1152 #endif | 1155 #endif |
| 1153 | 1156 |
| 1154 #if defined(ENABLE_PLUGINS) | 1157 #if defined(ENABLE_PLUGINS) |
| 1155 // Manages its own lifetime. | 1158 // Manages its own lifetime. |
| 1156 plugin_power_saver_helper_ = new PluginPowerSaverHelper(this); | 1159 plugin_power_saver_helper_ = new PluginPowerSaverHelper(this); |
| 1157 #endif | 1160 #endif |
| 1158 | 1161 |
| 1159 manifest_manager_ = new ManifestManager(this); | 1162 manifest_manager_ = new ManifestManager(this); |
| 1163 | |
| 1164 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | |
| 1165 // Create the RemotingSinkObserver to monitor the remoting sink availablity. | |
| 1166 media::mojom::RemotingSourcePtr remoting_source; | |
| 1167 media::mojom::RemotingSourceRequest remoting_source_request = | |
| 1168 mojo::GetProxy(&remoting_source); | |
| 1169 media::mojom::RemoterPtr remoter; | |
| 1170 GetRemoterFactory()->Create(std::move(remoting_source), | |
| 1171 mojo::GetProxy(&remoter)); | |
| 1172 remoting_sink_observer_ = base::MakeUnique<media::RemotingSinkObserver>( | |
| 1173 std::move(remoting_source_request), std::move(remoter)); | |
| 1174 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) | |
| 1160 } | 1175 } |
| 1161 | 1176 |
| 1162 RenderFrameImpl::~RenderFrameImpl() { | 1177 RenderFrameImpl::~RenderFrameImpl() { |
| 1163 // If file chooser is still waiting for answer, dispatch empty answer. | 1178 // If file chooser is still waiting for answer, dispatch empty answer. |
| 1164 while (!file_chooser_completions_.empty()) { | 1179 while (!file_chooser_completions_.empty()) { |
| 1165 if (file_chooser_completions_.front()->completion) { | 1180 if (file_chooser_completions_.front()->completion) { |
| 1166 file_chooser_completions_.front()->completion->didChooseFile( | 1181 file_chooser_completions_.front()->completion->didChooseFile( |
| 1167 WebVector<WebString>()); | 1182 WebVector<WebString>()); |
| 1168 } | 1183 } |
| 1169 file_chooser_completions_.pop_front(); | 1184 file_chooser_completions_.pop_front(); |
| (...skipping 1540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2710 | 2725 |
| 2711 WebPluginParams params_to_use = params; | 2726 WebPluginParams params_to_use = params; |
| 2712 params_to_use.mimeType = WebString::fromUTF8(mime_type); | 2727 params_to_use.mimeType = WebString::fromUTF8(mime_type); |
| 2713 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); | 2728 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); |
| 2714 #else | 2729 #else |
| 2715 return NULL; | 2730 return NULL; |
| 2716 #endif // defined(ENABLE_PLUGINS) | 2731 #endif // defined(ENABLE_PLUGINS) |
| 2717 } | 2732 } |
| 2718 | 2733 |
| 2719 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2734 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| 2720 std::unique_ptr<media::RemotingController> | 2735 std::unique_ptr<media::RemotingRendererController> |
| 2721 RenderFrameImpl::CreateRemotingController() { | 2736 RenderFrameImpl::CreateRemotingRendererController() { |
| 2722 media::mojom::RemotingSourcePtr remoting_source; | 2737 media::mojom::RemotingSourcePtr remoting_source; |
| 2723 media::mojom::RemotingSourceRequest remoting_source_request = | 2738 media::mojom::RemotingSourceRequest remoting_source_request = |
| 2724 mojo::GetProxy(&remoting_source); | 2739 mojo::GetProxy(&remoting_source); |
| 2725 media::mojom::RemoterPtr remoter; | 2740 media::mojom::RemoterPtr remoter; |
| 2726 GetRemoterFactory()->Create(std::move(remoting_source), | 2741 GetRemoterFactory()->Create(std::move(remoting_source), |
| 2727 mojo::GetProxy(&remoter)); | 2742 mojo::GetProxy(&remoter)); |
| 2728 return base::MakeUnique<media::RemotingController>( | 2743 scoped_refptr<media::RemotingSourceImpl> remoting_source_impl = |
| 2729 std::move(remoting_source_request), std::move(remoter)); | 2744 new media::RemotingSourceImpl(std::move(remoting_source_request), |
| 2745 std::move(remoter)); | |
| 2746 if (remoting_sink_observer_->is_sink_available()) | |
|
miu
2016/11/05 04:05:15
Let's not do this for the Renderer:
1. Let the Re
xjz
2016/11/07 19:03:54
Done. And let |cdm_factory_| owns the |remoting_si
| |
| 2747 remoting_source_impl->OnSinkAvailable(); | |
| 2748 return base::MakeUnique<media::RemotingRendererController>( | |
| 2749 remoting_source_impl); | |
| 2730 } | 2750 } |
| 2731 #endif | 2751 #endif |
| 2732 | 2752 |
| 2733 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( | 2753 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
| 2734 const blink::WebMediaPlayerSource& source, | 2754 const blink::WebMediaPlayerSource& source, |
| 2735 WebMediaPlayerClient* client, | 2755 WebMediaPlayerClient* client, |
| 2736 WebMediaPlayerEncryptedMediaClient* encrypted_client, | 2756 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
| 2737 WebContentDecryptionModule* initial_cdm, | 2757 WebContentDecryptionModule* initial_cdm, |
| 2738 const blink::WebString& sink_id) { | 2758 const blink::WebString& sink_id) { |
| 2739 blink::WebMediaStream web_stream = | 2759 blink::WebMediaStream web_stream = |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 2767 | 2787 |
| 2768 scoped_refptr<media::MediaLog> media_log( | 2788 scoped_refptr<media::MediaLog> media_log( |
| 2769 new RenderMediaLog(url::Origin(frame_->getSecurityOrigin()).GetURL())); | 2789 new RenderMediaLog(url::Origin(frame_->getSecurityOrigin()).GetURL())); |
| 2770 | 2790 |
| 2771 #if defined(OS_ANDROID) | 2791 #if defined(OS_ANDROID) |
| 2772 if (UseWebMediaPlayerImpl(url) && !media_surface_manager_) | 2792 if (UseWebMediaPlayerImpl(url) && !media_surface_manager_) |
| 2773 media_surface_manager_ = new RendererSurfaceViewManager(this); | 2793 media_surface_manager_ = new RendererSurfaceViewManager(this); |
| 2774 #endif // defined(OS_ANDROID) | 2794 #endif // defined(OS_ANDROID) |
| 2775 | 2795 |
| 2776 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2796 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| 2777 std::unique_ptr<media::RemotingController> remoting_controller = | 2797 std::unique_ptr<media::RemotingRendererController> remoting_controller = |
| 2778 CreateRemotingController(); | 2798 CreateRemotingRendererController(); |
| 2779 base::WeakPtr<media::MediaObserver> media_observer = | 2799 base::WeakPtr<media::MediaObserver> media_observer = |
| 2780 remoting_controller->GetWeakPtr(); | 2800 remoting_controller->GetWeakPtr(); |
| 2781 #else | 2801 #else |
| 2782 base::WeakPtr<media::MediaObserver> media_observer = nullptr; | 2802 base::WeakPtr<media::MediaObserver> media_observer = nullptr; |
| 2783 #endif | 2803 #endif |
| 2784 | 2804 |
| 2785 media::WebMediaPlayerParams params( | 2805 media::WebMediaPlayerParams params( |
| 2786 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2806 base::Bind(&ContentRendererClient::DeferMediaLoad, |
| 2787 base::Unretained(GetContentClient()->renderer()), | 2807 base::Unretained(GetContentClient()->renderer()), |
| 2788 static_cast<RenderFrame*>(this), | 2808 static_cast<RenderFrame*>(this), |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2826 GetMediaInterfaceProvider()); | 2846 GetMediaInterfaceProvider()); |
| 2827 #else | 2847 #else |
| 2828 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2848 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
| 2829 media_log, GetDecoderFactory(), | 2849 media_log, GetDecoderFactory(), |
| 2830 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2850 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2831 base::Unretained(render_thread))); | 2851 base::Unretained(render_thread))); |
| 2832 #endif | 2852 #endif |
| 2833 } | 2853 } |
| 2834 | 2854 |
| 2835 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2855 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| 2836 media::RemotingController* remoting_controller_ptr = | 2856 media::RemotingRendererController* remoting_controller_ptr = |
| 2837 remoting_controller.get(); | 2857 remoting_controller.get(); |
| 2838 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( | 2858 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( |
| 2839 std::move(media_renderer_factory), std::move(remoting_controller)); | 2859 std::move(media_renderer_factory), std::move(remoting_controller)); |
| 2840 #endif | 2860 #endif |
| 2841 | 2861 |
| 2842 if (!url_index_.get() || url_index_->frame() != frame_) | 2862 if (!url_index_.get() || url_index_->frame() != frame_) |
| 2843 url_index_.reset(new media::UrlIndex(frame_)); | 2863 url_index_.reset(new media::UrlIndex(frame_)); |
| 2844 | 2864 |
| 2845 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | 2865 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
| 2846 frame_, client, encrypted_client, | 2866 frame_, client, encrypted_client, |
| (...skipping 3573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6420 | 6440 |
| 6421 #if defined(ENABLE_MOJO_CDM) | 6441 #if defined(ENABLE_MOJO_CDM) |
| 6422 if (UseMojoCdm()) { | 6442 if (UseMojoCdm()) { |
| 6423 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaInterfaceProvider())); | 6443 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaInterfaceProvider())); |
| 6424 return cdm_factory_.get(); | 6444 return cdm_factory_.get(); |
| 6425 } | 6445 } |
| 6426 #endif // defined(ENABLE_MOJO_CDM) | 6446 #endif // defined(ENABLE_MOJO_CDM) |
| 6427 | 6447 |
| 6428 #if BUILDFLAG(ENABLE_PEPPER_CDMS) | 6448 #if BUILDFLAG(ENABLE_PEPPER_CDMS) |
| 6429 DCHECK(frame_); | 6449 DCHECK(frame_); |
| 6450 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | |
|
miu
2016/11/05 04:05:15
nit: Please eliminate duplicate code and simplify:
xjz
2016/11/07 19:03:54
Done.
| |
| 6451 cdm_factory_.reset(new media::RemotingCdmFactory( | |
| 6452 base::MakeUnique<RenderCdmFactory>( | |
| 6453 base::Bind(&PepperCdmWrapperImpl::Create, frame_)), | |
| 6454 GetRemoterFactory(), remoting_sink_observer_.get())); | |
| 6455 #else | |
| 6430 cdm_factory_.reset( | 6456 cdm_factory_.reset( |
| 6431 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); | 6457 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); |
| 6458 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) | |
| 6432 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) | 6459 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) |
| 6433 | 6460 |
| 6434 return cdm_factory_.get(); | 6461 return cdm_factory_.get(); |
| 6435 } | 6462 } |
| 6436 | 6463 |
| 6437 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { | 6464 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { |
| 6438 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 6465 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
| 6439 if (!decoder_factory_) { | 6466 if (!decoder_factory_) { |
| 6440 decoder_factory_.reset( | 6467 decoder_factory_.reset( |
| 6441 new media::MojoDecoderFactory(GetMediaInterfaceProvider())); | 6468 new media::MojoDecoderFactory(GetMediaInterfaceProvider())); |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6628 // event target. Potentially a Pepper plugin will receive the event. | 6655 // event target. Potentially a Pepper plugin will receive the event. |
| 6629 // In order to tell whether a plugin gets the last mouse event and which it | 6656 // In order to tell whether a plugin gets the last mouse event and which it |
| 6630 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets | 6657 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets |
| 6631 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 6658 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
| 6632 // |pepper_last_mouse_event_target_|. | 6659 // |pepper_last_mouse_event_target_|. |
| 6633 pepper_last_mouse_event_target_ = nullptr; | 6660 pepper_last_mouse_event_target_ = nullptr; |
| 6634 #endif | 6661 #endif |
| 6635 } | 6662 } |
| 6636 | 6663 |
| 6637 } // namespace content | 6664 } // namespace content |
| OLD | NEW |