Change keys_ to key_statuses_
Merge from Widevine repo of http://go/wvgerrit/59980 This CL addresses review comments from http://go/ag/4454369. Change-Id: I5fafafef9a2e9ccbeac3f8d18c3d6335e2de61e8
This commit is contained in:
@@ -24,7 +24,7 @@ class LicenseKeys {
|
||||
LicenseKeys() {}
|
||||
virtual ~LicenseKeys() { Clear(); }
|
||||
|
||||
virtual bool Empty() { return keys_.empty(); }
|
||||
virtual bool Empty() { return key_statuses_.empty(); }
|
||||
|
||||
// Returns true if the key is a content key (not an operator session key)
|
||||
virtual bool IsContentKey(const KeyId& key_id);
|
||||
@@ -75,11 +75,12 @@ class LicenseKeys {
|
||||
void Clear();
|
||||
|
||||
bool is_initialized_;
|
||||
// |keys_| can hold either content key statuses, or entitlement key statuses.
|
||||
std::map<KeyId, LicenseKeyStatus*> keys_;
|
||||
// |key_statuses_| can hold either content key statuses, or entitlement key
|
||||
// statuses.
|
||||
std::map<KeyId, LicenseKeyStatus*> key_statuses_;
|
||||
// |content_keyid_to_entitlement_key_id_| maps a content key id to an
|
||||
// entitlement_key_id. The resulting key id can be used to obtain the current
|
||||
// key status from |keys_| when using entitlement key licensing.
|
||||
// key status from |key_statuses_| when using entitlement key licensing.
|
||||
std::map<KeyId, KeyId> content_keyid_to_entitlement_key_id_;
|
||||
|
||||
CORE_DISALLOW_COPY_AND_ASSIGN(LicenseKeys);
|
||||
|
||||
@@ -66,8 +66,8 @@ VideoResolutionConstraint* GetConstraintForRes(
|
||||
namespace wvcdm {
|
||||
|
||||
bool LicenseKeys::IsContentKey(const std::string& key_id) {
|
||||
if (keys_.count(key_id) > 0) {
|
||||
return keys_[key_id]->IsContentKey();
|
||||
if (key_statuses_.count(key_id) > 0) {
|
||||
return key_statuses_[key_id]->IsContentKey();
|
||||
} else if (content_keyid_to_entitlement_key_id_.count(key_id) > 0) {
|
||||
return true;
|
||||
} else {
|
||||
@@ -76,11 +76,11 @@ bool LicenseKeys::IsContentKey(const std::string& key_id) {
|
||||
}
|
||||
|
||||
bool LicenseKeys::CanDecryptContent(const std::string& key_id) {
|
||||
if (keys_.count(key_id) > 0) {
|
||||
return keys_[key_id]->CanDecryptContent();
|
||||
if (key_statuses_.count(key_id) > 0) {
|
||||
return key_statuses_[key_id]->CanDecryptContent();
|
||||
} else if (content_keyid_to_entitlement_key_id_.count(key_id) > 0) {
|
||||
if (keys_.count(content_keyid_to_entitlement_key_id_[key_id]) > 0) {
|
||||
return keys_[content_keyid_to_entitlement_key_id_[key_id]]
|
||||
if (key_statuses_.count(content_keyid_to_entitlement_key_id_[key_id]) > 0) {
|
||||
return key_statuses_[content_keyid_to_entitlement_key_id_[key_id]]
|
||||
->CanDecryptContent();
|
||||
}
|
||||
return false;
|
||||
@@ -91,11 +91,11 @@ bool LicenseKeys::CanDecryptContent(const std::string& key_id) {
|
||||
|
||||
bool LicenseKeys::GetAllowedUsage(const KeyId& key_id,
|
||||
CdmKeyAllowedUsage* allowed_usage) {
|
||||
if (keys_.count(key_id) > 0) {
|
||||
return keys_[key_id]->GetAllowedUsage(allowed_usage);
|
||||
if (key_statuses_.count(key_id) > 0) {
|
||||
return key_statuses_[key_id]->GetAllowedUsage(allowed_usage);
|
||||
} else if (content_keyid_to_entitlement_key_id_.count(key_id) > 0) {
|
||||
if (keys_.count(content_keyid_to_entitlement_key_id_[key_id]) > 0) {
|
||||
return keys_[content_keyid_to_entitlement_key_id_[key_id]]
|
||||
if (key_statuses_.count(content_keyid_to_entitlement_key_id_[key_id]) > 0) {
|
||||
return key_statuses_[content_keyid_to_entitlement_key_id_[key_id]]
|
||||
->CanDecryptContent();
|
||||
}
|
||||
return false;
|
||||
@@ -109,7 +109,8 @@ bool LicenseKeys::ApplyStatusChange(CdmKeyStatus new_status,
|
||||
bool keys_changed = false;
|
||||
bool newly_usable = false;
|
||||
*new_usable_keys = false;
|
||||
for (LicenseKeyStatusIterator it = keys_.begin(); it != keys_.end(); ++it) {
|
||||
for (LicenseKeyStatusIterator it = key_statuses_.begin();
|
||||
it != key_statuses_.end(); ++it) {
|
||||
bool usable;
|
||||
if (it->second->ApplyStatusChange(new_status, &usable)) {
|
||||
newly_usable |= usable;
|
||||
@@ -121,15 +122,16 @@ bool LicenseKeys::ApplyStatusChange(CdmKeyStatus new_status,
|
||||
}
|
||||
|
||||
CdmKeyStatus LicenseKeys::GetKeyStatus(const KeyId& key_id) {
|
||||
if (keys_.count(key_id) == 0) {
|
||||
if (key_statuses_.count(key_id) == 0) {
|
||||
return kKeyStatusKeyUnknown;
|
||||
}
|
||||
return keys_[key_id]->GetKeyStatus();
|
||||
return key_statuses_[key_id]->GetKeyStatus();
|
||||
}
|
||||
|
||||
void LicenseKeys::ExtractKeyStatuses(CdmKeyStatusMap* content_keys) {
|
||||
content_keys->clear();
|
||||
for (LicenseKeyStatusIterator it = keys_.begin(); it != keys_.end(); ++it) {
|
||||
for (LicenseKeyStatusIterator it = key_statuses_.begin();
|
||||
it != key_statuses_.end(); ++it) {
|
||||
if (it->second->IsContentKey()) {
|
||||
const KeyId key_id = it->first;
|
||||
CdmKeyStatus key_status = it->second->GetKeyStatus();
|
||||
@@ -139,8 +141,8 @@ void LicenseKeys::ExtractKeyStatuses(CdmKeyStatusMap* content_keys) {
|
||||
}
|
||||
|
||||
bool LicenseKeys::MeetsConstraints(const KeyId& key_id) {
|
||||
if (keys_.count(key_id) > 0) {
|
||||
return keys_[key_id]->MeetsConstraints();
|
||||
if (key_statuses_.count(key_id) > 0) {
|
||||
return key_statuses_[key_id]->MeetsConstraints();
|
||||
} else {
|
||||
// If a Key ID is unknown to us, we don't know of any constraints for it,
|
||||
// so never block decryption.
|
||||
@@ -150,7 +152,8 @@ bool LicenseKeys::MeetsConstraints(const KeyId& key_id) {
|
||||
|
||||
void LicenseKeys::ApplyConstraints(
|
||||
uint32_t new_resolution, CryptoSession::HdcpCapability new_hdcp_level) {
|
||||
for (LicenseKeyStatusIterator i = keys_.begin(); i != keys_.end(); ++i) {
|
||||
for (LicenseKeyStatusIterator i = key_statuses_.begin();
|
||||
i != key_statuses_.end(); ++i) {
|
||||
i->second->ApplyConstraints(new_resolution, new_hdcp_level);
|
||||
}
|
||||
}
|
||||
@@ -163,7 +166,7 @@ void LicenseKeys::SetFromLicense(const video_widevine::License& license) {
|
||||
key.type() == KeyContainer::OPERATOR_SESSION ||
|
||||
key.type() == KeyContainer::ENTITLEMENT)) {
|
||||
const KeyId& key_id = key.id();
|
||||
keys_[key_id] = new LicenseKeyStatus(key);
|
||||
key_statuses_[key_id] = new LicenseKeyStatus(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -175,8 +178,8 @@ void LicenseKeys::SetEntitledKeys(
|
||||
key != keys.end(); key++) {
|
||||
// Check to see if we have an entitlement key for this content key.
|
||||
std::map<KeyId, LicenseKeyStatus*>::iterator entitlement =
|
||||
keys_.find(key->entitlement_key_id());
|
||||
if (entitlement == keys_.end()) {
|
||||
key_statuses_.find(key->entitlement_key_id());
|
||||
if (entitlement == key_statuses_.end()) {
|
||||
continue;
|
||||
}
|
||||
// And set the new content key id.
|
||||
@@ -271,10 +274,11 @@ void LicenseKeyStatus::ParseOperatorSessionKey(const KeyContainer& key) {
|
||||
}
|
||||
|
||||
void LicenseKeys::Clear() {
|
||||
for (LicenseKeyStatusIterator i = keys_.begin(); i != keys_.end(); ++i) {
|
||||
for (LicenseKeyStatusIterator i = key_statuses_.begin();
|
||||
i != key_statuses_.end(); ++i) {
|
||||
delete i->second;
|
||||
}
|
||||
keys_.clear();
|
||||
key_statuses_.clear();
|
||||
}
|
||||
|
||||
bool LicenseKeyStatus::CanDecryptContent() {
|
||||
|
||||
Reference in New Issue
Block a user