Corrections to license duration reporting am: be9aba6d3a
am: cb24c8af0e
Change-Id: I9b73c51730066bb0f8b11a91dfdd58e7f1506904
This commit is contained in:
@@ -403,6 +403,8 @@ int64_t PolicyEngine::GetLicenseOrRentalDurationRemaining(
|
|||||||
if (license_expiry_time == NEVER_EXPIRES) return LLONG_MAX;
|
if (license_expiry_time == NEVER_EXPIRES) return LLONG_MAX;
|
||||||
if (license_expiry_time < current_time) return 0;
|
if (license_expiry_time < current_time) return 0;
|
||||||
const int64_t policy_license_duration = policy_.license_duration_seconds();
|
const int64_t policy_license_duration = policy_.license_duration_seconds();
|
||||||
|
if (policy_license_duration == NEVER_EXPIRES)
|
||||||
|
return license_expiry_time - current_time;
|
||||||
return std::min(license_expiry_time - current_time, policy_license_duration);
|
return std::min(license_expiry_time - current_time, policy_license_duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -522,6 +522,128 @@ TEST_F(PolicyEngineTest, PlaybackOk_PlaybackAndRental0) {
|
|||||||
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(PolicyEngineTest, PlaybackOk_PlaybackAndLicense0_WithoutPlayback) {
|
||||||
|
License_Policy* policy = license_.mutable_policy();
|
||||||
|
policy->clear_license_duration_seconds();
|
||||||
|
policy->clear_playback_duration_seconds();
|
||||||
|
// Only |rental_duration_seconds| set.
|
||||||
|
|
||||||
|
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 1))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kRentalDuration - 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kRentalDuration + 10));
|
||||||
|
|
||||||
|
ExpectSessionKeysChange(kKeyStatusExpired, false);
|
||||||
|
ExpectSessionKeysChange(kKeyStatusUsable, true);
|
||||||
|
EXPECT_CALL(mock_event_listener_,
|
||||||
|
OnExpirationUpdate(_, kLicenseStartTime + kRentalDuration));
|
||||||
|
|
||||||
|
policy_engine_->SetLicense(license_);
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(PolicyEngineTest, PlaybackOk_PlaybackAndLicense0_WithPlayback) {
|
||||||
|
License_Policy* policy = license_.mutable_policy();
|
||||||
|
policy->clear_license_duration_seconds();
|
||||||
|
policy->clear_playback_duration_seconds();
|
||||||
|
// Only |rental_duration_seconds| set.
|
||||||
|
|
||||||
|
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 1))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kRentalDuration + 10));
|
||||||
|
|
||||||
|
ExpectSessionKeysChange(kKeyStatusUsable, true);
|
||||||
|
EXPECT_CALL(mock_event_listener_,
|
||||||
|
OnExpirationUpdate(_, 0));
|
||||||
|
EXPECT_CALL(mock_event_listener_,
|
||||||
|
OnExpirationUpdate(_, kLicenseStartTime + kRentalDuration));
|
||||||
|
|
||||||
|
policy_engine_->SetLicense(license_);
|
||||||
|
policy_engine_->BeginDecryption();
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(PolicyEngineTest, PlaybackOk_RentalAndLicense0_WithoutPlayback) {
|
||||||
|
License_Policy* policy = license_.mutable_policy();
|
||||||
|
policy->clear_license_duration_seconds();
|
||||||
|
policy->clear_rental_duration_seconds();
|
||||||
|
// Only |playback_duration_seconds| set.
|
||||||
|
|
||||||
|
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 1))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kPlaybackDuration + 10));
|
||||||
|
|
||||||
|
ExpectSessionKeysChange(kKeyStatusUsable, true);
|
||||||
|
EXPECT_CALL(mock_event_listener_, OnExpirationUpdate(_, 0));
|
||||||
|
|
||||||
|
policy_engine_->SetLicense(license_);
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(PolicyEngineTest, PlaybackOk_RentalAndLicense0_WithPlayback) {
|
||||||
|
License_Policy* policy = license_.mutable_policy();
|
||||||
|
policy->clear_license_duration_seconds();
|
||||||
|
policy->clear_rental_duration_seconds();
|
||||||
|
// Only |playback_duration_seconds| set.
|
||||||
|
|
||||||
|
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 1))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime + kPlaybackDuration - 10))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime + kPlaybackDuration + 10));
|
||||||
|
|
||||||
|
ExpectSessionKeysChange(kKeyStatusExpired, false);
|
||||||
|
ExpectSessionKeysChange(kKeyStatusUsable, true);
|
||||||
|
EXPECT_CALL(mock_event_listener_, OnExpirationUpdate(_, 0));
|
||||||
|
EXPECT_CALL(mock_event_listener_,
|
||||||
|
OnExpirationUpdate(_, kPlaybackStartTime + kPlaybackDuration));
|
||||||
|
|
||||||
|
policy_engine_->SetLicense(license_);
|
||||||
|
policy_engine_->BeginDecryption();
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(PolicyEngineTest, PlaybackOk_Durations0) {
|
TEST_F(PolicyEngineTest, PlaybackOk_Durations0) {
|
||||||
License_Policy* policy = license_.mutable_policy();
|
License_Policy* policy = license_.mutable_policy();
|
||||||
policy->set_rental_duration_seconds(kDurationUnlimited);
|
policy->set_rental_duration_seconds(kDurationUnlimited);
|
||||||
@@ -1951,6 +2073,303 @@ TEST_F(PolicyEngineQueryTest, QuerySuccess_LicenseDuration0) {
|
|||||||
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(PolicyEngineQueryTest, QuerySuccess_PlaybackAndRental0) {
|
||||||
|
License_Policy* policy = license_.mutable_policy();
|
||||||
|
policy->set_rental_duration_seconds(kDurationUnlimited);
|
||||||
|
policy->set_playback_duration_seconds(kDurationUnlimited);
|
||||||
|
policy->set_license_duration_seconds(kLowDuration);
|
||||||
|
// Only |license_duration_seconds| set.
|
||||||
|
|
||||||
|
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 1))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kLowDuration - 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kLowDuration + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kLowDuration + 10));
|
||||||
|
|
||||||
|
policy_engine_->SetLicense(license_);
|
||||||
|
policy_engine_->BeginDecryption();
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
CdmQueryMap query_info;
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(10, ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(0, ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(PolicyEngineQueryTest, QuerySuccess_PlaybackAndLicense0_WithoutPlayback) {
|
||||||
|
License_Policy* policy = license_.mutable_policy();
|
||||||
|
policy->set_rental_duration_seconds(kRentalDuration);
|
||||||
|
policy->set_playback_duration_seconds(kDurationUnlimited);
|
||||||
|
policy->set_license_duration_seconds(kDurationUnlimited);
|
||||||
|
// Only |rental_duration_seconds| set.
|
||||||
|
|
||||||
|
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 1))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kRentalDuration - 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kRentalDuration - 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kRentalDuration + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kRentalDuration + 10));
|
||||||
|
|
||||||
|
policy_engine_->SetLicense(license_);
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
CdmQueryMap query_info;
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(10, ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(0, ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(PolicyEngineQueryTest, QuerySuccess_PlaybackAndLicense0_WithPlayback) {
|
||||||
|
License_Policy* policy = license_.mutable_policy();
|
||||||
|
policy->set_rental_duration_seconds(kRentalDuration);
|
||||||
|
policy->set_playback_duration_seconds(kDurationUnlimited);
|
||||||
|
policy->set_license_duration_seconds(kDurationUnlimited);
|
||||||
|
// Only |rental_duration_seconds| set.
|
||||||
|
|
||||||
|
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 1))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kPlaybackDuration - 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kPlaybackDuration - 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kPlaybackDuration + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kPlaybackDuration + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kRentalDuration + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kRentalDuration + 10));
|
||||||
|
|
||||||
|
policy_engine_->SetLicense(license_);
|
||||||
|
policy_engine_->BeginDecryption();
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
CdmQueryMap query_info;
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(kRentalDuration - kPlaybackDuration + 10,
|
||||||
|
ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(kRentalDuration - kPlaybackDuration - 10,
|
||||||
|
ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(0, ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(PolicyEngineQueryTest, QuerySuccess_RentalAndLicense0_WithoutPlayback) {
|
||||||
|
License_Policy* policy = license_.mutable_policy();
|
||||||
|
policy->set_rental_duration_seconds(kDurationUnlimited);
|
||||||
|
policy->set_playback_duration_seconds(kPlaybackDuration);
|
||||||
|
policy->set_license_duration_seconds(kDurationUnlimited);
|
||||||
|
// Only |playback_duration_seconds| set.
|
||||||
|
|
||||||
|
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 1))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kPlaybackDuration + 10))
|
||||||
|
.WillOnce(Return(kLicenseStartTime + kPlaybackDuration + 10));
|
||||||
|
|
||||||
|
policy_engine_->SetLicense(license_);
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
CdmQueryMap query_info;
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kPlaybackDuration,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kPlaybackDuration,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(PolicyEngineQueryTest, QuerySuccess_RentalAndLicense0_WithPlayback) {
|
||||||
|
License_Policy* policy = license_.mutable_policy();
|
||||||
|
policy->set_rental_duration_seconds(kDurationUnlimited);
|
||||||
|
policy->set_playback_duration_seconds(kPlaybackDuration);
|
||||||
|
policy->set_license_duration_seconds(kDurationUnlimited);
|
||||||
|
// Only |playback_duration_seconds| set.
|
||||||
|
|
||||||
|
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||||
|
.WillOnce(Return(kLicenseStartTime + 1))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime + 10))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime + 10))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime + kPlaybackDuration - 10))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime + kPlaybackDuration - 10))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime + kPlaybackDuration + 10))
|
||||||
|
.WillOnce(Return(kPlaybackStartTime + kPlaybackDuration + 10));
|
||||||
|
|
||||||
|
policy_engine_->SetLicense(license_);
|
||||||
|
policy_engine_->BeginDecryption();
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
CdmQueryMap query_info;
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kPlaybackDuration - 10,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_TRUE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(LLONG_MAX,
|
||||||
|
ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(10,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
|
||||||
|
policy_engine_->OnTimerEvent();
|
||||||
|
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kKeyId));
|
||||||
|
EXPECT_FALSE(policy_engine_->CanDecryptContent(kSomeRandomKeyId));
|
||||||
|
|
||||||
|
EXPECT_EQ(NO_ERROR, policy_engine_->Query(&query_info));
|
||||||
|
EXPECT_EQ(QUERY_VALUE_STREAMING, query_info[QUERY_KEY_LICENSE_TYPE]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_PLAY_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_FALSE, query_info[QUERY_KEY_PERSIST_ALLOWED]);
|
||||||
|
EXPECT_EQ(QUERY_VALUE_TRUE, query_info[QUERY_KEY_RENEW_ALLOWED]);
|
||||||
|
|
||||||
|
EXPECT_EQ(0,
|
||||||
|
ParseInt(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(0,
|
||||||
|
ParseInt(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]));
|
||||||
|
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(PolicyEngineQueryTest, QuerySuccess_Durations0) {
|
TEST_F(PolicyEngineQueryTest, QuerySuccess_Durations0) {
|
||||||
License_Policy* policy = license_.mutable_policy();
|
License_Policy* policy = license_.mutable_policy();
|
||||||
policy->set_rental_duration_seconds(kDurationUnlimited);
|
policy->set_rental_duration_seconds(kDurationUnlimited);
|
||||||
|
|||||||
Reference in New Issue
Block a user