diff --git a/libwvdrmengine/cdm/core/include/wv_cdm_types.h b/libwvdrmengine/cdm/core/include/wv_cdm_types.h index 066cadbe..d4b20a49 100644 --- a/libwvdrmengine/cdm/core/include/wv_cdm_types.h +++ b/libwvdrmengine/cdm/core/include/wv_cdm_types.h @@ -395,6 +395,7 @@ enum CdmResponseType { REWRAP_DEVICE_RSA_KEY_ERROR = 344, REWRAP_DEVICE_RSA_KEY_30_ERROR = 345, INVALID_SRM_LIST = 346, + KEYSET_ID_NOT_FOUND_4 = 347, // Don't forget to add new values to ../test/test_printers.cpp. }; diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index db8ffc0a..2ac37d13 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -238,7 +238,9 @@ CdmResponseType CdmSession::RestoreOfflineSession( "sub error: %d, key set id = %s", sub_error_code, key_set_id.c_str()); SetErrorDetail(error_detail, sub_error_code); - return GET_LICENSE_ERROR; + return sub_error_code == DeviceFiles::kFileNotFound + ? KEYSET_ID_NOT_FOUND_4 + : GET_LICENSE_ERROR; } // Attempts to restore a released offline license are treated as a release diff --git a/libwvdrmengine/cdm/core/test/test_printers.cpp b/libwvdrmengine/cdm/core/test/test_printers.cpp index fe30366d..c7af0f8c 100644 --- a/libwvdrmengine/cdm/core/test/test_printers.cpp +++ b/libwvdrmengine/cdm/core/test/test_printers.cpp @@ -247,6 +247,9 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) { case KEYSET_ID_NOT_FOUND_3: *os << "KEYSET_ID_NOT_FOUND_3"; break; + case KEYSET_ID_NOT_FOUND_4: + *os << "KEYSET_ID_NOT_FOUND_4"; + break; case LICENSE_ID_NOT_FOUND: *os << "LICENSE_ID_NOT_FOUND"; break; diff --git a/libwvdrmengine/include_hidl/mapErrors-inl.h b/libwvdrmengine/include_hidl/mapErrors-inl.h index 763dfa8e..052efbc4 100644 --- a/libwvdrmengine/include_hidl/mapErrors-inl.h +++ b/libwvdrmengine/include_hidl/mapErrors-inl.h @@ -354,6 +354,9 @@ static Status mapCdmResponseType(wvcdm::CdmResponseType res) { ALOGW("Returns UNKNOWN error for legacy status: %d", res); return Status::ERROR_DRM_UNKNOWN; + case wvcdm::KEYSET_ID_NOT_FOUND_4: + return Status::BAD_VALUE; + case wvcdm::UNKNOWN_ERROR: return Status::ERROR_DRM_UNKNOWN; } diff --git a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp index 67280ea9..360734ef 100644 --- a/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src_hidl/WVDrmPlugin.cpp @@ -1159,11 +1159,7 @@ Return WVDrmPlugin::removeOfflineLicense(const KeySetId &keySetId) { std::string(keySetId.begin(), keySetId.end()), wvcdm::kSecurityLevelL3, identifier); - if (isCdmResponseTypeSuccess(res)) { - status = Status::OK; - } else { - status = Status::ERROR_DRM_INVALID_STATE; - } + status = mapCdmResponseType(res); } return status;