diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index 67cea885..15b25bee 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -372,7 +372,7 @@ CdmResponseType CdmSession::GenerateKeyRequest( init_data.type().c_str()); return UNSUPPORTED_INIT_DATA; } - if (init_data.IsEmpty()) { + if (init_data.IsEmpty() && !license_parser_->HasInitData()) { LOGW("CdmSession::GenerateKeyRequest: init data absent"); return INIT_DATA_NOT_FOUND; } diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index 270c5e0a..90a2029d 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -1639,7 +1639,10 @@ TEST_F(WvCdmRequestLicenseTest, PrivacyModeTest) { std::string resp = GetKeyRequestResponse(g_license_server, g_client_auth); EXPECT_EQ(decryptor_.AddKey(session_id_, resp, &key_set_id_), wvcdm::NEED_KEY); - GenerateKeyRequest(g_key_id, kLicenseTypeStreaming); + const std::string empty_init_data; + // Verify cached initialization data from previous request is used when + // empty initialization data is passed. + GenerateKeyRequest(empty_init_data, kLicenseTypeStreaming); VerifyKeyRequestResponse(g_license_server, g_client_auth); decryptor_.CloseSession(session_id_); }