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 1893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1904 render_view_->RegisterVideoHoleFrame(this); | 1904 render_view_->RegisterVideoHoleFrame(this); |
1905 contains_media_player_ = true; | 1905 contains_media_player_ = true; |
1906 } | 1906 } |
1907 #endif // defined(VIDEO_HOLE) | 1907 #endif // defined(VIDEO_HOLE) |
1908 | 1908 |
1909 blink::WebMediaStream web_stream( | 1909 blink::WebMediaStream web_stream( |
1910 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 1910 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
1911 if (!web_stream.isNull()) | 1911 if (!web_stream.isNull()) |
1912 return CreateWebMediaPlayerForMediaStream(url, client); | 1912 return CreateWebMediaPlayerForMediaStream(url, client); |
1913 | 1913 |
| 1914 if (!media_permission_dispatcher_) |
| 1915 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); |
| 1916 |
1914 #if defined(OS_ANDROID) | 1917 #if defined(OS_ANDROID) |
1915 return CreateAndroidWebMediaPlayer(url, client, initial_cdm); | 1918 return CreateAndroidWebMediaPlayer(url, client, media_permission_dispatcher_, |
| 1919 initial_cdm); |
1916 #else | 1920 #else |
1917 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); | 1921 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); |
1918 | 1922 |
| 1923 |
1919 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | 1924 RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
1920 media::WebMediaPlayerParams params( | 1925 media::WebMediaPlayerParams params( |
1921 base::Bind(&ContentRendererClient::DeferMediaLoad, | 1926 base::Bind(&ContentRendererClient::DeferMediaLoad, |
1922 base::Unretained(GetContentClient()->renderer()), | 1927 base::Unretained(GetContentClient()->renderer()), |
1923 static_cast<RenderFrame*>(this)), | 1928 static_cast<RenderFrame*>(this)), |
1924 render_thread->GetAudioRendererMixerManager()->CreateInput( | 1929 render_thread->GetAudioRendererMixerManager()->CreateInput( |
1925 render_view_->routing_id_, routing_id_), | 1930 render_view_->routing_id_, routing_id_), |
1926 media_log, render_thread->GetMediaThreadTaskRunner(), | 1931 media_log, render_thread->GetMediaThreadTaskRunner(), |
1927 render_thread->compositor_message_loop_proxy(), | 1932 render_thread->compositor_message_loop_proxy(), |
1928 base::Bind(&GetSharedMainThreadContext3D), initial_cdm); | 1933 base::Bind(&GetSharedMainThreadContext3D), media_permission_dispatcher_, |
| 1934 initial_cdm); |
1929 | 1935 |
1930 #if defined(ENABLE_PEPPER_CDMS) | 1936 #if defined(ENABLE_PEPPER_CDMS) |
1931 scoped_ptr<media::CdmFactory> cdm_factory( | 1937 scoped_ptr<media::CdmFactory> cdm_factory( |
1932 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame))); | 1938 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame))); |
1933 #elif defined(ENABLE_BROWSER_CDMS) | 1939 #elif defined(ENABLE_BROWSER_CDMS) |
1934 scoped_ptr<media::CdmFactory> cdm_factory( | 1940 scoped_ptr<media::CdmFactory> cdm_factory( |
1935 new RenderCdmFactory(GetCdmManager())); | 1941 new RenderCdmFactory(GetCdmManager())); |
1936 #else | 1942 #else |
1937 scoped_ptr<media::CdmFactory> cdm_factory(new RenderCdmFactory()); | 1943 scoped_ptr<media::CdmFactory> cdm_factory(new RenderCdmFactory()); |
1938 #endif | 1944 #endif |
(...skipping 1468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3407 #if defined(ENABLE_PEPPER_CDMS) | 3413 #if defined(ENABLE_PEPPER_CDMS) |
3408 scoped_ptr<media::CdmFactory> cdm_factory( | 3414 scoped_ptr<media::CdmFactory> cdm_factory( |
3409 new RenderCdmFactory(base::Bind(PepperCdmWrapperImpl::Create, frame_))); | 3415 new RenderCdmFactory(base::Bind(PepperCdmWrapperImpl::Create, frame_))); |
3410 #elif defined(ENABLE_BROWSER_CDMS) | 3416 #elif defined(ENABLE_BROWSER_CDMS) |
3411 scoped_ptr<media::CdmFactory> cdm_factory( | 3417 scoped_ptr<media::CdmFactory> cdm_factory( |
3412 new RenderCdmFactory(GetCdmManager())); | 3418 new RenderCdmFactory(GetCdmManager())); |
3413 #else | 3419 #else |
3414 scoped_ptr<media::CdmFactory> cdm_factory(new RenderCdmFactory()); | 3420 scoped_ptr<media::CdmFactory> cdm_factory(new RenderCdmFactory()); |
3415 #endif | 3421 #endif |
3416 | 3422 |
3417 DCHECK(!media_permission_dispatcher_); | 3423 if (!media_permission_dispatcher_) |
3418 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); | 3424 media_permission_dispatcher_ = new MediaPermissionDispatcher(this); |
3419 | 3425 |
3420 web_encrypted_media_client_.reset(new media::WebEncryptedMediaClientImpl( | 3426 web_encrypted_media_client_.reset(new media::WebEncryptedMediaClientImpl( |
3421 cdm_factory.Pass(), media_permission_dispatcher_)); | 3427 cdm_factory.Pass(), media_permission_dispatcher_)); |
3422 } | 3428 } |
3423 return web_encrypted_media_client_.get(); | 3429 return web_encrypted_media_client_.get(); |
3424 } | 3430 } |
3425 | 3431 |
3426 blink::WebMIDIClient* RenderFrameImpl::webMIDIClient() { | 3432 blink::WebMIDIClient* RenderFrameImpl::webMIDIClient() { |
3427 if (!midi_dispatcher_) | 3433 if (!midi_dispatcher_) |
3428 midi_dispatcher_ = new MidiDispatcher(this); | 3434 midi_dispatcher_ = new MidiDispatcher(this); |
(...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4414 | 4420 |
4415 const WebURLRequest& request = ds->request(); | 4421 const WebURLRequest& request = ds->request(); |
4416 return request.url(); | 4422 return request.url(); |
4417 } | 4423 } |
4418 | 4424 |
4419 #if defined(OS_ANDROID) | 4425 #if defined(OS_ANDROID) |
4420 | 4426 |
4421 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( | 4427 WebMediaPlayer* RenderFrameImpl::CreateAndroidWebMediaPlayer( |
4422 const blink::WebURL& url, | 4428 const blink::WebURL& url, |
4423 WebMediaPlayerClient* client, | 4429 WebMediaPlayerClient* client, |
| 4430 media::MediaPermission* media_permission, |
4424 blink::WebContentDecryptionModule* initial_cdm) { | 4431 blink::WebContentDecryptionModule* initial_cdm) { |
4425 GpuChannelHost* gpu_channel_host = | 4432 GpuChannelHost* gpu_channel_host = |
4426 RenderThreadImpl::current()->EstablishGpuChannelSync( | 4433 RenderThreadImpl::current()->EstablishGpuChannelSync( |
4427 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); | 4434 CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); |
4428 if (!gpu_channel_host) { | 4435 if (!gpu_channel_host) { |
4429 LOG(ERROR) << "Failed to establish GPU channel for media player"; | 4436 LOG(ERROR) << "Failed to establish GPU channel for media player"; |
4430 return NULL; | 4437 return NULL; |
4431 } | 4438 } |
4432 | 4439 |
4433 scoped_refptr<StreamTextureFactory> stream_texture_factory; | 4440 scoped_refptr<StreamTextureFactory> stream_texture_factory; |
(...skipping 12 matching lines...) Expand all Loading... |
4446 stream_texture_factory = StreamTextureFactoryImpl::Create( | 4453 stream_texture_factory = StreamTextureFactoryImpl::Create( |
4447 context_provider, gpu_channel_host, routing_id_); | 4454 context_provider, gpu_channel_host, routing_id_); |
4448 } | 4455 } |
4449 | 4456 |
4450 return new WebMediaPlayerAndroid( | 4457 return new WebMediaPlayerAndroid( |
4451 frame_, | 4458 frame_, |
4452 client, | 4459 client, |
4453 weak_factory_.GetWeakPtr(), | 4460 weak_factory_.GetWeakPtr(), |
4454 GetMediaPlayerManager(), | 4461 GetMediaPlayerManager(), |
4455 GetCdmManager(), | 4462 GetCdmManager(), |
| 4463 media_permission, |
4456 initial_cdm, | 4464 initial_cdm, |
4457 stream_texture_factory, | 4465 stream_texture_factory, |
4458 RenderThreadImpl::current()->GetMediaThreadTaskRunner(), | 4466 RenderThreadImpl::current()->GetMediaThreadTaskRunner(), |
4459 new RenderMediaLog()); | 4467 new RenderMediaLog()); |
4460 } | 4468 } |
4461 | 4469 |
4462 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { | 4470 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
4463 if (!media_player_manager_) | 4471 if (!media_player_manager_) |
4464 media_player_manager_ = new RendererMediaPlayerManager(this); | 4472 media_player_manager_ = new RendererMediaPlayerManager(this); |
4465 return media_player_manager_; | 4473 return media_player_manager_; |
4466 } | 4474 } |
4467 | 4475 |
4468 #endif // defined(OS_ANDROID) | 4476 #endif // defined(OS_ANDROID) |
4469 | 4477 |
4470 #if defined(ENABLE_BROWSER_CDMS) | 4478 #if defined(ENABLE_BROWSER_CDMS) |
4471 RendererCdmManager* RenderFrameImpl::GetCdmManager() { | 4479 RendererCdmManager* RenderFrameImpl::GetCdmManager() { |
4472 if (!cdm_manager_) | 4480 if (!cdm_manager_) |
4473 cdm_manager_ = new RendererCdmManager(this); | 4481 cdm_manager_ = new RendererCdmManager(this); |
4474 return cdm_manager_; | 4482 return cdm_manager_; |
4475 } | 4483 } |
4476 #endif // defined(ENABLE_BROWSER_CDMS) | 4484 #endif // defined(ENABLE_BROWSER_CDMS) |
4477 | 4485 |
4478 } // namespace content | 4486 } // namespace content |
OLD | NEW |