Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(774)

Unified Diff: media/blink/encrypted_media_player_support.cc

Issue 1070853004: media: CdmFactory creates CDM (MediaKeys) asynchronously. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase only Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..9ee0b2b3b58caea997e7750b3498074176f66f78 100644
--- a/media/blink/encrypted_media_player_support.cc
+++ b/media/blink/encrypted_media_player_support.cc
@@ -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(!set_cdm_context_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,
+ set_cdm_context_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.
ddorwin 2015/04/10 00:59:43 Be sure this passes layout tests. I think there wa
xhwang 2015/04/10 17:41:17 This has always been the case and just confirmed t
+ 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,
ddorwin 2015/04/10 00:59:43 Can this no longer fail? Is everything in an Initi
xhwang 2015/04/10 17:41:17 Since we added RequestPermission, this path is alr
+ init_data_length);
return WebMediaPlayer::MediaKeyExceptionNoError;
}

Powered by Google App Engine
This is Rietveld 408576698