Move functionality to policy_timer.
[ Merge of http://go/wvgerrit/164277 ] No functional changes are made in this CL. policy_timer_v16 and policy_timer_v15 derive from policy_timer. We have removed support for OEMCrypto v15. policy_timer_v15 has also been removed. This allows us to move functionality from policy_timer_v16 to policy_timer class. This will ease subsequent renew on license load functionality. Bug: 256038127 Test: Luci tests Change-Id: Iebd588237edd02b30a820c4d9d57ce041c26964e
This commit is contained in:
@@ -24,6 +24,28 @@ void PolicyTimers::DecryptionEvent(int64_t current_time) {
|
||||
last_playback_time_ = current_time;
|
||||
}
|
||||
|
||||
void PolicyTimers::RestorePlaybackTimes(int64_t current_time,
|
||||
int64_t playback_start_time,
|
||||
int64_t last_playback_time,
|
||||
int64_t /* grace_period_end_time */) {
|
||||
playback_start_time_ = (playback_start_time > 0) ? playback_start_time : 0;
|
||||
last_playback_time_ = (last_playback_time > 0) ? last_playback_time : 0;
|
||||
|
||||
const int64_t expiry_time = GetExpiryTime(
|
||||
current_time, /* ignore_soft_enforce_playback_duration */ true);
|
||||
was_expired_on_load_ =
|
||||
expiry_time != NEVER_EXPIRES && expiry_time < current_time;
|
||||
}
|
||||
|
||||
int64_t PolicyTimers::GetLicenseOrRentalOrPlaybackDurationRemaining(
|
||||
int64_t current_time) {
|
||||
const int64_t expiry_time = GetExpiryTime(
|
||||
current_time, /* ignore_soft_enforce_playback_duration */ false);
|
||||
if (expiry_time == NEVER_EXPIRES) return LLONG_MAX;
|
||||
if (expiry_time < current_time) return 0;
|
||||
return expiry_time - current_time;
|
||||
}
|
||||
|
||||
int64_t PolicyTimers::GetPlaybackDurationRemaining(int64_t current_time) {
|
||||
const int64_t playback_duration = policy_.playback_duration_seconds();
|
||||
if (playback_duration == 0) return LLONG_MAX;
|
||||
@@ -85,12 +107,6 @@ bool PolicyTimers::UpdateExpirationTime(int64_t current_time,
|
||||
return has_expiry_time_been_updated;
|
||||
}
|
||||
|
||||
bool PolicyTimers::HasRenewalDelayExpired(int64_t current_time) {
|
||||
return policy_.can_renew() && (policy_.renewal_delay_seconds() > 0) &&
|
||||
(license_start_time_ + policy_.renewal_delay_seconds() <=
|
||||
current_time);
|
||||
}
|
||||
|
||||
bool PolicyTimers::HasRenewalRetryIntervalExpired(int64_t current_time) {
|
||||
return policy_.can_renew() &&
|
||||
(policy_.renewal_retry_interval_seconds() > 0) &&
|
||||
@@ -107,4 +123,61 @@ bool PolicyTimers::HasRenewalRecoveryDurationExpired(int64_t current_time) {
|
||||
current_time);
|
||||
}
|
||||
|
||||
int64_t PolicyTimers::GetExpiryTime(
|
||||
int64_t current_time, bool ignore_soft_enforce_playback_duration) {
|
||||
const int64_t rental_expiry_time = GetRentalExpiryTime(current_time);
|
||||
const int64_t playback_expiry_time = GetPlaybackExpiryTime(
|
||||
current_time, ignore_soft_enforce_playback_duration);
|
||||
|
||||
if (rental_expiry_time == NEVER_EXPIRES) return playback_expiry_time;
|
||||
if (playback_expiry_time == NEVER_EXPIRES) return rental_expiry_time;
|
||||
|
||||
return std::min(rental_expiry_time, playback_expiry_time);
|
||||
}
|
||||
|
||||
// For the policy time fields checked in the following methods, a value of 0
|
||||
// (UNLIMITED_DURATION) indicates that there is no limit to the duration.
|
||||
// If the fields are UNLIMITED_DURATION then these methods will return
|
||||
// NEVER_EXPIRES.
|
||||
int64_t PolicyTimers::GetRentalExpiryTime(int64_t current_time) {
|
||||
if (policy_.rental_duration_seconds() == UNLIMITED_DURATION)
|
||||
return NEVER_EXPIRES;
|
||||
|
||||
if (HasPlaybackStarted(current_time) &&
|
||||
policy_.soft_enforce_rental_duration())
|
||||
return NEVER_EXPIRES;
|
||||
|
||||
return license_start_time_ + policy_.rental_duration_seconds();
|
||||
}
|
||||
|
||||
int64_t PolicyTimers::GetPlaybackExpiryTime(
|
||||
int64_t current_time, bool ignore_soft_enforce_playback_duration) {
|
||||
if (policy_.playback_duration_seconds() == UNLIMITED_DURATION)
|
||||
return NEVER_EXPIRES;
|
||||
|
||||
if (!HasPlaybackStarted(current_time)) return NEVER_EXPIRES;
|
||||
|
||||
if (was_expired_on_load_) return current_time;
|
||||
|
||||
if (!ignore_soft_enforce_playback_duration &&
|
||||
policy_.soft_enforce_playback_duration())
|
||||
return NEVER_EXPIRES;
|
||||
|
||||
return playback_start_time_ + policy_.playback_duration_seconds();
|
||||
}
|
||||
|
||||
int64_t PolicyTimers::GetRentalDurationRemaining(int64_t current_time) {
|
||||
if (HasLicenseOrRentalOrPlaybackDurationExpired(current_time)) return 0;
|
||||
const int64_t rental_expiry_time = GetRentalExpiryTime(current_time);
|
||||
if (rental_expiry_time == NEVER_EXPIRES) return LLONG_MAX;
|
||||
if (rental_expiry_time < current_time) return 0;
|
||||
return rental_expiry_time - current_time;
|
||||
}
|
||||
|
||||
bool PolicyTimers::HasRentalOrPlaybackDurationExpired(int64_t current_time) {
|
||||
const int64_t expiry_time = GetExpiryTime(
|
||||
current_time, /* ignore_soft_enforce_playback_duration */ false);
|
||||
return expiry_time != NEVER_EXPIRES && expiry_time <= current_time;
|
||||
}
|
||||
|
||||
} // namespace wvcdm
|
||||
|
||||
@@ -42,88 +42,10 @@ void PolicyTimersV16::BeginDecryption(int64_t current_time) {
|
||||
}
|
||||
}
|
||||
|
||||
void PolicyTimersV16::RestorePlaybackTimes(
|
||||
int64_t current_time, int64_t playback_start_time,
|
||||
int64_t last_playback_time, int64_t /* grace_period_end_time */) {
|
||||
playback_start_time_ = (playback_start_time > 0) ? playback_start_time : 0;
|
||||
last_playback_time_ = (last_playback_time > 0) ? last_playback_time : 0;
|
||||
|
||||
const int64_t expiry_time = GetExpiryTime(
|
||||
current_time, /* ignore_soft_enforce_playback_duration */ true);
|
||||
was_expired_on_load_ =
|
||||
expiry_time != NEVER_EXPIRES && expiry_time < current_time;
|
||||
}
|
||||
|
||||
bool PolicyTimersV16::HasRentalOrPlaybackDurationExpired(int64_t current_time) {
|
||||
const int64_t expiry_time = GetExpiryTime(
|
||||
current_time, /* ignore_soft_enforce_playback_duration */ false);
|
||||
return expiry_time != NEVER_EXPIRES && expiry_time <= current_time;
|
||||
}
|
||||
|
||||
int64_t PolicyTimersV16::GetLicenseOrRentalOrPlaybackDurationRemaining(
|
||||
int64_t current_time) {
|
||||
const int64_t expiry_time = GetExpiryTime(
|
||||
current_time, /* ignore_soft_enforce_playback_duration */ false);
|
||||
if (expiry_time == NEVER_EXPIRES) return LLONG_MAX;
|
||||
if (expiry_time < current_time) return 0;
|
||||
return expiry_time - current_time;
|
||||
}
|
||||
|
||||
int64_t PolicyTimersV16::GetRentalDurationRemaining(int64_t current_time) {
|
||||
if (HasLicenseOrRentalOrPlaybackDurationExpired(current_time)) return 0;
|
||||
const int64_t rental_expiry_time = GetRentalExpiryTime(current_time);
|
||||
if (rental_expiry_time == NEVER_EXPIRES) return LLONG_MAX;
|
||||
if (rental_expiry_time < current_time) return 0;
|
||||
return rental_expiry_time - current_time;
|
||||
}
|
||||
|
||||
bool PolicyTimersV16::HasRenewalDelayExpired(int64_t current_time) {
|
||||
return policy_.can_renew() && (policy_.renewal_delay_seconds() > 0) &&
|
||||
(renewal_start_time_ + policy_.renewal_delay_seconds() <=
|
||||
current_time);
|
||||
}
|
||||
|
||||
// For the policy time fields checked in the following methods, a value of 0
|
||||
// (UNLIMITED_DURATION) indicates that there is no limit to the duration.
|
||||
// If the fields are UNLIMITED_DURATION then these methods will return
|
||||
// NEVER_EXPIRES.
|
||||
int64_t PolicyTimersV16::GetRentalExpiryTime(int64_t current_time) {
|
||||
if (policy_.rental_duration_seconds() == UNLIMITED_DURATION)
|
||||
return NEVER_EXPIRES;
|
||||
|
||||
if (HasPlaybackStarted(current_time) &&
|
||||
policy_.soft_enforce_rental_duration())
|
||||
return NEVER_EXPIRES;
|
||||
|
||||
return license_start_time_ + policy_.rental_duration_seconds();
|
||||
}
|
||||
|
||||
int64_t PolicyTimersV16::GetPlaybackExpiryTime(
|
||||
int64_t current_time, bool ignore_soft_enforce_playback_duration) {
|
||||
if (policy_.playback_duration_seconds() == UNLIMITED_DURATION)
|
||||
return NEVER_EXPIRES;
|
||||
|
||||
if (!HasPlaybackStarted(current_time)) return NEVER_EXPIRES;
|
||||
|
||||
if (was_expired_on_load_) return current_time;
|
||||
|
||||
if (!ignore_soft_enforce_playback_duration &&
|
||||
policy_.soft_enforce_playback_duration())
|
||||
return NEVER_EXPIRES;
|
||||
|
||||
return playback_start_time_ + policy_.playback_duration_seconds();
|
||||
}
|
||||
|
||||
int64_t PolicyTimersV16::GetExpiryTime(
|
||||
int64_t current_time, bool ignore_soft_enforce_playback_duration) {
|
||||
const int64_t rental_expiry_time = GetRentalExpiryTime(current_time);
|
||||
const int64_t playback_expiry_time = GetPlaybackExpiryTime(
|
||||
current_time, ignore_soft_enforce_playback_duration);
|
||||
|
||||
if (rental_expiry_time == NEVER_EXPIRES) return playback_expiry_time;
|
||||
if (playback_expiry_time == NEVER_EXPIRES) return rental_expiry_time;
|
||||
|
||||
return std::min(rental_expiry_time, playback_expiry_time);
|
||||
}
|
||||
|
||||
} // namespace wvcdm
|
||||
|
||||
Reference in New Issue
Block a user