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 2790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2801 return NULL; | 2801 return NULL; |
| 2802 | 2802 |
| 2803 WebPluginParams params_to_use = params; | 2803 WebPluginParams params_to_use = params; |
| 2804 params_to_use.mime_type = WebString::FromUTF8(mime_type); | 2804 params_to_use.mime_type = WebString::FromUTF8(mime_type); |
| 2805 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); | 2805 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); |
| 2806 #else | 2806 #else |
| 2807 return NULL; | 2807 return NULL; |
| 2808 #endif // BUILDFLAG(ENABLE_PLUGINS) | 2808 #endif // BUILDFLAG(ENABLE_PLUGINS) |
| 2809 } | 2809 } |
| 2810 | 2810 |
| 2811 const scoped_refptr<RenderMediaLog>& RenderFrameImpl::GetMediaLog() { | |
| 2812 if (!media_log_.get()) { | |
| 2813 media_log_ = | |
| 2814 new RenderMediaLog(url::Origin(frame_->GetSecurityOrigin()).GetURL()); | |
| 2815 } | |
| 2816 | |
| 2817 return media_log_; | |
| 2818 } | |
| 2819 | |
| 2820 blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( | 2811 blink::WebMediaPlayer* RenderFrameImpl::CreateMediaPlayer( |
| 2821 const blink::WebMediaPlayerSource& source, | 2812 const blink::WebMediaPlayerSource& source, |
| 2822 WebMediaPlayerClient* client, | 2813 WebMediaPlayerClient* client, |
| 2823 WebMediaPlayerEncryptedMediaClient* encrypted_client, | 2814 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
| 2824 WebContentDecryptionModule* initial_cdm, | 2815 WebContentDecryptionModule* initial_cdm, |
| 2825 const blink::WebString& sink_id) { | 2816 const blink::WebString& sink_id) { |
| 2826 blink::WebMediaStream web_stream = | 2817 blink::WebMediaStream web_stream = |
| 2827 GetWebMediaStreamFromWebMediaPlayerSource(source); | 2818 GetWebMediaStreamFromWebMediaPlayerSource(source); |
| 2828 if (!web_stream.IsNull()) | 2819 if (!web_stream.IsNull()) |
| 2829 return CreateWebMediaPlayerForMediaStream(client, sink_id, | 2820 return CreateWebMediaPlayerForMediaStream(client, sink_id, |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 2845 sink_id.Utf8(), frame_->GetSecurityOrigin()); | 2836 sink_id.Utf8(), frame_->GetSecurityOrigin()); |
| 2846 // We need to keep a reference to the context provider (see crbug.com/610527) | 2837 // We need to keep a reference to the context provider (see crbug.com/610527) |
| 2847 // but media/ can't depend on cc/, so for now, just keep a reference in the | 2838 // but media/ can't depend on cc/, so for now, just keep a reference in the |
| 2848 // callback. | 2839 // callback. |
| 2849 // TODO(piman): replace media::Context3D to scoped_refptr<ContextProvider> in | 2840 // TODO(piman): replace media::Context3D to scoped_refptr<ContextProvider> in |
| 2850 // media/ once ContextProvider is in gpu/. | 2841 // media/ once ContextProvider is in gpu/. |
| 2851 media::WebMediaPlayerParams::Context3DCB context_3d_cb = base::Bind( | 2842 media::WebMediaPlayerParams::Context3DCB context_3d_cb = base::Bind( |
| 2852 &GetSharedMainThreadContext3D, | 2843 &GetSharedMainThreadContext3D, |
| 2853 RenderThreadImpl::current()->SharedMainThreadContextProvider()); | 2844 RenderThreadImpl::current()->SharedMainThreadContextProvider()); |
| 2854 | 2845 |
| 2846 // This must be created for every new WebMediaPlayer, each instance generates | |
| 2847 // a new player id which is used to collate logs on the browser side. | |
|
xhwang
2017/04/14 22:56:42
Add a TODO to pass std::unique<MediaLog> here so t
| |
| 2848 scoped_refptr<media::MediaLog> media_log( | |
| 2849 new RenderMediaLog(url::Origin(frame_->GetSecurityOrigin()).GetURL())); | |
| 2850 | |
| 2855 bool embedded_media_experience_enabled = false; | 2851 bool embedded_media_experience_enabled = false; |
| 2856 #if defined(OS_ANDROID) | 2852 #if defined(OS_ANDROID) |
| 2857 if (!UseMediaPlayerRenderer(url) && !media_surface_manager_) | 2853 if (!UseMediaPlayerRenderer(url) && !media_surface_manager_) |
| 2858 media_surface_manager_ = new RendererSurfaceViewManager(this); | 2854 media_surface_manager_ = new RendererSurfaceViewManager(this); |
| 2859 embedded_media_experience_enabled = | 2855 embedded_media_experience_enabled = |
| 2860 GetWebkitPreferences().embedded_media_experience_enabled; | 2856 GetWebkitPreferences().embedded_media_experience_enabled; |
| 2861 #endif // defined(OS_ANDROID) | 2857 #endif // defined(OS_ANDROID) |
| 2862 | 2858 |
| 2863 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2859 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| 2864 media::mojom::RemotingSourcePtr remoting_source; | 2860 media::mojom::RemotingSourcePtr remoting_source; |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 2884 base::TimeDelta::FromMilliseconds(base::GetFieldTrialParamByFeatureAsInt( | 2880 base::TimeDelta::FromMilliseconds(base::GetFieldTrialParamByFeatureAsInt( |
| 2885 media::kBackgroundVideoTrackOptimization, | 2881 media::kBackgroundVideoTrackOptimization, |
| 2886 "max_keyframe_distance_media_source_ms", | 2882 "max_keyframe_distance_media_source_ms", |
| 2887 base::TimeDelta::FromSeconds(10).InMilliseconds())); | 2883 base::TimeDelta::FromSeconds(10).InMilliseconds())); |
| 2888 | 2884 |
| 2889 media::WebMediaPlayerParams params( | 2885 media::WebMediaPlayerParams params( |
| 2890 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2886 base::Bind(&ContentRendererClient::DeferMediaLoad, |
| 2891 base::Unretained(GetContentClient()->renderer()), | 2887 base::Unretained(GetContentClient()->renderer()), |
| 2892 static_cast<RenderFrame*>(this), | 2888 static_cast<RenderFrame*>(this), |
| 2893 GetWebMediaPlayerDelegate()->has_played_media()), | 2889 GetWebMediaPlayerDelegate()->has_played_media()), |
| 2894 audio_renderer_sink, GetMediaLog(), | 2890 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), |
| 2895 render_thread->GetMediaThreadTaskRunner(), | |
| 2896 render_thread->GetWorkerTaskRunner(), | 2891 render_thread->GetWorkerTaskRunner(), |
| 2897 render_thread->compositor_task_runner(), context_3d_cb, | 2892 render_thread->compositor_task_runner(), context_3d_cb, |
| 2898 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, | 2893 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, |
| 2899 base::Unretained(blink::MainThreadIsolate())), | 2894 base::Unretained(blink::MainThreadIsolate())), |
| 2900 initial_cdm, media_surface_manager_, media_observer, | 2895 initial_cdm, media_surface_manager_, media_observer, |
| 2901 max_keyframe_distance_to_disable_background_video, | 2896 max_keyframe_distance_to_disable_background_video, |
| 2902 max_keyframe_distance_to_disable_background_video_mse, | 2897 max_keyframe_distance_to_disable_background_video_mse, |
| 2903 GetWebkitPreferences().enable_instant_source_buffer_gc, | 2898 GetWebkitPreferences().enable_instant_source_buffer_gc, |
| 2904 GetContentClient()->renderer()->AllowMediaSuspend(), | 2899 GetContentClient()->renderer()->AllowMediaSuspend(), |
| 2905 embedded_media_experience_enabled); | 2900 embedded_media_experience_enabled); |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 2923 render_thread->EnableStreamTextureCopy(), | 2918 render_thread->EnableStreamTextureCopy(), |
| 2924 render_thread->GetStreamTexureFactory(), | 2919 render_thread->GetStreamTexureFactory(), |
| 2925 base::ThreadTaskRunnerHandle::Get())); | 2920 base::ThreadTaskRunnerHandle::Get())); |
| 2926 #endif // defined(OS_ANDROID) | 2921 #endif // defined(OS_ANDROID) |
| 2927 } else { | 2922 } else { |
| 2928 #if defined(ENABLE_MOJO_RENDERER) | 2923 #if defined(ENABLE_MOJO_RENDERER) |
| 2929 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2924 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
| 2930 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 2925 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 2931 switches::kDisableMojoRenderer)) { | 2926 switches::kDisableMojoRenderer)) { |
| 2932 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2927 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
| 2933 GetMediaLog(), GetDecoderFactory(), | 2928 media_log, GetDecoderFactory(), |
| 2934 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2929 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2935 base::Unretained(render_thread))); | 2930 base::Unretained(render_thread))); |
| 2936 } | 2931 } |
| 2937 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2932 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
| 2938 if (!media_renderer_factory) { | 2933 if (!media_renderer_factory) { |
| 2939 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | 2934 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
| 2940 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2935 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2941 base::Unretained(render_thread)), | 2936 base::Unretained(render_thread)), |
| 2942 GetMediaInterfaceProvider()); | 2937 GetMediaInterfaceProvider()); |
| 2943 } | 2938 } |
| 2944 #else | 2939 #else |
| 2945 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2940 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
| 2946 GetMediaLog(), GetDecoderFactory(), | 2941 media_log, GetDecoderFactory(), |
| 2947 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2942 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2948 base::Unretained(render_thread))); | 2943 base::Unretained(render_thread))); |
| 2949 #endif // defined(ENABLE_MOJO_RENDERER) | 2944 #endif // defined(ENABLE_MOJO_RENDERER) |
| 2950 } | 2945 } |
| 2951 | 2946 |
| 2952 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2947 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| 2953 auto* const remoting_controller_ptr = remoting_controller.get(); | 2948 auto* const remoting_controller_ptr = remoting_controller.get(); |
| 2954 media_renderer_factory = | 2949 media_renderer_factory = |
| 2955 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( | 2950 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( |
| 2956 std::move(media_renderer_factory), std::move(remoting_controller)); | 2951 std::move(media_renderer_factory), std::move(remoting_controller)); |
| (...skipping 1710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4667 } | 4662 } |
| 4668 | 4663 |
| 4669 blink::WebEncryptedMediaClient* RenderFrameImpl::EncryptedMediaClient() { | 4664 blink::WebEncryptedMediaClient* RenderFrameImpl::EncryptedMediaClient() { |
| 4670 if (!web_encrypted_media_client_) { | 4665 if (!web_encrypted_media_client_) { |
| 4671 web_encrypted_media_client_.reset(new media::WebEncryptedMediaClientImpl( | 4666 web_encrypted_media_client_.reset(new media::WebEncryptedMediaClientImpl( |
| 4672 // base::Unretained(this) is safe because WebEncryptedMediaClientImpl | 4667 // base::Unretained(this) is safe because WebEncryptedMediaClientImpl |
| 4673 // is destructed before |this|, and does not give away ownership of the | 4668 // is destructed before |this|, and does not give away ownership of the |
| 4674 // callback. | 4669 // callback. |
| 4675 base::Bind(&RenderFrameImpl::AreSecureCodecsSupported, | 4670 base::Bind(&RenderFrameImpl::AreSecureCodecsSupported, |
| 4676 base::Unretained(this)), | 4671 base::Unretained(this)), |
| 4677 GetCdmFactory(), GetMediaPermission(), GetMediaLog())); | 4672 GetCdmFactory(), GetMediaPermission(), |
| 4673 new RenderMediaLog(url::Origin(frame_->GetSecurityOrigin()).GetURL()))); | |
| 4678 } | 4674 } |
| 4679 return web_encrypted_media_client_.get(); | 4675 return web_encrypted_media_client_.get(); |
| 4680 } | 4676 } |
| 4681 | 4677 |
| 4682 blink::WebString RenderFrameImpl::UserAgentOverride() { | 4678 blink::WebString RenderFrameImpl::UserAgentOverride() { |
| 4683 if (!render_view_->webview() || !render_view_->webview()->MainFrame() || | 4679 if (!render_view_->webview() || !render_view_->webview()->MainFrame() || |
| 4684 render_view_->renderer_preferences_.user_agent_override.empty()) { | 4680 render_view_->renderer_preferences_.user_agent_override.empty()) { |
| 4685 return blink::WebString(); | 4681 return blink::WebString(); |
| 4686 } | 4682 } |
| 4687 | 4683 |
| (...skipping 2305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6993 policy(info.default_policy), | 6989 policy(info.default_policy), |
| 6994 replaces_current_history_item(info.replaces_current_history_item), | 6990 replaces_current_history_item(info.replaces_current_history_item), |
| 6995 history_navigation_in_new_child_frame( | 6991 history_navigation_in_new_child_frame( |
| 6996 info.is_history_navigation_in_new_child_frame), | 6992 info.is_history_navigation_in_new_child_frame), |
| 6997 client_redirect(info.is_client_redirect), | 6993 client_redirect(info.is_client_redirect), |
| 6998 cache_disabled(info.is_cache_disabled), | 6994 cache_disabled(info.is_cache_disabled), |
| 6999 form(info.form), | 6995 form(info.form), |
| 7000 source_location(info.source_location) {} | 6996 source_location(info.source_location) {} |
| 7001 | 6997 |
| 7002 } // namespace content | 6998 } // namespace content |
| OLD | NEW |