Index: media/blink/encrypted_media_player_support.cc |
diff --git a/media/blink/encrypted_media_player_support.cc b/media/blink/encrypted_media_player_support.cc |
index a84e24cd795d1bf1f5fbf01447c2e7b3ecc2e58c..cc11a2e50413d8b6cc5c1427da0ba36a88b0677d 100644 |
--- a/media/blink/encrypted_media_player_support.cc |
+++ b/media/blink/encrypted_media_player_support.cc |
@@ -116,12 +116,12 @@ EncryptedMediaPlayerSupport::EncryptedMediaPlayerSupport( |
CdmFactory* cdm_factory, |
blink::WebMediaPlayerClient* client, |
MediaPermission* media_permission, |
- const SetCdmContextCB& set_cdm_context_cb) |
+ const CdmContextReadyCB& cdm_context_ready_cb) |
: cdm_factory_(cdm_factory), |
client_(client), |
media_permission_(media_permission), |
init_data_type_(EmeInitDataType::UNKNOWN), |
- set_cdm_context_cb_(set_cdm_context_cb) { |
+ cdm_context_ready_cb_(cdm_context_ready_cb) { |
} |
EncryptedMediaPlayerSupport::~EncryptedMediaPlayerSupport() { |
@@ -155,43 +155,32 @@ EncryptedMediaPlayerSupport::GenerateKeyRequestInternal( |
if (!PrefixedIsSupportedConcreteKeySystem(key_system)) |
return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; |
- // We do not support run-time switching between key systems for now. |
- if (current_key_system_.empty()) { |
- if (!proxy_decryptor_) { |
- proxy_decryptor_.reset(new ProxyDecryptor( |
- media_permission_, |
- BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyAdded), |
- BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyError), |
- BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyMessage))); |
- } |
+ if (!proxy_decryptor_) { |
+ DCHECK(current_key_system_.empty()); |
+ DCHECK(!cdm_context_ready_cb_.is_null()); |
+ proxy_decryptor_.reset(new ProxyDecryptor( |
+ media_permission_, |
+ BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyAdded), |
+ BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyError), |
+ BIND_TO_RENDER_LOOP(&EncryptedMediaPlayerSupport::OnKeyMessage))); |
GURL security_origin(frame->document().securityOrigin().toString()); |
- |
- if (!proxy_decryptor_->InitializeCDM(cdm_factory_, key_system, |
- security_origin)) { |
- return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; |
- } |
- |
- if (proxy_decryptor_ && !set_cdm_context_cb_.is_null()) { |
- base::ResetAndReturn(&set_cdm_context_cb_) |
- .Run(proxy_decryptor_->GetCdmContext(), |
- base::Bind(&IgnoreCdmAttached)); |
- } |
- |
+ proxy_decryptor_->CreateCdm(cdm_factory_, key_system, security_origin, |
+ cdm_context_ready_cb_); |
current_key_system_ = key_system; |
- } else if (key_system != current_key_system_) { |
- return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState; |
} |
+ // We do not support run-time switching between key systems for now. |
+ DCHECK(!current_key_system_.empty()); |
+ if (key_system != current_key_system_) |
+ return WebMediaPlayer::MediaKeyExceptionInvalidPlayerState; |
+ |
EmeInitDataType init_data_type = init_data_type_; |
if (init_data_type == EmeInitDataType::UNKNOWN) |
init_data_type = GuessInitDataType(init_data, init_data_length); |
- if (!proxy_decryptor_->GenerateKeyRequest(init_data_type, init_data, |
- init_data_length)) { |
- current_key_system_.clear(); |
- return WebMediaPlayer::MediaKeyExceptionKeySystemNotSupported; |
- } |
+ proxy_decryptor_->GenerateKeyRequest(init_data_type, init_data, |
+ init_data_length); |
return WebMediaPlayer::MediaKeyExceptionNoError; |
} |