Source release v2.1.4-0-804 + third_party libs
Change-Id: I1db8582efba613fa8a2b91a9c2697c5dfb2a8abf
This commit is contained in:
@@ -138,8 +138,7 @@ TEST_F(PolicyEngineTest, PlaybackFailed_CanPlayFalse) {
|
||||
policy->set_can_play(false);
|
||||
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5));
|
||||
.WillOnce(Return(kLicenseStartTime + 1));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
EXPECT_FALSE(policy_engine_->can_decrypt());
|
||||
@@ -163,8 +162,8 @@ TEST_F(PolicyEngineTest, PlaybackFails_RentalDurationExpired) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration + 1));
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
@@ -220,8 +219,8 @@ TEST_F(PolicyEngineTest, PlaybackFails_LicenseDurationExpired) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration))
|
||||
.WillOnce(Return(kLicenseStartTime + 1 + min_duration));
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
@@ -248,8 +247,8 @@ TEST_F(PolicyEngineTest, PlaybackFails_ExpiryBeforeRenewalDelay) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration))
|
||||
.WillOnce(Return(kLicenseStartTime + 1 + min_duration));
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
@@ -277,10 +276,10 @@ TEST_F(PolicyEngineTest, PlaybackOk_RentalDuration0) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay))
|
||||
.WillOnce(Return(kLicenseStartTime + 1 + license_renewal_delay))
|
||||
.WillOnce(Return(kLicenseStartTime + kStreamingLicenseDuration))
|
||||
.WillOnce(Return(kLicenseStartTime + 1 + kStreamingLicenseDuration));
|
||||
.WillOnce(Return(kLicenseStartTime + kStreamingLicenseDuration - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + kStreamingLicenseDuration));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
@@ -357,8 +356,8 @@ TEST_F(PolicyEngineTest, PlaybackOk_LicenseDuration0) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration))
|
||||
.WillOnce(Return(kLicenseStartTime + 1 + min_duration));
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
@@ -387,8 +386,8 @@ TEST_F(PolicyEngineTest, PlaybackOk_Durations0) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + kHighDuration))
|
||||
.WillOnce(Return(kLicenseStartTime + kHighDuration + 10));
|
||||
.WillOnce(Return(kLicenseStartTime + kHighDuration - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + kHighDuration));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
@@ -406,6 +405,29 @@ TEST_F(PolicyEngineTest, PlaybackOk_Durations0) {
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
}
|
||||
|
||||
TEST_F(PolicyEngineTest, PlaybackOk_LicenseWithFutureStartTime) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime - 100))
|
||||
.WillOnce(Return(kLicenseStartTime - 50))
|
||||
.WillOnce(Return(kLicenseStartTime))
|
||||
.WillOnce(Return(kLicenseStartTime + 10));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
bool event_occurred;
|
||||
CdmEventType event;
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
EXPECT_FALSE(policy_engine_->can_decrypt());
|
||||
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
|
||||
policy_engine_->BeginDecryption();
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
}
|
||||
|
||||
TEST_F(PolicyEngineTest, PlaybackFailed_CanRenewFalse) {
|
||||
License_Policy* policy = license_.mutable_policy();
|
||||
policy->set_can_renew(false);
|
||||
@@ -480,6 +502,49 @@ TEST_F(PolicyEngineTest, PlaybackOk_RenewSuccess) {
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
}
|
||||
|
||||
TEST_F(PolicyEngineTest, PlaybackOk_RenewSuccess_WithFutureStartTime) {
|
||||
int64_t license_renewal_delay =
|
||||
GetLicenseRenewalDelay(kStreamingLicenseDuration);
|
||||
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay - 15))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay + 10))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay + 20))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay + 30))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay + 60));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
policy_engine_->BeginDecryption();
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
|
||||
bool event_occurred;
|
||||
CdmEventType event;
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_TRUE(event_occurred);
|
||||
EXPECT_EQ(LICENSE_RENEWAL_NEEDED_EVENT, event);
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
|
||||
license_.set_license_start_time(kLicenseStartTime + license_renewal_delay +
|
||||
50);
|
||||
LicenseIdentification* id = license_.mutable_id();
|
||||
id->set_version(2);
|
||||
policy_engine_->UpdateLicense(license_);
|
||||
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
EXPECT_FALSE(policy_engine_->can_decrypt());
|
||||
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
}
|
||||
|
||||
TEST_F(PolicyEngineTest, PlaybackFailed_RenewFailedVersionNotUpdated) {
|
||||
int64_t license_renewal_delay =
|
||||
GetLicenseRenewalDelay(kStreamingLicenseDuration);
|
||||
@@ -790,7 +855,7 @@ TEST_F(PolicyEngineTest, QuerySuccess) {
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
ss.clear();
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 99, remaining_time);
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 100, remaining_time);
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kPlaybackDuration, remaining_time);
|
||||
@@ -816,7 +881,7 @@ TEST_F(PolicyEngineTest, QuerySuccess_PlaybackNotBegun) {
|
||||
std::istringstream ss;
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 99, remaining_time);
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 100, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
@@ -832,7 +897,7 @@ TEST_F(PolicyEngineTest, QuerySuccess_PlaybackNotBegun) {
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 199, remaining_time);
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 200, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
@@ -861,7 +926,7 @@ TEST_F(PolicyEngineTest, QuerySuccess_PlaybackBegun) {
|
||||
std::istringstream ss;
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 49, remaining_time);
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 50, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
@@ -885,7 +950,7 @@ TEST_F(PolicyEngineTest, QuerySuccess_PlaybackBegun) {
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 199, remaining_time);
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 200, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
@@ -931,7 +996,7 @@ TEST_F(PolicyEngineTest, QuerySuccess_Offline) {
|
||||
std::istringstream ss;
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kOfflineLicenseDuration - 299, remaining_time);
|
||||
EXPECT_EQ(kOfflineLicenseDuration - 300, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
@@ -952,8 +1017,7 @@ TEST_F(PolicyEngineTest, QuerySuccess_CanPlayFalse) {
|
||||
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 100))
|
||||
.WillOnce(Return(kLicenseStartTime + 200));
|
||||
.WillOnce(Return(kLicenseStartTime + 100));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
EXPECT_FALSE(policy_engine_->can_decrypt());
|
||||
@@ -977,7 +1041,7 @@ TEST_F(PolicyEngineTest, QuerySuccess_CanPlayFalse) {
|
||||
std::istringstream ss;
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kOfflineLicenseDuration - 199, remaining_time);
|
||||
EXPECT_EQ(kOfflineLicenseDuration - 100, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
@@ -995,8 +1059,8 @@ TEST_F(PolicyEngineTest, QuerySuccess_RentalDurationExpired) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration + 5));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
@@ -1076,7 +1140,7 @@ TEST_F(PolicyEngineTest, QuerySuccess_PlaybackDurationExpired) {
|
||||
std::istringstream ss;
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kHighDuration - 10004 - min_duration, remaining_time);
|
||||
EXPECT_EQ(kHighDuration - 10005 - min_duration, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
@@ -1092,9 +1156,9 @@ TEST_F(PolicyEngineTest, QuerySuccess_LicenseDurationExpired) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration))
|
||||
.WillOnce(Return(kLicenseStartTime + 1 + min_duration))
|
||||
.WillOnce(Return(kLicenseStartTime + 5 + min_duration));
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration + 5));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
@@ -1140,11 +1204,11 @@ TEST_F(PolicyEngineTest, QuerySuccess_RentalDuration0) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay))
|
||||
.WillOnce(Return(kLicenseStartTime + 1 + license_renewal_delay))
|
||||
.WillOnce(Return(kLicenseStartTime + kStreamingLicenseDuration - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + kStreamingLicenseDuration))
|
||||
.WillOnce(Return(kLicenseStartTime + 1 + kStreamingLicenseDuration))
|
||||
.WillOnce(Return(kLicenseStartTime + 5 + kStreamingLicenseDuration));
|
||||
.WillOnce(Return(kLicenseStartTime + kStreamingLicenseDuration + 5));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
@@ -1275,9 +1339,9 @@ TEST_F(PolicyEngineTest, QuerySuccess_LicenseDuration0) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration - 1))
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration))
|
||||
.WillOnce(Return(kLicenseStartTime + 1 + min_duration))
|
||||
.WillOnce(Return(kLicenseStartTime + 5 + min_duration));
|
||||
.WillOnce(Return(kLicenseStartTime + min_duration + 5));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
@@ -1325,7 +1389,7 @@ TEST_F(PolicyEngineTest, QuerySuccess_Durations0) {
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + kHighDuration))
|
||||
.WillOnce(Return(kLicenseStartTime + kHighDuration + 10))
|
||||
.WillOnce(Return(kLicenseStartTime + kHighDuration + 9))
|
||||
.WillOnce(Return(kLicenseStartTime + kHighDuration + 15));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
@@ -1361,4 +1425,213 @@ TEST_F(PolicyEngineTest, QuerySuccess_Durations0) {
|
||||
EXPECT_EQ(LLONG_MAX, remaining_time);
|
||||
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||
}
|
||||
|
||||
TEST_F(PolicyEngineTest, QuerySuccess_LicenseWithFutureStartTime) {
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime - 100))
|
||||
.WillOnce(Return(kLicenseStartTime - 50))
|
||||
.WillOnce(Return(kLicenseStartTime - 10))
|
||||
.WillOnce(Return(kLicenseStartTime))
|
||||
.WillOnce(Return(kLicenseStartTime + 10))
|
||||
.WillOnce(Return(kLicenseStartTime + 25));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
bool event_occurred;
|
||||
CdmEventType event;
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
EXPECT_FALSE(policy_engine_->can_decrypt());
|
||||
|
||||
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]);
|
||||
|
||||
int64_t remaining_time;
|
||||
std::istringstream ss;
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kStreamingLicenseDuration, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kPlaybackDuration, remaining_time);
|
||||
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||
|
||||
EXPECT_FALSE(policy_engine_->can_decrypt());
|
||||
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
policy_engine_->BeginDecryption();
|
||||
|
||||
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]);
|
||||
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 25, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kPlaybackDuration - 15, remaining_time);
|
||||
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||
}
|
||||
|
||||
TEST_F(PolicyEngineTest, QuerySuccess_Renew) {
|
||||
int64_t license_renewal_delay =
|
||||
GetLicenseRenewalDelay(kStreamingLicenseDuration);
|
||||
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay - 25))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay + 10))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay + 20))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay +
|
||||
kLicenseRenewalRetryInterval + 10))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay +
|
||||
kLicenseRenewalRetryInterval + 15));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
policy_engine_->BeginDecryption();
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
|
||||
bool event_occurred;
|
||||
CdmEventType event;
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_TRUE(event_occurred);
|
||||
EXPECT_EQ(LICENSE_RENEWAL_NEEDED_EVENT, event);
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
|
||||
license_.set_license_start_time(kLicenseStartTime + license_renewal_delay +
|
||||
15);
|
||||
LicenseIdentification* id = license_.mutable_id();
|
||||
id->set_version(2);
|
||||
policy_engine_->UpdateLicense(license_);
|
||||
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
|
||||
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]);
|
||||
|
||||
int64_t remaining_time;
|
||||
std::istringstream ss;
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kStreamingLicenseDuration - kLicenseRenewalRetryInterval,
|
||||
remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kPlaybackDuration + 5 - license_renewal_delay -
|
||||
kLicenseRenewalRetryInterval - 15,
|
||||
remaining_time);
|
||||
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||
}
|
||||
|
||||
TEST_F(PolicyEngineTest, QuerySuccess_RenewWithFutureStartTime) {
|
||||
int64_t license_renewal_delay =
|
||||
GetLicenseRenewalDelay(kStreamingLicenseDuration);
|
||||
|
||||
EXPECT_CALL(*mock_clock_, GetCurrentTime())
|
||||
.WillOnce(Return(kLicenseStartTime + 1))
|
||||
.WillOnce(Return(kLicenseStartTime + 5))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay - 25))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay + 10))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay + 20))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay +
|
||||
kLicenseRenewalRetryInterval + 10))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay +
|
||||
kLicenseRenewalRetryInterval + 20))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay +
|
||||
kLicenseRenewalRetryInterval + 30))
|
||||
.WillOnce(Return(kLicenseStartTime + license_renewal_delay +
|
||||
kLicenseRenewalRetryInterval + 40));
|
||||
|
||||
policy_engine_->SetLicense(license_);
|
||||
|
||||
policy_engine_->BeginDecryption();
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
|
||||
bool event_occurred;
|
||||
CdmEventType event;
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_TRUE(event_occurred);
|
||||
EXPECT_EQ(LICENSE_RENEWAL_NEEDED_EVENT, event);
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
|
||||
license_.set_license_start_time(kLicenseStartTime + license_renewal_delay +
|
||||
kLicenseRenewalRetryInterval + 20);
|
||||
LicenseIdentification* id = license_.mutable_id();
|
||||
id->set_version(2);
|
||||
policy_engine_->UpdateLicense(license_);
|
||||
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
EXPECT_FALSE(policy_engine_->can_decrypt());
|
||||
|
||||
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]);
|
||||
|
||||
int64_t remaining_time;
|
||||
std::istringstream ss;
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kStreamingLicenseDuration, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kPlaybackDuration + 5 - license_renewal_delay -
|
||||
kLicenseRenewalRetryInterval - 20,
|
||||
remaining_time);
|
||||
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||
|
||||
policy_engine_->OnTimerEvent(&event_occurred, &event);
|
||||
EXPECT_FALSE(event_occurred);
|
||||
EXPECT_TRUE(policy_engine_->can_decrypt());
|
||||
|
||||
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]);
|
||||
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_LICENSE_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kStreamingLicenseDuration - 20, remaining_time);
|
||||
ss.clear();
|
||||
ss.str(query_info[QUERY_KEY_PLAYBACK_DURATION_REMAINING]);
|
||||
ss >> remaining_time;
|
||||
EXPECT_EQ(kPlaybackDuration + 5 - license_renewal_delay -
|
||||
kLicenseRenewalRetryInterval - 40,
|
||||
remaining_time);
|
||||
EXPECT_EQ(kRenewalServerUrl, query_info[QUERY_KEY_RENEWAL_SERVER_URL]);
|
||||
}
|
||||
|
||||
} // wvcdm
|
||||
|
||||
Reference in New Issue
Block a user