Merge "Change keys_ to key_statuses_"
This commit is contained in:
committed by
Android (Google) Code Review
commit
0c072a628c
@@ -24,7 +24,7 @@ class LicenseKeys {
|
|||||||
LicenseKeys() {}
|
LicenseKeys() {}
|
||||||
virtual ~LicenseKeys() { Clear(); }
|
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)
|
// Returns true if the key is a content key (not an operator session key)
|
||||||
virtual bool IsContentKey(const KeyId& key_id);
|
virtual bool IsContentKey(const KeyId& key_id);
|
||||||
@@ -75,11 +75,12 @@ class LicenseKeys {
|
|||||||
void Clear();
|
void Clear();
|
||||||
|
|
||||||
bool is_initialized_;
|
bool is_initialized_;
|
||||||
// |keys_| can hold either content key statuses, or entitlement key statuses.
|
// |key_statuses_| can hold either content key statuses, or entitlement key
|
||||||
std::map<KeyId, LicenseKeyStatus*> keys_;
|
// statuses.
|
||||||
|
std::map<KeyId, LicenseKeyStatus*> key_statuses_;
|
||||||
// |content_keyid_to_entitlement_key_id_| maps a content key id to an
|
// |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
|
// 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_;
|
std::map<KeyId, KeyId> content_keyid_to_entitlement_key_id_;
|
||||||
|
|
||||||
CORE_DISALLOW_COPY_AND_ASSIGN(LicenseKeys);
|
CORE_DISALLOW_COPY_AND_ASSIGN(LicenseKeys);
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ VideoResolutionConstraint* GetConstraintForRes(
|
|||||||
namespace wvcdm {
|
namespace wvcdm {
|
||||||
|
|
||||||
bool LicenseKeys::IsContentKey(const std::string& key_id) {
|
bool LicenseKeys::IsContentKey(const std::string& key_id) {
|
||||||
if (keys_.count(key_id) > 0) {
|
if (key_statuses_.count(key_id) > 0) {
|
||||||
return keys_[key_id]->IsContentKey();
|
return key_statuses_[key_id]->IsContentKey();
|
||||||
} else if (content_keyid_to_entitlement_key_id_.count(key_id) > 0) {
|
} else if (content_keyid_to_entitlement_key_id_.count(key_id) > 0) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@@ -76,11 +76,11 @@ bool LicenseKeys::IsContentKey(const std::string& key_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool LicenseKeys::CanDecryptContent(const std::string& key_id) {
|
bool LicenseKeys::CanDecryptContent(const std::string& key_id) {
|
||||||
if (keys_.count(key_id) > 0) {
|
if (key_statuses_.count(key_id) > 0) {
|
||||||
return keys_[key_id]->CanDecryptContent();
|
return key_statuses_[key_id]->CanDecryptContent();
|
||||||
} else if (content_keyid_to_entitlement_key_id_.count(key_id) > 0) {
|
} else if (content_keyid_to_entitlement_key_id_.count(key_id) > 0) {
|
||||||
if (keys_.count(content_keyid_to_entitlement_key_id_[key_id]) > 0) {
|
if (key_statuses_.count(content_keyid_to_entitlement_key_id_[key_id]) > 0) {
|
||||||
return keys_[content_keyid_to_entitlement_key_id_[key_id]]
|
return key_statuses_[content_keyid_to_entitlement_key_id_[key_id]]
|
||||||
->CanDecryptContent();
|
->CanDecryptContent();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -91,11 +91,11 @@ bool LicenseKeys::CanDecryptContent(const std::string& key_id) {
|
|||||||
|
|
||||||
bool LicenseKeys::GetAllowedUsage(const KeyId& key_id,
|
bool LicenseKeys::GetAllowedUsage(const KeyId& key_id,
|
||||||
CdmKeyAllowedUsage* allowed_usage) {
|
CdmKeyAllowedUsage* allowed_usage) {
|
||||||
if (keys_.count(key_id) > 0) {
|
if (key_statuses_.count(key_id) > 0) {
|
||||||
return keys_[key_id]->GetAllowedUsage(allowed_usage);
|
return key_statuses_[key_id]->GetAllowedUsage(allowed_usage);
|
||||||
} else if (content_keyid_to_entitlement_key_id_.count(key_id) > 0) {
|
} else if (content_keyid_to_entitlement_key_id_.count(key_id) > 0) {
|
||||||
if (keys_.count(content_keyid_to_entitlement_key_id_[key_id]) > 0) {
|
if (key_statuses_.count(content_keyid_to_entitlement_key_id_[key_id]) > 0) {
|
||||||
return keys_[content_keyid_to_entitlement_key_id_[key_id]]
|
return key_statuses_[content_keyid_to_entitlement_key_id_[key_id]]
|
||||||
->CanDecryptContent();
|
->CanDecryptContent();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -109,7 +109,8 @@ bool LicenseKeys::ApplyStatusChange(CdmKeyStatus new_status,
|
|||||||
bool keys_changed = false;
|
bool keys_changed = false;
|
||||||
bool newly_usable = false;
|
bool newly_usable = false;
|
||||||
*new_usable_keys = 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;
|
bool usable;
|
||||||
if (it->second->ApplyStatusChange(new_status, &usable)) {
|
if (it->second->ApplyStatusChange(new_status, &usable)) {
|
||||||
newly_usable |= usable;
|
newly_usable |= usable;
|
||||||
@@ -121,15 +122,16 @@ bool LicenseKeys::ApplyStatusChange(CdmKeyStatus new_status,
|
|||||||
}
|
}
|
||||||
|
|
||||||
CdmKeyStatus LicenseKeys::GetKeyStatus(const KeyId& key_id) {
|
CdmKeyStatus LicenseKeys::GetKeyStatus(const KeyId& key_id) {
|
||||||
if (keys_.count(key_id) == 0) {
|
if (key_statuses_.count(key_id) == 0) {
|
||||||
return kKeyStatusKeyUnknown;
|
return kKeyStatusKeyUnknown;
|
||||||
}
|
}
|
||||||
return keys_[key_id]->GetKeyStatus();
|
return key_statuses_[key_id]->GetKeyStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LicenseKeys::ExtractKeyStatuses(CdmKeyStatusMap* content_keys) {
|
void LicenseKeys::ExtractKeyStatuses(CdmKeyStatusMap* content_keys) {
|
||||||
content_keys->clear();
|
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()) {
|
if (it->second->IsContentKey()) {
|
||||||
const KeyId key_id = it->first;
|
const KeyId key_id = it->first;
|
||||||
CdmKeyStatus key_status = it->second->GetKeyStatus();
|
CdmKeyStatus key_status = it->second->GetKeyStatus();
|
||||||
@@ -139,8 +141,8 @@ void LicenseKeys::ExtractKeyStatuses(CdmKeyStatusMap* content_keys) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool LicenseKeys::MeetsConstraints(const KeyId& key_id) {
|
bool LicenseKeys::MeetsConstraints(const KeyId& key_id) {
|
||||||
if (keys_.count(key_id) > 0) {
|
if (key_statuses_.count(key_id) > 0) {
|
||||||
return keys_[key_id]->MeetsConstraints();
|
return key_statuses_[key_id]->MeetsConstraints();
|
||||||
} else {
|
} else {
|
||||||
// If a Key ID is unknown to us, we don't know of any constraints for it,
|
// If a Key ID is unknown to us, we don't know of any constraints for it,
|
||||||
// so never block decryption.
|
// so never block decryption.
|
||||||
@@ -150,7 +152,8 @@ bool LicenseKeys::MeetsConstraints(const KeyId& key_id) {
|
|||||||
|
|
||||||
void LicenseKeys::ApplyConstraints(
|
void LicenseKeys::ApplyConstraints(
|
||||||
uint32_t new_resolution, CryptoSession::HdcpCapability new_hdcp_level) {
|
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);
|
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::OPERATOR_SESSION ||
|
||||||
key.type() == KeyContainer::ENTITLEMENT)) {
|
key.type() == KeyContainer::ENTITLEMENT)) {
|
||||||
const KeyId& key_id = key.id();
|
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++) {
|
key != keys.end(); key++) {
|
||||||
// Check to see if we have an entitlement key for this content key.
|
// Check to see if we have an entitlement key for this content key.
|
||||||
std::map<KeyId, LicenseKeyStatus*>::iterator entitlement =
|
std::map<KeyId, LicenseKeyStatus*>::iterator entitlement =
|
||||||
keys_.find(key->entitlement_key_id());
|
key_statuses_.find(key->entitlement_key_id());
|
||||||
if (entitlement == keys_.end()) {
|
if (entitlement == key_statuses_.end()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// And set the new content key id.
|
// And set the new content key id.
|
||||||
@@ -271,10 +274,11 @@ void LicenseKeyStatus::ParseOperatorSessionKey(const KeyContainer& key) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void LicenseKeys::Clear() {
|
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;
|
delete i->second;
|
||||||
}
|
}
|
||||||
keys_.clear();
|
key_statuses_.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LicenseKeyStatus::CanDecryptContent() {
|
bool LicenseKeyStatus::CanDecryptContent() {
|
||||||
|
|||||||
Reference in New Issue
Block a user