Add CdmKeyStatus kKeyStatusUsableInFuture am: 69c8f488ca am: 6a329e6c9a
am: e6ba3ec747
Change-Id: Iee17c92d9a3f3fd390e05bb0324ba04861236210
This commit is contained in:
@@ -118,7 +118,11 @@ Status toStatus_1_0(Status_V1_2 status) {
|
||||
}
|
||||
}
|
||||
|
||||
KeyStatusType ConvertFromCdmKeyStatus(CdmKeyStatus keyStatus) {
|
||||
template<typename KST>
|
||||
KST ConvertFromCdmKeyStatus(CdmKeyStatus keyStatus);
|
||||
|
||||
template<>
|
||||
KeyStatusType ConvertFromCdmKeyStatus<KeyStatusType>(CdmKeyStatus keyStatus) {
|
||||
switch (keyStatus) {
|
||||
case wvcdm::kKeyStatusUsable:
|
||||
return KeyStatusType::USABLE;
|
||||
@@ -127,6 +131,7 @@ KeyStatusType ConvertFromCdmKeyStatus(CdmKeyStatus keyStatus) {
|
||||
case wvcdm::kKeyStatusOutputNotAllowed:
|
||||
return KeyStatusType::OUTPUTNOTALLOWED;
|
||||
case wvcdm::kKeyStatusPending:
|
||||
case wvcdm::kKeyStatusUsableInFuture:
|
||||
return KeyStatusType::STATUSPENDING;
|
||||
case wvcdm::kKeyStatusInternalError:
|
||||
default:
|
||||
@@ -134,6 +139,16 @@ KeyStatusType ConvertFromCdmKeyStatus(CdmKeyStatus keyStatus) {
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
KeyStatusType_V1_2 ConvertFromCdmKeyStatus<KeyStatusType_V1_2>(CdmKeyStatus keyStatus) {
|
||||
switch (keyStatus) {
|
||||
case wvcdm::kKeyStatusUsableInFuture:
|
||||
return KeyStatusType_V1_2::USABLEINFUTURE;
|
||||
default:
|
||||
return static_cast<KeyStatusType_V1_2>(ConvertFromCdmKeyStatus<KeyStatusType>(keyStatus));
|
||||
}
|
||||
}
|
||||
|
||||
HdcpLevel mapHdcpLevel(const std::string& level) {
|
||||
if (level == wvcdm::QUERY_VALUE_HDCP_V1)
|
||||
return HdcpLevel::HDCP_V1;
|
||||
@@ -1773,6 +1788,22 @@ Return<void> WVDrmPlugin::sendExpirationUpdate(
|
||||
return Void();
|
||||
}
|
||||
|
||||
template<>
|
||||
void WVDrmPlugin::_sendKeysChange(
|
||||
const hidl_vec<uint8_t>& sessionId,
|
||||
const hidl_vec<KeyStatus>& keyStatusList,
|
||||
bool hasNewUsableKey) {
|
||||
mListener->sendKeysChange(sessionId, keyStatusList, hasNewUsableKey);
|
||||
}
|
||||
|
||||
template<>
|
||||
void WVDrmPlugin::_sendKeysChange(
|
||||
const hidl_vec<uint8_t>& sessionId,
|
||||
const hidl_vec<KeyStatus_V1_2>& keyStatusList,
|
||||
bool hasNewUsableKey) {
|
||||
mListenerV1_2->sendKeysChange_1_2(sessionId, keyStatusList, hasNewUsableKey);
|
||||
}
|
||||
|
||||
Return<void> WVDrmPlugin::sendKeysChange(
|
||||
const hidl_vec<uint8_t>& sessionId,
|
||||
const hidl_vec<KeyStatus>& keyStatusList, bool hasNewUsableKey) {
|
||||
@@ -1817,24 +1848,37 @@ void WVDrmPlugin::OnSessionRenewalNeeded(const CdmSessionId& cdmSessionId) {
|
||||
void WVDrmPlugin::OnSessionKeysChange(const CdmSessionId& cdmSessionId,
|
||||
const CdmKeyStatusMap& cdmKeysStatus,
|
||||
bool hasNewUsableKey) {
|
||||
if (mListenerV1_2 != NULL) {
|
||||
_OnSessionKeysChange<KeyStatus_V1_2>(cdmSessionId, cdmKeysStatus, hasNewUsableKey);
|
||||
} else if (mListener != NULL) {
|
||||
_OnSessionKeysChange<KeyStatus>(cdmSessionId, cdmKeysStatus, hasNewUsableKey);
|
||||
} else {
|
||||
ALOGE("Null event listener, event not sent");
|
||||
}
|
||||
}
|
||||
|
||||
template<typename KS>
|
||||
void WVDrmPlugin::_OnSessionKeysChange(const CdmSessionId& cdmSessionId,
|
||||
const CdmKeyStatusMap& cdmKeysStatus,
|
||||
bool hasNewUsableKey) {
|
||||
bool expired = false;
|
||||
std::vector<KeyStatus> keyStatusList;
|
||||
std::vector<KS> keyStatusList;
|
||||
for (CdmKeyStatusMap::const_iterator it = cdmKeysStatus.begin();
|
||||
it != cdmKeysStatus.end(); ++it) {
|
||||
const KeyId& keyId = it->first;
|
||||
const CdmKeyStatus cdmKeyStatus = it->second;
|
||||
if (cdmKeyStatus == wvcdm::kKeyStatusExpired) expired = true;
|
||||
|
||||
KeyStatus keyStatus;
|
||||
KS keyStatus;
|
||||
keyStatus.keyId = toHidlVec(StrToVector(keyId));
|
||||
keyStatus.type = ConvertFromCdmKeyStatus(cdmKeyStatus);
|
||||
keyStatus.type = ConvertFromCdmKeyStatus<decltype(keyStatus.type)>(cdmKeyStatus);
|
||||
keyStatusList.push_back(keyStatus);
|
||||
}
|
||||
|
||||
const std::vector<uint8_t> sessionId = StrToVector(cdmSessionId);
|
||||
const hidl_vec<uint8_t> data; // data is ignored
|
||||
const hidl_vec<uint8_t> sid = toHidlVec(sessionId);
|
||||
sendKeysChange(sid, toHidlVec(keyStatusList), hasNewUsableKey);
|
||||
_sendKeysChange<KS>(sid, toHidlVec(keyStatusList), hasNewUsableKey);
|
||||
// For backward compatibility.
|
||||
if (expired) {
|
||||
sendEvent(EventType::KEY_EXPIRED, sid, data);
|
||||
|
||||
Reference in New Issue
Block a user