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 2780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2791 return NULL; | 2791 return NULL; |
2792 | 2792 |
2793 WebPluginParams params_to_use = params; | 2793 WebPluginParams params_to_use = params; |
2794 params_to_use.mimeType = WebString::fromUTF8(mime_type); | 2794 params_to_use.mimeType = WebString::fromUTF8(mime_type); |
2795 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); | 2795 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); |
2796 #else | 2796 #else |
2797 return NULL; | 2797 return NULL; |
2798 #endif // BUILDFLAG(ENABLE_PLUGINS) | 2798 #endif // BUILDFLAG(ENABLE_PLUGINS) |
2799 } | 2799 } |
2800 | 2800 |
| 2801 const scoped_refptr<RenderMediaLog>& RenderFrameImpl::GetMediaLog() { |
| 2802 if (!media_log_.get()) { |
| 2803 media_log_ = |
| 2804 new RenderMediaLog(url::Origin(frame_->getSecurityOrigin()).GetURL()); |
| 2805 } |
| 2806 |
| 2807 return media_log_; |
| 2808 } |
| 2809 |
2801 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( | 2810 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
2802 const blink::WebMediaPlayerSource& source, | 2811 const blink::WebMediaPlayerSource& source, |
2803 WebMediaPlayerClient* client, | 2812 WebMediaPlayerClient* client, |
2804 WebMediaPlayerEncryptedMediaClient* encrypted_client, | 2813 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
2805 WebContentDecryptionModule* initial_cdm, | 2814 WebContentDecryptionModule* initial_cdm, |
2806 const blink::WebString& sink_id) { | 2815 const blink::WebString& sink_id) { |
2807 blink::WebMediaStream web_stream = | 2816 blink::WebMediaStream web_stream = |
2808 GetWebMediaStreamFromWebMediaPlayerSource(source); | 2817 GetWebMediaStreamFromWebMediaPlayerSource(source); |
2809 if (!web_stream.isNull()) | 2818 if (!web_stream.isNull()) |
2810 return CreateWebMediaPlayerForMediaStream(client, sink_id, | 2819 return CreateWebMediaPlayerForMediaStream(client, sink_id, |
(...skipping 15 matching lines...) Expand all Loading... |
2826 sink_id.utf8(), frame_->getSecurityOrigin()); | 2835 sink_id.utf8(), frame_->getSecurityOrigin()); |
2827 // We need to keep a reference to the context provider (see crbug.com/610527) | 2836 // We need to keep a reference to the context provider (see crbug.com/610527) |
2828 // but media/ can't depend on cc/, so for now, just keep a reference in the | 2837 // but media/ can't depend on cc/, so for now, just keep a reference in the |
2829 // callback. | 2838 // callback. |
2830 // TODO(piman): replace media::Context3D to scoped_refptr<ContextProvider> in | 2839 // TODO(piman): replace media::Context3D to scoped_refptr<ContextProvider> in |
2831 // media/ once ContextProvider is in gpu/. | 2840 // media/ once ContextProvider is in gpu/. |
2832 media::WebMediaPlayerParams::Context3DCB context_3d_cb = base::Bind( | 2841 media::WebMediaPlayerParams::Context3DCB context_3d_cb = base::Bind( |
2833 &GetSharedMainThreadContext3D, | 2842 &GetSharedMainThreadContext3D, |
2834 RenderThreadImpl::current()->SharedMainThreadContextProvider()); | 2843 RenderThreadImpl::current()->SharedMainThreadContextProvider()); |
2835 | 2844 |
2836 scoped_refptr<media::MediaLog> media_log( | |
2837 new RenderMediaLog(url::Origin(frame_->getSecurityOrigin()).GetURL())); | |
2838 | |
2839 bool embedded_media_experience_enabled = false; | 2845 bool embedded_media_experience_enabled = false; |
2840 #if defined(OS_ANDROID) | 2846 #if defined(OS_ANDROID) |
2841 if (!UseMediaPlayerRenderer(url) && !media_surface_manager_) | 2847 if (!UseMediaPlayerRenderer(url) && !media_surface_manager_) |
2842 media_surface_manager_ = new RendererSurfaceViewManager(this); | 2848 media_surface_manager_ = new RendererSurfaceViewManager(this); |
2843 embedded_media_experience_enabled = | 2849 embedded_media_experience_enabled = |
2844 GetWebkitPreferences().embedded_media_experience_enabled; | 2850 GetWebkitPreferences().embedded_media_experience_enabled; |
2845 #endif // defined(OS_ANDROID) | 2851 #endif // defined(OS_ANDROID) |
2846 | 2852 |
2847 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2853 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2848 media::mojom::RemotingSourcePtr remoting_source; | 2854 media::mojom::RemotingSourcePtr remoting_source; |
2849 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); | 2855 media::mojom::RemotingSourceRequest remoting_source_request(&remoting_source); |
2850 media::mojom::RemoterPtr remoter; | 2856 media::mojom::RemoterPtr remoter; |
2851 GetRemoterFactory()->Create(std::move(remoting_source), | 2857 GetRemoterFactory()->Create(std::move(remoting_source), |
2852 mojo::MakeRequest(&remoter)); | 2858 mojo::MakeRequest(&remoter)); |
2853 using RemotingController = media::remoting::RendererController; | 2859 using RemotingController = media::remoting::RendererController; |
2854 std::unique_ptr<RemotingController> remoting_controller( | 2860 std::unique_ptr<RemotingController> remoting_controller( |
2855 new RemotingController(new media::remoting::SharedSession( | 2861 new RemotingController(new media::remoting::SharedSession( |
2856 std::move(remoting_source_request), std::move(remoter)))); | 2862 std::move(remoting_source_request), std::move(remoter)))); |
2857 base::WeakPtr<media::MediaObserver> media_observer = | 2863 base::WeakPtr<media::MediaObserver> media_observer = |
2858 remoting_controller->GetWeakPtr(); | 2864 remoting_controller->GetWeakPtr(); |
2859 #else | 2865 #else |
2860 base::WeakPtr<media::MediaObserver> media_observer = nullptr; | 2866 base::WeakPtr<media::MediaObserver> media_observer = nullptr; |
2861 #endif | 2867 #endif |
2862 | 2868 |
2863 media::WebMediaPlayerParams params( | 2869 media::WebMediaPlayerParams params( |
2864 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2870 base::Bind(&ContentRendererClient::DeferMediaLoad, |
2865 base::Unretained(GetContentClient()->renderer()), | 2871 base::Unretained(GetContentClient()->renderer()), |
2866 static_cast<RenderFrame*>(this), | 2872 static_cast<RenderFrame*>(this), |
2867 GetWebMediaPlayerDelegate()->has_played_media()), | 2873 GetWebMediaPlayerDelegate()->has_played_media()), |
2868 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), | 2874 audio_renderer_sink, GetMediaLog(), |
| 2875 render_thread->GetMediaThreadTaskRunner(), |
2869 render_thread->GetWorkerTaskRunner(), | 2876 render_thread->GetWorkerTaskRunner(), |
2870 render_thread->compositor_task_runner(), context_3d_cb, | 2877 render_thread->compositor_task_runner(), context_3d_cb, |
2871 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, | 2878 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, |
2872 base::Unretained(blink::mainThreadIsolate())), | 2879 base::Unretained(blink::mainThreadIsolate())), |
2873 initial_cdm, media_surface_manager_, media_observer, | 2880 initial_cdm, media_surface_manager_, media_observer, |
2874 // TODO(avayvod, asvitkine): Query the value directly when it is available | 2881 // TODO(avayvod, asvitkine): Query the value directly when it is available |
2875 // in the renderer process. See https://crbug.com/681160. | 2882 // in the renderer process. See https://crbug.com/681160. |
2876 GetWebkitPreferences().max_keyframe_distance_to_disable_background_video, | 2883 GetWebkitPreferences().max_keyframe_distance_to_disable_background_video, |
2877 GetWebkitPreferences().enable_instant_source_buffer_gc, | 2884 GetWebkitPreferences().enable_instant_source_buffer_gc, |
2878 GetContentClient()->renderer()->AllowMediaSuspend(), | 2885 GetContentClient()->renderer()->AllowMediaSuspend(), |
(...skipping 18 matching lines...) Expand all Loading... |
2897 render_thread->EnableStreamTextureCopy(), | 2904 render_thread->EnableStreamTextureCopy(), |
2898 render_thread->GetStreamTexureFactory(), | 2905 render_thread->GetStreamTexureFactory(), |
2899 base::ThreadTaskRunnerHandle::Get())); | 2906 base::ThreadTaskRunnerHandle::Get())); |
2900 #endif // defined(OS_ANDROID) | 2907 #endif // defined(OS_ANDROID) |
2901 } else { | 2908 } else { |
2902 #if defined(ENABLE_MOJO_RENDERER) | 2909 #if defined(ENABLE_MOJO_RENDERER) |
2903 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2910 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
2904 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 2911 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
2905 switches::kDisableMojoRenderer)) { | 2912 switches::kDisableMojoRenderer)) { |
2906 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2913 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2907 media_log, GetDecoderFactory(), | 2914 GetMediaLog(), GetDecoderFactory(), |
2908 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2915 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2909 base::Unretained(render_thread))); | 2916 base::Unretained(render_thread))); |
2910 } | 2917 } |
2911 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2918 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
2912 if (!media_renderer_factory) { | 2919 if (!media_renderer_factory) { |
2913 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | 2920 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
2914 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2921 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2915 base::Unretained(render_thread)), | 2922 base::Unretained(render_thread)), |
2916 GetMediaInterfaceProvider()); | 2923 GetMediaInterfaceProvider()); |
2917 } | 2924 } |
2918 #else | 2925 #else |
2919 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2926 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2920 media_log, GetDecoderFactory(), | 2927 GetMediaLog(), GetDecoderFactory(), |
2921 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2928 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2922 base::Unretained(render_thread))); | 2929 base::Unretained(render_thread))); |
2923 #endif // defined(ENABLE_MOJO_RENDERER) | 2930 #endif // defined(ENABLE_MOJO_RENDERER) |
2924 } | 2931 } |
2925 | 2932 |
2926 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2933 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2927 auto* const remoting_controller_ptr = remoting_controller.get(); | 2934 auto* const remoting_controller_ptr = remoting_controller.get(); |
2928 media_renderer_factory = | 2935 media_renderer_factory = |
2929 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( | 2936 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( |
2930 std::move(media_renderer_factory), std::move(remoting_controller)); | 2937 std::move(media_renderer_factory), std::move(remoting_controller)); |
(...skipping 1718 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4649 } | 4656 } |
4650 | 4657 |
4651 blink::WebEncryptedMediaClient* RenderFrameImpl::encryptedMediaClient() { | 4658 blink::WebEncryptedMediaClient* RenderFrameImpl::encryptedMediaClient() { |
4652 if (!web_encrypted_media_client_) { | 4659 if (!web_encrypted_media_client_) { |
4653 web_encrypted_media_client_.reset(new media::WebEncryptedMediaClientImpl( | 4660 web_encrypted_media_client_.reset(new media::WebEncryptedMediaClientImpl( |
4654 // base::Unretained(this) is safe because WebEncryptedMediaClientImpl | 4661 // base::Unretained(this) is safe because WebEncryptedMediaClientImpl |
4655 // is destructed before |this|, and does not give away ownership of the | 4662 // is destructed before |this|, and does not give away ownership of the |
4656 // callback. | 4663 // callback. |
4657 base::Bind(&RenderFrameImpl::AreSecureCodecsSupported, | 4664 base::Bind(&RenderFrameImpl::AreSecureCodecsSupported, |
4658 base::Unretained(this)), | 4665 base::Unretained(this)), |
4659 GetCdmFactory(), GetMediaPermission())); | 4666 GetCdmFactory(), GetMediaPermission(), GetMediaLog())); |
4660 } | 4667 } |
4661 return web_encrypted_media_client_.get(); | 4668 return web_encrypted_media_client_.get(); |
4662 } | 4669 } |
4663 | 4670 |
4664 blink::WebString RenderFrameImpl::userAgentOverride() { | 4671 blink::WebString RenderFrameImpl::userAgentOverride() { |
4665 if (!render_view_->webview() || !render_view_->webview()->mainFrame() || | 4672 if (!render_view_->webview() || !render_view_->webview()->mainFrame() || |
4666 render_view_->renderer_preferences_.user_agent_override.empty()) { | 4673 render_view_->renderer_preferences_.user_agent_override.empty()) { |
4667 return blink::WebString(); | 4674 return blink::WebString(); |
4668 } | 4675 } |
4669 | 4676 |
(...skipping 2301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6971 policy(info.defaultPolicy), | 6978 policy(info.defaultPolicy), |
6972 replaces_current_history_item(info.replacesCurrentHistoryItem), | 6979 replaces_current_history_item(info.replacesCurrentHistoryItem), |
6973 history_navigation_in_new_child_frame( | 6980 history_navigation_in_new_child_frame( |
6974 info.isHistoryNavigationInNewChildFrame), | 6981 info.isHistoryNavigationInNewChildFrame), |
6975 client_redirect(info.isClientRedirect), | 6982 client_redirect(info.isClientRedirect), |
6976 cache_disabled(info.isCacheDisabled), | 6983 cache_disabled(info.isCacheDisabled), |
6977 form(info.form), | 6984 form(info.form), |
6978 source_location(info.sourceLocation) {} | 6985 source_location(info.sourceLocation) {} |
6979 | 6986 |
6980 } // namespace content | 6987 } // namespace content |
OLD | NEW |