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 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 #include "mojo/application/public/interfaces/shell.mojom.h" | 184 #include "mojo/application/public/interfaces/shell.mojom.h" |
185 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" | 185 #include "third_party/mojo/src/mojo/public/cpp/bindings/interface_request.h" |
186 #else | 186 #else |
187 #include "media/renderers/default_renderer_factory.h" | 187 #include "media/renderers/default_renderer_factory.h" |
188 #endif | 188 #endif |
189 | 189 |
190 #if defined(ENABLE_WEBVR) | 190 #if defined(ENABLE_WEBVR) |
191 #include "content/renderer/vr/vr_dispatcher.h" | 191 #include "content/renderer/vr/vr_dispatcher.h" |
192 #endif | 192 #endif |
193 | 193 |
| 194 using blink::WebContentDecryptionModule; |
194 using blink::WebContextMenuData; | 195 using blink::WebContextMenuData; |
195 using blink::WebData; | 196 using blink::WebData; |
196 using blink::WebDataSource; | 197 using blink::WebDataSource; |
197 using blink::WebDocument; | 198 using blink::WebDocument; |
198 using blink::WebDOMEvent; | 199 using blink::WebDOMEvent; |
199 using blink::WebDOMMessageEvent; | 200 using blink::WebDOMMessageEvent; |
200 using blink::WebElement; | 201 using blink::WebElement; |
201 using blink::WebExternalPopupMenu; | 202 using blink::WebExternalPopupMenu; |
202 using blink::WebExternalPopupMenuClient; | 203 using blink::WebExternalPopupMenuClient; |
203 using blink::WebFrame; | 204 using blink::WebFrame; |
204 using blink::WebHistoryItem; | 205 using blink::WebHistoryItem; |
205 using blink::WebHTTPBody; | 206 using blink::WebHTTPBody; |
206 using blink::WebLocalFrame; | 207 using blink::WebLocalFrame; |
207 using blink::WebMediaPlayer; | 208 using blink::WebMediaPlayer; |
208 using blink::WebMediaPlayerClient; | 209 using blink::WebMediaPlayerClient; |
| 210 using blink::WebMediaPlayerEncryptedMediaClient; |
209 using blink::WebNavigationPolicy; | 211 using blink::WebNavigationPolicy; |
210 using blink::WebNavigationType; | 212 using blink::WebNavigationType; |
211 using blink::WebNode; | 213 using blink::WebNode; |
212 using blink::WebPluginParams; | 214 using blink::WebPluginParams; |
213 using blink::WebPopupMenuInfo; | 215 using blink::WebPopupMenuInfo; |
214 using blink::WebRange; | 216 using blink::WebRange; |
215 using blink::WebReferrerPolicy; | 217 using blink::WebReferrerPolicy; |
216 using blink::WebScriptSource; | 218 using blink::WebScriptSource; |
217 using blink::WebSearchableFormData; | 219 using blink::WebSearchableFormData; |
218 using blink::WebSecurityOrigin; | 220 using blink::WebSecurityOrigin; |
(...skipping 1716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1935 return NULL; | 1937 return NULL; |
1936 | 1938 |
1937 WebPluginParams params_to_use = params; | 1939 WebPluginParams params_to_use = params; |
1938 params_to_use.mimeType = WebString::fromUTF8(mime_type); | 1940 params_to_use.mimeType = WebString::fromUTF8(mime_type); |
1939 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); | 1941 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); |
1940 #else | 1942 #else |
1941 return NULL; | 1943 return NULL; |
1942 #endif // defined(ENABLE_PLUGINS) | 1944 #endif // defined(ENABLE_PLUGINS) |
1943 } | 1945 } |
1944 | 1946 |
1945 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( | 1947 WebMediaPlayer* RenderFrameImpl::createMediaPlayer( |
1946 blink::WebLocalFrame* frame, | 1948 blink::WebLocalFrame* frame, |
1947 const blink::WebURL& url, | 1949 const blink::WebURL& url, |
1948 blink::WebMediaPlayerClient* client, | 1950 WebMediaPlayerClient* client, |
1949 blink::WebContentDecryptionModule* initial_cdm) { | 1951 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
| 1952 WebContentDecryptionModule* initial_cdm) { |
1950 #if defined(VIDEO_HOLE) | 1953 #if defined(VIDEO_HOLE) |
1951 if (!contains_media_player_) { | 1954 if (!contains_media_player_) { |
1952 render_view_->RegisterVideoHoleFrame(this); | 1955 render_view_->RegisterVideoHoleFrame(this); |
1953 contains_media_player_ = true; | 1956 contains_media_player_ = true; |
1954 } | 1957 } |
1955 #endif // defined(VIDEO_HOLE) | 1958 #endif // defined(VIDEO_HOLE) |
1956 | 1959 |
1957 blink::WebMediaStream web_stream( | 1960 blink::WebMediaStream web_stream( |
1958 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 1961 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
1959 if (!web_stream.isNull()) | 1962 if (!web_stream.isNull()) |
1960 return CreateWebMediaPlayerForMediaStream(client); | 1963 return CreateWebMediaPlayerForMediaStream(client); |
1961 | 1964 |
1962 #if defined(OS_ANDROID) | 1965 #if defined(OS_ANDROID) |
1963 return CreateAndroidWebMediaPlayer(client, GetMediaPermission(), initial_cdm); | 1966 return CreateAndroidWebMediaPlayer(client, encrypted_client, |
| 1967 GetMediaPermission(), initial_cdm); |
1964 #else | 1968 #else |
1965 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); | 1969 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); |
1966 | 1970 |
1967 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | 1971 RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
1968 media::WebMediaPlayerParams params( | 1972 media::WebMediaPlayerParams params( |
1969 base::Bind(&ContentRendererClient::DeferMediaLoad, | 1973 base::Bind(&ContentRendererClient::DeferMediaLoad, |
1970 base::Unretained(GetContentClient()->renderer()), | 1974 base::Unretained(GetContentClient()->renderer()), |
1971 static_cast<RenderFrame*>(this)), | 1975 static_cast<RenderFrame*>(this)), |
1972 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), | 1976 render_thread->GetAudioRendererMixerManager()->CreateInput(routing_id_), |
1973 media_log, render_thread->GetMediaThreadTaskRunner(), | 1977 media_log, render_thread->GetMediaThreadTaskRunner(), |
(...skipping 10 matching lines...) Expand all Loading... |
1984 media_log); | 1988 media_log); |
1985 | 1989 |
1986 if (!media_renderer_factory.get()) { | 1990 if (!media_renderer_factory.get()) { |
1987 media_renderer_factory.reset(new media::DefaultRendererFactory( | 1991 media_renderer_factory.reset(new media::DefaultRendererFactory( |
1988 media_log, render_thread->GetGpuFactories(), | 1992 media_log, render_thread->GetGpuFactories(), |
1989 *render_thread->GetAudioHardwareConfig())); | 1993 *render_thread->GetAudioHardwareConfig())); |
1990 } | 1994 } |
1991 #endif // defined(ENABLE_MEDIA_MOJO_RENDERER) | 1995 #endif // defined(ENABLE_MEDIA_MOJO_RENDERER) |
1992 | 1996 |
1993 return new media::WebMediaPlayerImpl( | 1997 return new media::WebMediaPlayerImpl( |
1994 frame, client, weak_factory_.GetWeakPtr(), media_renderer_factory.Pass(), | 1998 frame, client, encrypted_client, weak_factory_.GetWeakPtr(), |
1995 GetCdmFactory(), params); | 1999 media_renderer_factory.Pass(), GetCdmFactory(), params); |
1996 #endif // defined(OS_ANDROID) | 2000 #endif // defined(OS_ANDROID) |
1997 } | 2001 } |
1998 | 2002 |
1999 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( | 2003 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( |
2000 blink::WebLocalFrame* frame, | 2004 blink::WebLocalFrame* frame, |
2001 blink::WebApplicationCacheHostClient* client) { | 2005 blink::WebApplicationCacheHostClient* client) { |
2002 if (!frame || !frame->view()) | 2006 if (!frame || !frame->view()) |
2003 return NULL; | 2007 return NULL; |
2004 DCHECK(!frame_ || frame_ == frame); | 2008 DCHECK(!frame_ || frame_ == frame); |
2005 return new RendererWebApplicationCacheHostImpl( | 2009 return new RendererWebApplicationCacheHostImpl( |
(...skipping 1736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3742 | 3746 |
3743 #if defined(ENABLE_WEBVR) | 3747 #if defined(ENABLE_WEBVR) |
3744 blink::WebVRClient* RenderFrameImpl::webVRClient() { | 3748 blink::WebVRClient* RenderFrameImpl::webVRClient() { |
3745 if (!vr_dispatcher_) | 3749 if (!vr_dispatcher_) |
3746 vr_dispatcher_.reset(new VRDispatcher(GetServiceRegistry())); | 3750 vr_dispatcher_.reset(new VRDispatcher(GetServiceRegistry())); |
3747 | 3751 |
3748 return vr_dispatcher_.get(); | 3752 return vr_dispatcher_.get(); |
3749 } | 3753 } |
3750 #endif | 3754 #endif |
3751 | 3755 |
3752 void RenderFrameImpl::DidPlay(blink::WebMediaPlayer* player) { | 3756 void RenderFrameImpl::DidPlay(WebMediaPlayer* player) { |
3753 Send(new FrameHostMsg_MediaPlayingNotification( | 3757 Send(new FrameHostMsg_MediaPlayingNotification( |
3754 routing_id_, reinterpret_cast<int64>(player), player->hasVideo(), | 3758 routing_id_, reinterpret_cast<int64>(player), player->hasVideo(), |
3755 player->hasAudio(), player->isRemote())); | 3759 player->hasAudio(), player->isRemote())); |
3756 } | 3760 } |
3757 | 3761 |
3758 void RenderFrameImpl::DidPause(blink::WebMediaPlayer* player) { | 3762 void RenderFrameImpl::DidPause(WebMediaPlayer* player) { |
3759 Send(new FrameHostMsg_MediaPausedNotification( | 3763 Send(new FrameHostMsg_MediaPausedNotification( |
3760 routing_id_, reinterpret_cast<int64>(player))); | 3764 routing_id_, reinterpret_cast<int64>(player))); |
3761 } | 3765 } |
3762 | 3766 |
3763 void RenderFrameImpl::PlayerGone(blink::WebMediaPlayer* player) { | 3767 void RenderFrameImpl::PlayerGone(WebMediaPlayer* player) { |
3764 DidPause(player); | 3768 DidPause(player); |
3765 } | 3769 } |
3766 | 3770 |
3767 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { | 3771 void RenderFrameImpl::AddObserver(RenderFrameObserver* observer) { |
3768 observers_.AddObserver(observer); | 3772 observers_.AddObserver(observer); |
3769 } | 3773 } |
3770 | 3774 |
3771 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { | 3775 void RenderFrameImpl::RemoveObserver(RenderFrameObserver* observer) { |
3772 observer->RenderFrameGone(); | 3776 observer->RenderFrameGone(); |
3773 observers_.RemoveObserver(observer); | 3777 observers_.RemoveObserver(observer); |
(...skipping 1096 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4870 pending_navigation_params_->start_params, | 4874 pending_navigation_params_->start_params, |
4871 pending_navigation_params_->request_params); | 4875 pending_navigation_params_->request_params); |
4872 } | 4876 } |
4873 return NavigationStateImpl::CreateContentInitiated(); | 4877 return NavigationStateImpl::CreateContentInitiated(); |
4874 } | 4878 } |
4875 | 4879 |
4876 #if defined(OS_ANDROID) | 4880 #if defined(OS_ANDROID) |
4877 | 4881 |
4878 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( | 4882 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( |
4879 WebMediaPlayerClient* client, | 4883 WebMediaPlayerClient* client, |
| 4884 WebMediaPlayerEncryptedMediaClient* encrypted_client, |
4880 media::MediaPermission* media_permission, | 4885 media::MediaPermission* media_permission, |
4881 blink::WebContentDecryptionModule* initial_cdm) { | 4886 WebContentDecryptionModule* initial_cdm) { |
4882 | |
4883 scoped_refptr<StreamTextureFactory> stream_texture_factory; | 4887 scoped_refptr<StreamTextureFactory> stream_texture_factory; |
4884 if (SynchronousCompositorFactory* factory = | 4888 if (SynchronousCompositorFactory* factory = |
4885 SynchronousCompositorFactory::GetInstance()) { | 4889 SynchronousCompositorFactory::GetInstance()) { |
4886 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); | 4890 stream_texture_factory = factory->CreateStreamTextureFactory(routing_id_); |
4887 } else { | 4891 } else { |
4888 GpuChannelHost* gpu_channel_host = | 4892 GpuChannelHost* gpu_channel_host = |
4889 RenderThreadImpl::current()->EstablishGpuChannelSync( | 4893 RenderThreadImpl::current()->EstablishGpuChannelSync( |
4890 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); | 4894 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); |
4891 | 4895 |
4892 if (!gpu_channel_host) { | 4896 if (!gpu_channel_host) { |
4893 LOG(ERROR) << "Failed to establish GPU channel for media player"; | 4897 LOG(ERROR) << "Failed to establish GPU channel for media player"; |
4894 return NULL; | 4898 return NULL; |
4895 } | 4899 } |
4896 | 4900 |
4897 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = | 4901 scoped_refptr<cc_blink::ContextProviderWebContext> context_provider = |
4898 RenderThreadImpl::current()->SharedMainThreadContextProvider(); | 4902 RenderThreadImpl::current()->SharedMainThreadContextProvider(); |
4899 | 4903 |
4900 if (!context_provider.get()) { | 4904 if (!context_provider.get()) { |
4901 LOG(ERROR) << "Failed to get context3d for media player"; | 4905 LOG(ERROR) << "Failed to get context3d for media player"; |
4902 return NULL; | 4906 return NULL; |
4903 } | 4907 } |
4904 | 4908 |
4905 stream_texture_factory = StreamTextureFactoryImpl::Create( | 4909 stream_texture_factory = StreamTextureFactoryImpl::Create( |
4906 context_provider, gpu_channel_host, routing_id_); | 4910 context_provider, gpu_channel_host, routing_id_); |
4907 } | 4911 } |
4908 | 4912 |
4909 return new WebMediaPlayerAndroid( | 4913 return new WebMediaPlayerAndroid( |
4910 frame_, client, weak_factory_.GetWeakPtr(), GetMediaPlayerManager(), | 4914 frame_, client, encrypted_client, weak_factory_.GetWeakPtr(), |
4911 GetCdmFactory(), media_permission, initial_cdm, stream_texture_factory, | 4915 GetMediaPlayerManager(), GetCdmFactory(), media_permission, initial_cdm, |
| 4916 stream_texture_factory, |
4912 RenderThreadImpl::current()->GetMediaThreadTaskRunner(), | 4917 RenderThreadImpl::current()->GetMediaThreadTaskRunner(), |
4913 new RenderMediaLog()); | 4918 new RenderMediaLog()); |
4914 } | 4919 } |
4915 | 4920 |
4916 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { | 4921 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
4917 if (!media_player_manager_) | 4922 if (!media_player_manager_) |
4918 media_player_manager_ = new RendererMediaPlayerManager(this); | 4923 media_player_manager_ = new RendererMediaPlayerManager(this); |
4919 return media_player_manager_; | 4924 return media_player_manager_; |
4920 } | 4925 } |
4921 | 4926 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4972 #elif defined(ENABLE_BROWSER_CDMS) | 4977 #elif defined(ENABLE_BROWSER_CDMS) |
4973 cdm_manager_, | 4978 cdm_manager_, |
4974 #endif | 4979 #endif |
4975 this); | 4980 this); |
4976 } | 4981 } |
4977 | 4982 |
4978 return cdm_factory_; | 4983 return cdm_factory_; |
4979 } | 4984 } |
4980 | 4985 |
4981 } // namespace content | 4986 } // namespace content |
OLD | NEW |