Android CDM: Restored secure stop tests.
[ Semi-revert of http://ag/20183443 ] [ Merge of http://go/wvgerrit/168898 ] These tests were removed from Android last quarter; however, they now need to be restored. These tests will be removed in Android V. To help with ambiguity around where the CDM is operating on a single or set of usage info messages, the variables have been renamed to propery indicate plurality. Bug: 263319220 Test: cdm_extended_duration_test Test: request_license_test Test: libwvdrmdrmplugin_hal_test Change-Id: I38b16dd5811069fafaeab5ffc19d0f8a8095f0cf
This commit is contained in:
@@ -1302,12 +1302,12 @@ CdmResponseType CdmEngine::ListStoredLicenses(
|
||||
return CdmResponseType(NO_ERROR);
|
||||
}
|
||||
|
||||
CdmResponseType CdmEngine::ListUsageIds(
|
||||
const std::string& app_id, CdmSecurityLevel security_level,
|
||||
std::vector<std::string>* ksids,
|
||||
std::vector<std::string>* provider_session_tokens) {
|
||||
if (!ksids && !provider_session_tokens) {
|
||||
LOGE("Outputs |ksids| and |provider_session_tokens| are null");
|
||||
CdmResponseType CdmEngine::ListUsageIds(const std::string& app_id,
|
||||
CdmSecurityLevel security_level,
|
||||
std::vector<CdmKeySetId>* ksids,
|
||||
std::vector<CdmSecureStopId>* psts) {
|
||||
if (!ksids && !psts) {
|
||||
LOGE("Outputs |ksids| and |psts| are null");
|
||||
return CdmResponseType(INVALID_PARAMETERS_ENG_23);
|
||||
}
|
||||
if (security_level == kSecurityLevelL1 && OkpIsInFallbackMode()) {
|
||||
@@ -1319,7 +1319,7 @@ CdmResponseType CdmEngine::ListUsageIds(
|
||||
LOGE("Unable to initialize device files");
|
||||
return CdmResponseType(LIST_USAGE_ERROR_1);
|
||||
}
|
||||
if (!handle.ListUsageIds(app_id, ksids, provider_session_tokens)) {
|
||||
if (!handle.ListUsageIds(app_id, ksids, psts)) {
|
||||
LOGE("Failed: app_id = %s, security_level = %s", IdToString(app_id),
|
||||
CdmSecurityLevelToString(security_level));
|
||||
return CdmResponseType(LIST_USAGE_ERROR_2);
|
||||
@@ -1329,7 +1329,7 @@ CdmResponseType CdmEngine::ListUsageIds(
|
||||
|
||||
CdmResponseType CdmEngine::DeleteUsageRecord(const std::string& app_id,
|
||||
CdmSecurityLevel security_level,
|
||||
const std::string& key_set_id) {
|
||||
const CdmKeySetId& key_set_id) {
|
||||
LOGI("app_id = %s, key_set_id = %s", IdToString(app_id),
|
||||
IdToString(key_set_id));
|
||||
if (security_level == kSecurityLevelL1 && OkpIsInFallbackMode()) {
|
||||
@@ -1465,18 +1465,18 @@ CdmResponseType CdmEngine::StoreAtscLicense(
|
||||
CdmResponseType CdmEngine::GetUsageInfo(const std::string& app_id,
|
||||
const CdmSecureStopId& ssid,
|
||||
int* error_detail,
|
||||
CdmUsageInfo* usage_info) {
|
||||
CdmUsageReport* usage_report) {
|
||||
// Try to find usage info at the default security level. If the
|
||||
// security level is unprovisioned or we are unable to find it,
|
||||
// try L3.
|
||||
CdmResponseType status =
|
||||
GetUsageInfo(app_id, ssid, kLevelDefault, error_detail, usage_info);
|
||||
GetUsageInfo(app_id, ssid, kLevelDefault, error_detail, usage_report);
|
||||
switch (status.code()) {
|
||||
case NEED_PROVISIONING:
|
||||
case GET_USAGE_INFO_ERROR_1:
|
||||
case GET_USAGE_INFO_ERROR_2:
|
||||
case USAGE_INFO_NOT_FOUND:
|
||||
status = GetUsageInfo(app_id, ssid, kLevel3, error_detail, usage_info);
|
||||
status = GetUsageInfo(app_id, ssid, kLevel3, error_detail, usage_report);
|
||||
return status;
|
||||
default:
|
||||
return status;
|
||||
@@ -1487,15 +1487,17 @@ CdmResponseType CdmEngine::GetUsageInfo(const std::string& app_id,
|
||||
const CdmSecureStopId& ssid,
|
||||
RequestedSecurityLevel security_level,
|
||||
int* error_detail,
|
||||
CdmUsageInfo* usage_info) {
|
||||
CdmUsageReport* usage_report) {
|
||||
LOGI("app_id = %s, ssid = %s", IdToString(app_id), IdToString(ssid));
|
||||
if (!usage_property_set_) {
|
||||
usage_property_set_.reset(new UsagePropertySet());
|
||||
}
|
||||
if (usage_info == nullptr) {
|
||||
LOGE("Output |usage_info| is null");
|
||||
if (usage_report == nullptr) {
|
||||
LOGE("Output |usage_report| is null");
|
||||
return CdmResponseType(PARAMETER_NULL);
|
||||
}
|
||||
usage_report->clear();
|
||||
|
||||
usage_property_set_->set_security_level(security_level);
|
||||
usage_property_set_->set_app_id(app_id);
|
||||
usage_session_.reset(new CdmSession(file_system_, metrics_->AddSession()));
|
||||
@@ -1536,32 +1538,28 @@ CdmResponseType CdmEngine::GetUsageInfo(const std::string& app_id,
|
||||
|
||||
if (KEY_ADDED != status) {
|
||||
LOGE("RestoreUsageSession failed: status = %d", static_cast<int>(status));
|
||||
usage_info->clear();
|
||||
return status;
|
||||
}
|
||||
|
||||
CdmKeyRequest request;
|
||||
status = usage_session_->GenerateReleaseRequest(&request);
|
||||
|
||||
usage_info->clear();
|
||||
usage_info->push_back(request.message);
|
||||
|
||||
if (KEY_MESSAGE != status) {
|
||||
LOGE("GenerateReleaseRequest failed: status = %d",
|
||||
static_cast<int>(status));
|
||||
usage_info->clear();
|
||||
return status;
|
||||
}
|
||||
|
||||
*usage_report = std::move(request.message);
|
||||
return CdmResponseType(KEY_MESSAGE);
|
||||
}
|
||||
|
||||
CdmResponseType CdmEngine::GetUsageInfo(const std::string& app_id,
|
||||
int* error_detail,
|
||||
CdmUsageInfo* usage_info) {
|
||||
CdmUsageReport* usage_report) {
|
||||
LOGI("app_id = %s", IdToString(app_id));
|
||||
if (usage_info == nullptr) {
|
||||
LOGE("Output |usage_info| is null");
|
||||
if (usage_report == nullptr) {
|
||||
LOGE("Output |usage_report| is null");
|
||||
return CdmResponseType(PARAMETER_NULL);
|
||||
}
|
||||
// Return a random usage report from a random security level
|
||||
@@ -1569,15 +1567,15 @@ CdmResponseType CdmEngine::GetUsageInfo(const std::string& app_id,
|
||||
wvutil::CdmRandom::RandomBool() ? kLevelDefault : kLevel3;
|
||||
CdmResponseType status(UNKNOWN_ERROR);
|
||||
do {
|
||||
status = GetUsageInfo(app_id, security_level, error_detail, usage_info);
|
||||
if (KEY_MESSAGE == status && !usage_info->empty()) {
|
||||
status = GetUsageInfo(app_id, security_level, error_detail, usage_report);
|
||||
if (KEY_MESSAGE == status && !usage_report->empty()) {
|
||||
return status;
|
||||
}
|
||||
} while (KEY_CANCELED == status);
|
||||
|
||||
security_level = (kLevel3 == security_level) ? kLevelDefault : kLevel3;
|
||||
do {
|
||||
status = GetUsageInfo(app_id, security_level, error_detail, usage_info);
|
||||
status = GetUsageInfo(app_id, security_level, error_detail, usage_report);
|
||||
if (NEED_PROVISIONING == status)
|
||||
return CdmResponseType(
|
||||
NO_ERROR); // Valid scenario that one of the security
|
||||
@@ -1588,13 +1586,14 @@ CdmResponseType CdmEngine::GetUsageInfo(const std::string& app_id,
|
||||
|
||||
CdmResponseType CdmEngine::GetUsageInfo(
|
||||
const std::string& app_id, RequestedSecurityLevel requested_security_level,
|
||||
int* error_detail, CdmUsageInfo* usage_info) {
|
||||
int* error_detail, CdmUsageReport* usage_report) {
|
||||
LOGI("app_id = %s, security_level = %s", IdToString(app_id),
|
||||
RequestedSecurityLevelToString(requested_security_level));
|
||||
if (usage_info == nullptr) {
|
||||
LOGE("Output |usage_info| is null");
|
||||
if (usage_report == nullptr) {
|
||||
LOGE("Output |usage_report| is null");
|
||||
return CdmResponseType(PARAMETER_NULL);
|
||||
}
|
||||
usage_report->clear();
|
||||
if (requested_security_level == kLevelDefault && OkpIsInFallbackMode()) {
|
||||
LOGD("OKP fallback to L3");
|
||||
requested_security_level = kLevel3;
|
||||
@@ -1627,7 +1626,6 @@ CdmResponseType CdmEngine::GetUsageInfo(
|
||||
}
|
||||
|
||||
if (usage_data.empty()) {
|
||||
usage_info->clear();
|
||||
return CdmResponseType(NO_ERROR);
|
||||
}
|
||||
|
||||
@@ -1637,27 +1635,22 @@ CdmResponseType CdmEngine::GetUsageInfo(
|
||||
// TODO(b/141704872): Make multiple attempts.
|
||||
LOGE("RestoreUsageSession failed: index = %zu, status = %d", index,
|
||||
static_cast<int>(status));
|
||||
usage_info->clear();
|
||||
return status;
|
||||
}
|
||||
|
||||
CdmKeyRequest request;
|
||||
status = usage_session_->GenerateReleaseRequest(&request);
|
||||
|
||||
usage_info->clear();
|
||||
usage_info->push_back(request.message);
|
||||
|
||||
switch (status.code()) {
|
||||
case KEY_MESSAGE:
|
||||
*usage_report = std::move(request.message);
|
||||
break;
|
||||
case KEY_CANCELED: // usage information not present in
|
||||
usage_session_->DeleteLicenseFile(); // OEMCrypto, delete and try again
|
||||
usage_info->clear();
|
||||
break;
|
||||
default:
|
||||
LOGE("GenerateReleaseRequest failed: status = %d",
|
||||
static_cast<int>(status));
|
||||
usage_info->clear();
|
||||
break;
|
||||
}
|
||||
return status;
|
||||
@@ -1782,8 +1775,7 @@ CdmResponseType CdmEngine::RemoveUsageInfo(
|
||||
return CdmResponseType(REMOVE_USAGE_INFO_ERROR_3);
|
||||
}
|
||||
|
||||
CdmResponseType CdmEngine::ReleaseUsageInfo(
|
||||
const CdmUsageInfoReleaseMessage& message) {
|
||||
CdmResponseType CdmEngine::ReleaseUsageInfo(const CdmKeyResponse& message) {
|
||||
LOGI("message_size = %zu", message.size());
|
||||
if (!usage_session_) {
|
||||
LOGE("Usage session not initialized");
|
||||
|
||||
Reference in New Issue
Block a user