From 2404500ceb4221fc61f0642cce66ef25580e32eb Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Fri, 30 Apr 2021 04:52:39 -0700 Subject: [PATCH] Report Rental duration remaining [ Merge of http://go/wvgerrit/124063 ] LicenseDurationRemaining used to indicate the minimum of rental or license duration till OEMCrypto v16. OEMCrypto v16 onwards it began reporting rental duration alone. This is confusing for app developers and content partners. Keeping LicenseDurationRemaining as apps may depend on it but adding RentalDurationRemaining for clarity. Bug: 186838303 Test: WV unit/integration tests, WvCdmRequestLicenseTest.QueryKeyStatus Change-Id: I6c507150a0945ee36716b4da189f5741b092c0ec --- libwvdrmengine/cdm/core/include/wv_cdm_constants.h | 2 ++ libwvdrmengine/cdm/core/src/policy_engine.cpp | 2 ++ libwvdrmengine/cdm/test/request_license_test.cpp | 7 +++++++ 3 files changed, 11 insertions(+) diff --git a/libwvdrmengine/cdm/core/include/wv_cdm_constants.h b/libwvdrmengine/cdm/core/include/wv_cdm_constants.h index 22c70283..ce2a2714 100644 --- a/libwvdrmengine/cdm/core/include/wv_cdm_constants.h +++ b/libwvdrmengine/cdm/core/include/wv_cdm_constants.h @@ -69,6 +69,8 @@ static const std::string QUERY_KEY_LICENSE_DURATION_REMAINING = "LicenseDurationRemaining"; // non-negative integer denoting seconds static const std::string QUERY_KEY_PLAYBACK_DURATION_REMAINING = "PlaybackDurationRemaining"; // non-negative integer denoting seconds +static const std::string QUERY_KEY_RENTAL_DURATION_REMAINING = + "RentalDurationRemaining"; // non-negative integer denoting seconds static const std::string QUERY_KEY_RENEWAL_SERVER_URL = "RenewalServerUrl"; // url static const std::string QUERY_KEY_OEMCRYPTO_SESSION_ID = diff --git a/libwvdrmengine/cdm/core/src/policy_engine.cpp b/libwvdrmengine/cdm/core/src/policy_engine.cpp index c2be3dd6..019383dc 100644 --- a/libwvdrmengine/cdm/core/src/policy_engine.cpp +++ b/libwvdrmengine/cdm/core/src/policy_engine.cpp @@ -307,6 +307,8 @@ CdmResponseType PolicyEngine::Query(CdmQueryMap* query_response) { : QUERY_VALUE_FALSE; (*query_response)[QUERY_KEY_LICENSE_DURATION_REMAINING] = std::to_string( policy_timers_->GetLicenseOrRentalDurationRemaining(current_time)); + (*query_response)[QUERY_KEY_RENTAL_DURATION_REMAINING] = std::to_string( + policy_timers_->GetLicenseOrRentalDurationRemaining(current_time)); (*query_response)[QUERY_KEY_PLAYBACK_DURATION_REMAINING] = std::to_string( policy_timers_->GetPlaybackDurationRemaining(current_time)); (*query_response)[QUERY_KEY_RENEWAL_SERVER_URL] = diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index c60349b4..8fb8173e 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -5053,6 +5053,13 @@ TEST_F(WvCdmRequestLicenseTest, QueryKeyStatus) { ss >> remaining_time; ASSERT_FALSE(ss.fail()); EXPECT_LT(0, remaining_time); + itr = query_info.find(wvcdm::QUERY_KEY_RENTAL_DURATION_REMAINING); + ASSERT_TRUE(itr != query_info.end()); + ss.clear(); + ss.str(itr->second); + ss >> remaining_time; + ASSERT_FALSE(ss.fail()); + EXPECT_LT(0, remaining_time); itr = query_info.find(wvcdm::QUERY_KEY_PLAYBACK_DURATION_REMAINING); ASSERT_TRUE(itr != query_info.end()); ss.clear();