diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index 26267110..5e71f747 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -54,6 +54,12 @@ CdmSession::CdmSession(FileSystem* file_system, } CdmSession::~CdmSession() { + if (usage_support_type_ == kUsageEntrySupport && + has_provider_session_token() && + usage_table_header_ != NULL) { + UpdateUsageEntryInformation(); + } + if (!key_set_id_.empty()) { // Unreserve the license ID. file_handle_->UnreserveLicenseId(key_set_id_); diff --git a/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp b/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp index ab28491c..04f215e3 100644 --- a/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp @@ -338,11 +338,12 @@ TEST_F(CdmSessionTest, UpdateUsageEntry) { // Set up mocks and expectations for the UpdateUsageEntryInformation call. EXPECT_CALL(*crypto_session_, GetUsageSupportType(_)) - .WillOnce(DoAll(SetArgPointee<0>(kUsageEntrySupport), Return(NO_ERROR))); + .WillRepeatedly(DoAll( + SetArgPointee<0>(kUsageEntrySupport), Return(NO_ERROR))); EXPECT_CALL(*license_parser_, provider_session_token()) - .WillOnce(Return("Mock provider session token")); + .WillRepeatedly(Return("Mock provider session token")); EXPECT_CALL(usage_table_header_, UpdateEntry(NotNull(), NotNull())) - .WillOnce(Return(NO_ERROR)); + .WillRepeatedly(Return(NO_ERROR)); EXPECT_EQ(NO_ERROR, cdm_session_->Init(NULL)); EXPECT_EQ(kUsageEntrySupport, cdm_session_->get_usage_support_type())