54 lines
1.9 KiB
C++
54 lines
1.9 KiB
C++
// Copyright 2022 Google LLC. All Rights Reserved. This file and proprietary
|
|
// source code may only be used and distributed under the Widevine License
|
|
// Agreement.
|
|
#ifndef WVCDM_CORE_POLICY_TIMERS_V18_H_
|
|
#define WVCDM_CORE_POLICY_TIMERS_V18_H_
|
|
|
|
#include <inttypes.h>
|
|
|
|
#include "license_protocol.pb.h"
|
|
#include "policy_timers.h"
|
|
#include "wv_cdm_types.h"
|
|
#include "wv_class_utils.h"
|
|
|
|
namespace wvcdm {
|
|
// OEMCrypto v18 includes support for renewing licenses on load by using
|
|
// |initial_renewal_delay_base| and TimerDelayBase.
|
|
//
|
|
// Backward compatibility may be needed if
|
|
// * OEMCrypto has not been upgraded to v18
|
|
// * Licenses were persisted before the device was upgraded to v18
|
|
class PolicyTimersV18 : public PolicyTimers {
|
|
public:
|
|
PolicyTimersV18() = default;
|
|
WVCDM_DISALLOW_COPY_AND_MOVE(PolicyTimersV18);
|
|
|
|
~PolicyTimersV18() override {}
|
|
|
|
// UpdateLicense is used in handling a license response, a renewal response,
|
|
// or when restoring or releasing a persistent license.
|
|
// In a renewal the response may only contain policy fields that have
|
|
// changed. In this case an exact copy is not what we want to happen.
|
|
// |renewal_start_time_| is set to the time mentioned in the renewal
|
|
// response.
|
|
// UpdateLicense will return false if |license_start_time| is not
|
|
// present or playback is not allowed due to policy or timer duration
|
|
// expiration.
|
|
bool UpdateLicense(int64_t current_time,
|
|
const video_widevine::License& license) override;
|
|
|
|
// Call this on first decrypt to set the start of playback.
|
|
void BeginDecryption(int64_t current_time) override;
|
|
|
|
// Renewal related methods
|
|
bool HasRenewalDelayExpired(int64_t current_time) override;
|
|
|
|
private:
|
|
// Indicates whether this is an initial license or a renewal
|
|
bool license_renewal_ = false;
|
|
bool renew_on_first_decrypt_ = false;
|
|
bool can_renew_ = false;
|
|
}; // class PolicyTimersV18
|
|
} // namespace wvcdm
|
|
#endif // WVCDM_CORE_POLICY_TIMERS_V18_H_
|