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 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 #include "media/base/audio_renderer_mixer_input.h" | 109 #include "media/base/audio_renderer_mixer_input.h" |
110 #include "media/base/media_log.h" | 110 #include "media/base/media_log.h" |
111 #include "media/blink/webencryptedmediaclient_impl.h" | 111 #include "media/blink/webencryptedmediaclient_impl.h" |
112 #include "media/blink/webmediaplayer_impl.h" | 112 #include "media/blink/webmediaplayer_impl.h" |
113 #include "media/blink/webmediaplayer_params.h" | 113 #include "media/blink/webmediaplayer_params.h" |
114 #include "media/renderers/gpu_video_accelerator_factories.h" | 114 #include "media/renderers/gpu_video_accelerator_factories.h" |
115 #include "net/base/data_url.h" | 115 #include "net/base/data_url.h" |
116 #include "net/base/net_errors.h" | 116 #include "net/base/net_errors.h" |
117 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 117 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
118 #include "net/http/http_util.h" | 118 #include "net/http/http_util.h" |
| 119 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" |
119 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" | 120 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" |
120 #include "third_party/WebKit/public/platform/WebString.h" | 121 #include "third_party/WebKit/public/platform/WebString.h" |
121 #include "third_party/WebKit/public/platform/WebURL.h" | 122 #include "third_party/WebKit/public/platform/WebURL.h" |
122 #include "third_party/WebKit/public/platform/WebURLError.h" | 123 #include "third_party/WebKit/public/platform/WebURLError.h" |
123 #include "third_party/WebKit/public/platform/WebURLResponse.h" | 124 #include "third_party/WebKit/public/platform/WebURLResponse.h" |
124 #include "third_party/WebKit/public/platform/WebVector.h" | 125 #include "third_party/WebKit/public/platform/WebVector.h" |
125 #include "third_party/WebKit/public/web/WebColorSuggestion.h" | 126 #include "third_party/WebKit/public/web/WebColorSuggestion.h" |
126 #include "third_party/WebKit/public/web/WebDocument.h" | 127 #include "third_party/WebKit/public/web/WebDocument.h" |
127 #include "third_party/WebKit/public/web/WebFrameWidget.h" | 128 #include "third_party/WebKit/public/web/WebFrameWidget.h" |
128 #include "third_party/WebKit/public/web/WebGlyphCache.h" | 129 #include "third_party/WebKit/public/web/WebGlyphCache.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 #include "mojo/application/public/interfaces/shell.mojom.h" | 185 #include "mojo/application/public/interfaces/shell.mojom.h" |
185 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" | 186 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" |
186 #else | 187 #else |
187 #include "media/renderers/default_renderer_factory.h" | 188 #include "media/renderers/default_renderer_factory.h" |
188 #endif | 189 #endif |
189 | 190 |
190 #if defined(ENABLE_WEBVR) | 191 #if defined(ENABLE_WEBVR) |
191 #include "content/renderer/vr/vr_dispatcher.h" | 192 #include "content/renderer/vr/vr_dispatcher.h" |
192 #endif | 193 #endif |
193 | 194 |
| 195 using blink::WebContentDecryptionModule; |
194 using blink::WebContextMenuData; | 196 using blink::WebContextMenuData; |
195 using blink::WebData; | 197 using blink::WebData; |
196 using blink::WebDataSource; | 198 using blink::WebDataSource; |
197 using blink::WebDocument; | 199 using blink::WebDocument; |
198 using blink::WebDOMEvent; | 200 using blink::WebDOMEvent; |
199 using blink::WebDOMMessageEvent; | 201 using blink::WebDOMMessageEvent; |
200 using blink::WebElement; | 202 using blink::WebElement; |
201 using blink::WebExternalPopupMenu; | 203 using blink::WebExternalPopupMenu; |
202 using blink::WebExternalPopupMenuClient; | 204 using blink::WebExternalPopupMenuClient; |
203 using blink::WebFrame; | 205 using blink::WebFrame; |
204 using blink::WebHistoryItem; | 206 using blink::WebHistoryItem; |
205 using blink::WebHTTPBody; | 207 using blink::WebHTTPBody; |
206 using blink::WebLocalFrame; | 208 using blink::WebLocalFrame; |
207 using blink::WebMediaPlayer; | 209 using blink::WebMediaPlayer; |
208 using blink::WebMediaPlayerClient; | 210 using blink::WebMediaPlayerClient; |
| 211 using blink::WebMediaPlayerEncryptedMediaClient; |
209 using blink::WebNavigationPolicy; | 212 using blink::WebNavigationPolicy; |
210 using blink::WebNavigationType; | 213 using blink::WebNavigationType; |
211 using blink::WebNode; | 214 using blink::WebNode; |
212 using blink::WebPluginParams; | 215 using blink::WebPluginParams; |
213 using blink::WebPopupMenuInfo; | 216 using blink::WebPopupMenuInfo; |
214 using blink::WebRange; | 217 using blink::WebRange; |
215 using blink::WebReferrerPolicy; | 218 using blink::WebReferrerPolicy; |
216 using blink::WebScriptSource; | 219 using blink::WebScriptSource; |
217 using blink::WebSearchableFormData; | 220 using blink::WebSearchableFormData; |
218 using blink::WebSecurityOrigin; | 221 using blink::WebSecurityOrigin; |
(...skipping 1735 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1954 params_to_use.mimeType = WebString::fromUTF8(mime_type); | 1957 params_to_use.mimeType = WebString::fromUTF8(mime_type); |
1955 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); | 1958 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); |
1956 #else | 1959 #else |
1957 return NULL; | 1960 return NULL; |
1958 #endif // defined(ENABLE_PLUGINS) | 1961 #endif // defined(ENABLE_PLUGINS) |
1959 } | 1962 } |
1960 | 1963 |
1961 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( | 1964 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
1962 blink::WebLocalFrame* frame, | 1965 blink::WebLocalFrame* frame, |
1963 const blink::WebURL& url, | 1966 const blink::WebURL& url, |
1964 blink::WebMediaPlayerClient* client, | 1967 WebMediaPlayerClient* client, |
1965 blink::WebContentDecryptionModule* initial_cdm) { | 1968 WebContentDecryptionModule* initial_cdm) { |
| 1969 return createMediaPlayer(frame, url, client, client, initial_cdm); |
| 1970 } |
| 1971 |
| 1972 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
| 1973 blink::WebLocalFrame* frame, |
| 1974 const blink::WebURL& url, |
| 1975 WebMediaPlayerClient* client, |
| 1976 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
| 1977 WebContentDecryptionModule* initial_cdm) { |
1966 #if defined(VIDEO_HOLE) | 1978 #if defined(VIDEO_HOLE) |
1967 if (!contains_media_player_) { | 1979 if (!contains_media_player_) { |
1968 render_view_->RegisterVideoHoleFrame(this); | 1980 render_view_->RegisterVideoHoleFrame(this); |
1969 contains_media_player_ = true; | 1981 contains_media_player_ = true; |
1970 } | 1982 } |
1971 #endif // defined(VIDEO_HOLE) | 1983 #endif // defined(VIDEO_HOLE) |
1972 | 1984 |
1973 blink::WebMediaStream web_stream( | 1985 blink::WebMediaStream web_stream( |
1974 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 1986 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
1975 if (!web_stream.isNull()) | 1987 if (!web_stream.isNull()) |
1976 return CreateWebMediaPlayerForMediaStream(client); | 1988 return CreateWebMediaPlayerForMediaStream(client); |
1977 | 1989 |
1978 #if defined(OS_ANDROID) | 1990 #if defined(OS_ANDROID) |
1979 return CreateAndroidWebMediaPlayer(client, GetMediaPermission(), initial_cdm); | 1991 return CreateAndroidWebMediaPlayer(client, encrypted_client, |
| 1992 GetMediaPermission(), initial_cdm); |
1980 #else | 1993 #else |
1981 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); | 1994 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); |
1982 | 1995 |
1983 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | 1996 RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
1984 media::WebMediaPlayerParams params( | 1997 media::WebMediaPlayerParams params( |
1985 base::Bind(&ContentRendererClient::DeferMediaLoad, | 1998 base::Bind(&ContentRendererClient::DeferMediaLoad, |
1986 base::Unretained(GetContentClient()->renderer()), | 1999 base::Unretained(GetContentClient()->renderer()), |
1987 static_cast<RenderFrame*>(this)), | 2000 static_cast<RenderFrame*>(this)), |
1988 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), | 2001 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), |
1989 media_log, render_thread->GetMediaThreadTaskRunner(), | 2002 media_log, render_thread->GetMediaThreadTaskRunner(), |
(...skipping 10 matching lines...) Expand all Loading... |
2000 this, render_thread->GetGpuFactories(), media_log); | 2013 this, render_thread->GetGpuFactories(), media_log); |
2001 | 2014 |
2002 if (!media_renderer_factory.get()) { | 2015 if (!media_renderer_factory.get()) { |
2003 media_renderer_factory.reset(new media::DefaultRendererFactory( | 2016 media_renderer_factory.reset(new media::DefaultRendererFactory( |
2004 media_log, render_thread->GetGpuFactories(), | 2017 media_log, render_thread->GetGpuFactories(), |
2005 *render_thread->GetAudioHardwareConfig())); | 2018 *render_thread->GetAudioHardwareConfig())); |
2006 } | 2019 } |
2007 #endif // defined(ENABLE_MOJO_MEDIA) | 2020 #endif // defined(ENABLE_MOJO_MEDIA) |
2008 | 2021 |
2009 return new media::WebMediaPlayerImpl( | 2022 return new media::WebMediaPlayerImpl( |
2010 frame, client, weak_factory_.GetWeakPtr(), media_renderer_factory.Pass(), | 2023 frame, client, encrypted_client, weak_factory_.GetWeakPtr(), |
2011 GetCdmFactory(), params); | 2024 media_renderer_factory.Pass(), GetCdmFactory(), params); |
2012 #endif // defined(OS_ANDROID) | 2025 #endif // defined(OS_ANDROID) |
2013 } | 2026 } |
2014 | 2027 |
2015 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( | 2028 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( |
2016 blink::WebLocalFrame* frame, | 2029 blink::WebLocalFrame* frame, |
2017 blink::WebApplicationCacheHostClient* client) { | 2030 blink::WebApplicationCacheHostClient* client) { |
2018 if (!frame || !frame->view()) | 2031 if (!frame || !frame->view()) |
2019 return NULL; | 2032 return NULL; |
2020 DCHECK(!frame_ || frame_ == frame); | 2033 DCHECK(!frame_ || frame_ == frame); |
2021 return new RendererWebApplicationCacheHostImpl( | 2034 return new RendererWebApplicationCacheHostImpl( |
(...skipping 1755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3777 | 3790 |
3778 #if defined(ENABLE_WEBVR) | 3791 #if defined(ENABLE_WEBVR) |
3779 blink::WebVRClient* RenderFrameImpl::webVRClient() { | 3792 blink::WebVRClient* RenderFrameImpl::webVRClient() { |
3780 if (!vr_dispatcher_) | 3793 if (!vr_dispatcher_) |
3781 vr_dispatcher_.reset(new VRDispatcher(GetServiceRegistry())); | 3794 vr_dispatcher_.reset(new VRDispatcher(GetServiceRegistry())); |
3782 | 3795 |
3783 return vr_dispatcher_.get(); | 3796 return vr_dispatcher_.get(); |
3784 } | 3797 } |
3785 #endif | 3798 #endif |
3786 | 3799 |
3787 void RenderFrameImpl::DidPlay(blink::WebMediaPlayer* player) { | 3800 void RenderFrameImpl::DidPlay(WebMediaPlayer* player) { |
3788 Send(new FrameHostMsg_MediaPlayingNotification( | 3801 Send(new FrameHostMsg_MediaPlayingNotification( |
3789 routing_id_, reinterpret_cast<int64>(player), player->hasVideo(), | 3802 routing_id_, reinterpret_cast<int64>(player), player->hasVideo(), |
3790 player->hasAudio(), player->isRemote())); | 3803 player->hasAudio(), player->isRemote())); |
3791 } | 3804 } |
3792 | 3805 |
3793 void RenderFrameImpl::DidPause(blink::WebMediaPlayer* player) { | 3806 void RenderFrameImpl::DidPause(WebMediaPlayer* player) { |
3794 Send(new FrameHostMsg_MediaPausedNotification( | 3807 Send(new FrameHostMsg_MediaPausedNotification( |
3795 routing_id_, reinterpret_cast<int64>(player))); | 3808 routing_id_, reinterpret_cast<int64>(player))); |
3796 } | 3809 } |
3797 | 3810 |
3798 void RenderFrameImpl::PlayerGone(blink::WebMediaPlayer* player) { | 3811 void RenderFrameImpl::PlayerGone(WebMediaPlayer* player) { |
3799 DidPause(player); | 3812 DidPause(player); |
3800 } | 3813 } |
3801 | 3814 |
3802 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { | 3815 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { |
3803 observers_.AddObserver(observer); | 3816 observers_.AddObserver(observer); |
3804 } | 3817 } |
3805 | 3818 |
3806 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { | 3819 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { |
3807 observer->RenderFrameGone(); | 3820 observer->RenderFrameGone(); |
3808 observers_.RemoveObserver(observer); | 3821 observers_.RemoveObserver(observer); |
(...skipping 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4906 pending_navigation_params_->start_params, | 4919 pending_navigation_params_->start_params, |
4907 pending_navigation_params_->request_params); | 4920 pending_navigation_params_->request_params); |
4908 } | 4921 } |
4909 return NavigationStateImpl::CreateContentInitiated(); | 4922 return NavigationStateImpl::CreateContentInitiated(); |
4910 } | 4923 } |
4911 | 4924 |
4912 #if defined(OS_ANDROID) | 4925 #if defined(OS_ANDROID) |
4913 | 4926 |
4914 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( | 4927 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( |
4915 WebMediaPlayerClient* client, | 4928 WebMediaPlayerClient* client, |
| 4929 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
4916 media::MediaPermission* media_permission, | 4930 media::MediaPermission* media_permission, |
4917 blink::WebContentDecryptionModule* initial_cdm) { | 4931 WebContentDecryptionModule* initial_cdm) { |
4918 | |
4919 scoped_refptr<StreamTextureFactory> stream_texture_factory; | 4932 scoped_refptr<StreamTextureFactory> stream_texture_factory; |
4920 if (SynchronousCompositorFactory* factory = | 4933 if (SynchronousCompositorFactory* factory = |
4921 SynchronousCompositorFactory::GetInstance()) { | 4934 SynchronousCompositorFactory::GetInstance()) { |
4922 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); | 4935 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); |
4923 } else { | 4936 } else { |
4924 GpuChannelHost* gpu_channel_host = | 4937 GpuChannelHost* gpu_channel_host = |
4925 RenderThreadImpl::current()->EstablishGpuChannelSync( | 4938 RenderThreadImpl::current()->EstablishGpuChannelSync( |
4926 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); | 4939 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); |
4927 | 4940 |
4928 if (!gpu_channel_host) { | 4941 if (!gpu_channel_host) { |
4929 LOG(ERROR) << "Failed to establish GPU channel for media player"; | 4942 LOG(ERROR) << "Failed to establish GPU channel for media player"; |
4930 return NULL; | 4943 return NULL; |
4931 } | 4944 } |
4932 | 4945 |
4933 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = | 4946 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = |
4934 RenderThreadImpl::current()->SharedMainThreadContextProvider(); | 4947 RenderThreadImpl::current()->SharedMainThreadContextProvider(); |
4935 | 4948 |
4936 if (!context_provider.get()) { | 4949 if (!context_provider.get()) { |
4937 LOG(ERROR) << "Failed to get context3d for media player"; | 4950 LOG(ERROR) << "Failed to get context3d for media player"; |
4938 return NULL; | 4951 return NULL; |
4939 } | 4952 } |
4940 | 4953 |
4941 stream_texture_factory = StreamTextureFactoryImpl::Create( | 4954 stream_texture_factory = StreamTextureFactoryImpl::Create( |
4942 context_provider, gpu_channel_host, routing_id_); | 4955 context_provider, gpu_channel_host, routing_id_); |
4943 } | 4956 } |
4944 | 4957 |
4945 return new WebMediaPlayerAndroid( | 4958 return new WebMediaPlayerAndroid( |
4946 frame_, client, weak_factory_.GetWeakPtr(), GetMediaPlayerManager(), | 4959 frame_, client, encrypted_client, weak_factory_.GetWeakPtr(), |
4947 GetCdmFactory(), media_permission, initial_cdm, stream_texture_factory, | 4960 GetMediaPlayerManager(), GetCdmFactory(), media_permission, initial_cdm, |
| 4961 stream_texture_factory, |
4948 RenderThreadImpl::current()->GetMediaThreadTaskRunner(), | 4962 RenderThreadImpl::current()->GetMediaThreadTaskRunner(), |
4949 new RenderMediaLog()); | 4963 new RenderMediaLog()); |
4950 } | 4964 } |
4951 | 4965 |
4952 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { | 4966 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
4953 if (!media_player_manager_) | 4967 if (!media_player_manager_) |
4954 media_player_manager_ = new RendererMediaPlayerManager(this); | 4968 media_player_manager_ = new RendererMediaPlayerManager(this); |
4955 return media_player_manager_; | 4969 return media_player_manager_; |
4956 } | 4970 } |
4957 | 4971 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5022 void RenderFrameImpl::RegisterMojoServices() { | 5036 void RenderFrameImpl::RegisterMojoServices() { |
5023 // Only main frame have ImageDownloader service. | 5037 // Only main frame have ImageDownloader service. |
5024 if (!frame_->parent()) { | 5038 if (!frame_->parent()) { |
5025 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( | 5039 GetServiceRegistry()->AddService<image_downloader::ImageDownloader>( |
5026 base::Bind(&ImageDownloaderImpl::CreateMojoService, | 5040 base::Bind(&ImageDownloaderImpl::CreateMojoService, |
5027 base::Unretained(this))); | 5041 base::Unretained(this))); |
5028 } | 5042 } |
5029 } | 5043 } |
5030 | 5044 |
5031 } // namespace content | 5045 } // namespace content |
OLD | NEW |