Correct KeySetId value when returned by AddKey
[ Merge of http://go/wvgerrit/25643 ] The MediaDrm#provideKeyResponse API states that an empty byte array is returned when the license type is streaming or release but a non-empty value was being returned in some cases. The KeySetId is now returned when the license type is offline or when the license is streaming and has a secure stop associated with it. Test: Verified by request_license_test integration tests. Tests have been modified to validate the returned Key Set Id values. b/36093612 Change-Id: I82dba537c77ddd1d1876cbce58729f3db901ee51
This commit is contained in:
@@ -160,6 +160,11 @@ CdmResponseType WvContentDecryptionModule::AddKey(
|
||||
CdmEngine* cdm_engine = session_id.empty() ? GetCdmForSessionId(*key_set_id)
|
||||
: GetCdmForSessionId(session_id);
|
||||
if (!cdm_engine) return SESSION_NOT_FOUND_3;
|
||||
// Save key_set_id, as CDM will return an empty key_set_id on release
|
||||
CdmKeySetId release_key_set_id;
|
||||
if (session_id.empty() && key_set_id != NULL) {
|
||||
release_key_set_id = *key_set_id;
|
||||
}
|
||||
CdmResponseType sts;
|
||||
M_TIME(
|
||||
sts = cdm_engine->AddKey(
|
||||
@@ -170,8 +175,8 @@ CdmResponseType WvContentDecryptionModule::AddKey(
|
||||
cdm_engine_add_key_,
|
||||
sts);
|
||||
if (sts == KEY_ADDED && session_id.empty()) { // license type release
|
||||
cdm_engine->CloseKeySetSession(*key_set_id);
|
||||
cdm_by_session_id_.erase(*key_set_id);
|
||||
cdm_engine->CloseKeySetSession(release_key_set_id);
|
||||
cdm_by_session_id_.erase(release_key_set_id);
|
||||
}
|
||||
return sts;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user