| 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 |