From 3c9175fec52cff5d24fa126941d044dbfa1aad70 Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Wed, 29 May 2019 19:02:14 -0700 Subject: [PATCH] Return key request type none after key rotation [ Merge of http://go/wvgerrit/80084 ] Corrected the key type being returned after entitled keys from init data are loaded. Made test changes to validate. Bug: 133903028 Test: WV unit/integration tests Change-Id: Icb44587f5c3aba3b0facae6d83dc9344d6b60833 --- libwvdrmengine/cdm/core/include/wv_cdm_types.h | 2 ++ libwvdrmengine/cdm/core/src/cdm_session.cpp | 8 ++++++-- libwvdrmengine/cdm/test/request_license_test.cpp | 1 + libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp | 7 +++---- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/libwvdrmengine/cdm/core/include/wv_cdm_types.h b/libwvdrmengine/cdm/core/include/wv_cdm_types.h index fdad2308..eba8bfa5 100644 --- a/libwvdrmengine/cdm/core/include/wv_cdm_types.h +++ b/libwvdrmengine/cdm/core/include/wv_cdm_types.h @@ -38,6 +38,8 @@ enum CdmKeyRequestType { kKeyRequestTypeInitial, kKeyRequestTypeRenewal, kKeyRequestTypeRelease, + kKeyRequestTypeNone, // Keys are loaded and no license request is necessary + kKeyRequestTypeUpdate, }; enum CdmOfflineLicenseState { diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index 819ce07c..5f8a11b2 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -444,10 +444,14 @@ CdmResponseType CdmSession::GenerateKeyRequestInternal( } else if (license_received_) { // A call to GenerateKeyRequest after the initial license has been received // is either a renewal/release request or a key rotation event - if (init_data.contains_entitled_keys()) + if (init_data.contains_entitled_keys()) { + key_request->message.clear(); + key_request->type = kKeyRequestTypeNone; + key_request->url.clear(); return license_parser_->HandleEmbeddedKeyData(init_data); - else + } else { return GenerateRenewalRequest(key_request); + } } else { key_request->type = kKeyRequestTypeInitial; diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index 4e3d7907..5ba7c1b9 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -1785,6 +1785,7 @@ class WvCdmRequestLicenseTest : public WvCdmTestBase { &key_request); EXPECT_EQ(wvcdm::KEY_ADDED, status); EXPECT_TRUE(key_request.message.empty()); + EXPECT_EQ(kKeyRequestTypeNone, key_request.type); EXPECT_TRUE(key_request.url.empty()); return wvcdm::KEY_ADDED == status && key_request.message.empty() && key_request.url.empty(); diff --git a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp index 32b4e13e..ea004f85 100644 --- a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp @@ -83,16 +83,15 @@ KeyRequestType ConvertFromCdmKeyRequestType( KeyRequestType_V1_1 ConvertFromCdmKeyRequestType_1_1( CdmKeyRequestType keyRequestType) { - /* TODO - What happened to these? switch (keyRequestType) { case wvcdm::kKeyRequestTypeNone: return KeyRequestType_V1_1::NONE; case wvcdm::kKeyRequestTypeUpdate: return KeyRequestType_V1_1::UPDATE; default: - */ - return static_cast( - ConvertFromCdmKeyRequestType(keyRequestType)); + return static_cast( + ConvertFromCdmKeyRequestType(keyRequestType)); + } } KeyRequestType toKeyRequestType_V1_0(KeyRequestType_V1_1 keyRequestType) {