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