diff options
author | jrummell <jrummell@chromium.org> | 2014-09-24 13:49:27 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-24 20:50:05 +0000 |
commit | 65b7d2770151a405f9fbb091e81b604920a1f798 (patch) | |
tree | 1d487898ee25f030e10a75d4d7d13ab8c42b5ee1 /media | |
parent | 8bc9fc166a9f23b90964cbad7e826c295112e222 (diff) | |
download | chromium_src-65b7d2770151a405f9fbb091e81b604920a1f798.zip chromium_src-65b7d2770151a405f9fbb091e81b604920a1f798.tar.gz chromium_src-65b7d2770151a405f9fbb091e81b604920a1f798.tar.bz2 |
Pass initial CDM to CreateMediaPlayer()
When creating a MediaPlayer, pass the initial CDM value, if there
is one. This may happen if setMediaKeys() has been called before
the MediaPlayer object is needed. The initial CDM value may be null.
BUG=358271
TEST=existing EME tests still pass
Review URL: https://codereview.chromium.org/594713002
Cr-Commit-Position: refs/heads/master@{#296510}
Diffstat (limited to 'media')
-rw-r--r-- | media/blink/encrypted_media_player_support.h | 4 | ||||
-rw-r--r-- | media/blink/null_encrypted_media_player_support.cc | 8 | ||||
-rw-r--r-- | media/blink/null_encrypted_media_player_support.h | 4 | ||||
-rw-r--r-- | media/blink/webmediaplayer_impl.cc | 7 | ||||
-rw-r--r-- | media/blink/webmediaplayer_impl.h | 4 | ||||
-rw-r--r-- | media/blink/webmediaplayer_params.cc | 20 | ||||
-rw-r--r-- | media/blink/webmediaplayer_params.h | 10 |
7 files changed, 26 insertions, 31 deletions
diff --git a/media/blink/encrypted_media_player_support.h b/media/blink/encrypted_media_player_support.h index b387686..737720d 100644 --- a/media/blink/encrypted_media_player_support.h +++ b/media/blink/encrypted_media_player_support.h @@ -46,13 +46,13 @@ class MEDIA_EXPORT EncryptedMediaPlayerSupport { // Unprefixed API methods. + virtual void SetInitialContentDecryptionModule( + blink::WebContentDecryptionModule* initial_cdm) = 0; virtual void SetContentDecryptionModule( blink::WebContentDecryptionModule* cdm) = 0; virtual void SetContentDecryptionModule( blink::WebContentDecryptionModule* cdm, blink::WebContentDecryptionModuleResult result) = 0; - virtual void SetContentDecryptionModuleSync( - blink::WebContentDecryptionModule* cdm) = 0; // Callback factory and notification methods used by WebMediaPlayerImpl. diff --git a/media/blink/null_encrypted_media_player_support.cc b/media/blink/null_encrypted_media_player_support.cc index 035785b..a67893b 100644 --- a/media/blink/null_encrypted_media_player_support.cc +++ b/media/blink/null_encrypted_media_player_support.cc @@ -48,6 +48,10 @@ NullEncryptedMediaPlayerSupport::CancelKeyRequest( return blink::WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; } +void NullEncryptedMediaPlayerSupport::SetInitialContentDecryptionModule( + blink::WebContentDecryptionModule* initial_cdm) { +} + void NullEncryptedMediaPlayerSupport::SetContentDecryptionModule( blink::WebContentDecryptionModule* cdm) { } @@ -61,10 +65,6 @@ void NullEncryptedMediaPlayerSupport::SetContentDecryptionModule( "Null MediaKeys object is not supported."); } -void NullEncryptedMediaPlayerSupport::SetContentDecryptionModuleSync( - blink::WebContentDecryptionModule* cdm) { -} - Demuxer::NeedKeyCB NullEncryptedMediaPlayerSupport::CreateNeedKeyCB() { return Demuxer::NeedKeyCB(); } diff --git a/media/blink/null_encrypted_media_player_support.h b/media/blink/null_encrypted_media_player_support.h index 140bef1..615b893 100644 --- a/media/blink/null_encrypted_media_player_support.h +++ b/media/blink/null_encrypted_media_player_support.h @@ -42,13 +42,13 @@ class MEDIA_EXPORT NullEncryptedMediaPlayerSupport // Unprefixed API methods. + virtual void SetInitialContentDecryptionModule( + blink::WebContentDecryptionModule* initial_cdm) OVERRIDE; virtual void SetContentDecryptionModule( blink::WebContentDecryptionModule* cdm) OVERRIDE; virtual void SetContentDecryptionModule( blink::WebContentDecryptionModule* cdm, blink::WebContentDecryptionModuleResult result) OVERRIDE; - virtual void SetContentDecryptionModuleSync( - blink::WebContentDecryptionModule* cdm) OVERRIDE; // Callback factory and notification methods used by WebMediaPlayerImpl. diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc index 0fd74e8..c79ee7a 100644 --- a/media/blink/webmediaplayer_impl.cc +++ b/media/blink/webmediaplayer_impl.cc @@ -679,13 +679,6 @@ void WebMediaPlayerImpl::setContentDecryptionModule( encrypted_media_support_->SetContentDecryptionModule(cdm, result); } -void WebMediaPlayerImpl::setContentDecryptionModuleSync( - blink::WebContentDecryptionModule* cdm) { - DCHECK(main_task_runner_->BelongsToCurrentThread()); - - encrypted_media_support_->SetContentDecryptionModuleSync(cdm); -} - void WebMediaPlayerImpl::OnPipelineSeeked(bool time_changed, PipelineStatus status) { DVLOG(1) << __FUNCTION__ << "(" << time_changed << ", " << status << ")"; diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h index bbdf080..3dc778f 100644 --- a/media/blink/webmediaplayer_impl.h +++ b/media/blink/webmediaplayer_impl.h @@ -155,14 +155,12 @@ class MEDIA_EXPORT WebMediaPlayerImpl const blink::WebString& session_id); // TODO(jrummell): Remove this method once Blink updated to use the other - // two methods. + // method. virtual void setContentDecryptionModule( blink::WebContentDecryptionModule* cdm); virtual void setContentDecryptionModule( blink::WebContentDecryptionModule* cdm, blink::WebContentDecryptionModuleResult result); - virtual void setContentDecryptionModuleSync( - blink::WebContentDecryptionModule* cdm); void OnPipelineSeeked(bool time_changed, PipelineStatus status); void OnPipelineEnded(); diff --git a/media/blink/webmediaplayer_params.cc b/media/blink/webmediaplayer_params.cc index c157e34..1fd2b8a 100644 --- a/media/blink/webmediaplayer_params.cc +++ b/media/blink/webmediaplayer_params.cc @@ -17,12 +17,11 @@ WebMediaPlayerParams::WebMediaPlayerParams( const AudioHardwareConfig& audio_hardware_config, const scoped_refptr<MediaLog>& media_log, const scoped_refptr<GpuVideoAcceleratorFactories>& gpu_factories, - const scoped_refptr<base::SingleThreadTaskRunner>& - media_task_runner, - const scoped_refptr<base::SingleThreadTaskRunner>& - compositor_task_runner, - const EncryptedMediaPlayerSupportCreateCB& - encrypted_media_player_support_cb) + const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, + const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner, + const EncryptedMediaPlayerSupportCreateCB& + encrypted_media_player_support_cb, + blink::WebContentDecryptionModule* initial_cdm) : defer_load_cb_(defer_load_cb), audio_renderer_sink_(audio_renderer_sink), audio_hardware_config_(audio_hardware_config), @@ -30,7 +29,8 @@ WebMediaPlayerParams::WebMediaPlayerParams( gpu_factories_(gpu_factories), media_task_runner_(media_task_runner), compositor_task_runner_(compositor_task_runner), - encrypted_media_player_support_cb_(encrypted_media_player_support_cb) { + encrypted_media_player_support_cb_(encrypted_media_player_support_cb), + initial_cdm_(initial_cdm) { } WebMediaPlayerParams::~WebMediaPlayerParams() {} @@ -38,7 +38,11 @@ WebMediaPlayerParams::~WebMediaPlayerParams() {} scoped_ptr<EncryptedMediaPlayerSupport> WebMediaPlayerParams::CreateEncryptedMediaPlayerSupport( blink::WebMediaPlayerClient* client) const { - return encrypted_media_player_support_cb_.Run(client); + scoped_ptr<EncryptedMediaPlayerSupport> encrypted_media_support = + encrypted_media_player_support_cb_.Run(client); + if (encrypted_media_support) + encrypted_media_support->SetInitialContentDecryptionModule(initial_cdm_); + return encrypted_media_support.Pass(); } } // namespace media diff --git a/media/blink/webmediaplayer_params.h b/media/blink/webmediaplayer_params.h index 7bd3ddb..c765548 100644 --- a/media/blink/webmediaplayer_params.h +++ b/media/blink/webmediaplayer_params.h @@ -42,12 +42,11 @@ class MEDIA_EXPORT WebMediaPlayerParams { const AudioHardwareConfig& audio_hardware_config, const scoped_refptr<MediaLog>& media_log, const scoped_refptr<GpuVideoAcceleratorFactories>& gpu_factories, - const scoped_refptr<base::SingleThreadTaskRunner>& - media_task_runner, - const scoped_refptr<base::SingleThreadTaskRunner>& - compositor_task_runner, + const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner, + const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner, const EncryptedMediaPlayerSupportCreateCB& - encrypted_media_player_support_cb); + encrypted_media_player_support_cb, + blink::WebContentDecryptionModule* initial_cdm); ~WebMediaPlayerParams(); @@ -94,6 +93,7 @@ class MEDIA_EXPORT WebMediaPlayerParams { scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_; scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_; EncryptedMediaPlayerSupportCreateCB encrypted_media_player_support_cb_; + blink::WebContentDecryptionModule* initial_cdm_; DISALLOW_IMPLICIT_CONSTRUCTORS(WebMediaPlayerParams); }; |