diff --git a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp index e1ab605f..13764cc6 100644 --- a/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp +++ b/libwvdrmengine/cdm/test/cdm_extended_duration_test.cpp @@ -4,6 +4,8 @@ #include #include +#include + #include #include @@ -43,6 +45,8 @@ const uint32_t kClockTolerance = 10; const uint32_t kMaxUsageTableSize = 50; const std::string kEmptyServiceCertificate; +constexpr int64_t kUnlimitedDurationValue = LLONG_MAX; + // TODO(rfrias): refactor to print out the decryption test names struct SubSampleInfo { bool retrieve_key; @@ -1438,10 +1442,29 @@ TEST_P(WvCdmStreamingUsageReportTest, UsageTest) { QueryKeyStatus(true, false, &license_duration_remaining, &playback_duration_remaining); - EXPECT_NEAR(initial_license_duration_remaining - license_duration_remaining, - expected_seconds_since_license_received, kClockTolerance); - EXPECT_NEAR(initial_playback_duration_remaining - playback_duration_remaining, - expected_seconds_since_initial_playback, kClockTolerance); + // For unlimited "rental durations", the "license duration" will + // effectively be unlimited. Remaining license duration in this + // case is represented by |kUnlimitedDurationValue| and will not + // change over time. + if (initial_license_duration_remaining == kUnlimitedDurationValue) { + EXPECT_EQ(license_duration_remaining, kUnlimitedDurationValue); + } else { + EXPECT_NEAR(initial_license_duration_remaining - license_duration_remaining, + expected_seconds_since_license_received, kClockTolerance) + << "initial_license_duration_remaining = " + << initial_license_duration_remaining + << ", license_duration_remaining = " << license_duration_remaining; + } + + if (initial_playback_duration_remaining == kUnlimitedDurationValue) { + EXPECT_EQ(playback_duration_remaining, kUnlimitedDurationValue); + } else { + EXPECT_NEAR(initial_playback_duration_remaining - playback_duration_remaining, + expected_seconds_since_initial_playback, kClockTolerance) + << "initial_playback_duration_remaining = " + << initial_playback_duration_remaining + << ", playback_duration_remaining = " << playback_duration_remaining; + } decryptor_->CloseSession(session_id_);