Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 2712983004: Simplify/Cleanup MediaClient (Closed)
Patch Set: Test fix. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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());
jochen (gone - plz use gerrit) 2017/04/06 13:00:05 what happens if the security origin is opaque?
chcunningham 2017/04/06 20:48:34 xhwang - do you know? I took a quick look at the r
xhwang 2017/04/06 21:05:15 jochen: What exactly do you mean by "opaque origin
jochen (gone - plz use gerrit) 2017/04/07 07:05:25 yeah, unique origins are called opaque in the spec
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
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
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
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 2302 matching lines...) Expand 10 before | Expand all | Expand 10 after
6972 policy(info.defaultPolicy), 6979 policy(info.defaultPolicy),
6973 replaces_current_history_item(info.replacesCurrentHistoryItem), 6980 replaces_current_history_item(info.replacesCurrentHistoryItem),
6974 history_navigation_in_new_child_frame( 6981 history_navigation_in_new_child_frame(
6975 info.isHistoryNavigationInNewChildFrame), 6982 info.isHistoryNavigationInNewChildFrame),
6976 client_redirect(info.isClientRedirect), 6983 client_redirect(info.isClientRedirect),
6977 cache_disabled(info.isCacheDisabled), 6984 cache_disabled(info.isCacheDisabled),
6978 form(info.form), 6985 form(info.form),
6979 source_location(info.sourceLocation) {} 6986 source_location(info.sourceLocation) {}
6980 6987
6981 } // namespace content 6988 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698