aidl plugin: add error details to return status
Merged from http://go/wvgerrit/163639 Bug: 253271674 Test: Google TV Test: atest MediaDrmParameterizedTests Test: atest DrmSessionManagerTest Change-Id: I9f0e83774d405466a389d2fd90d693830682dde4
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#define WV_MAP_ERRORS_INL_H_
|
||||
|
||||
#include "WVErrors.h"
|
||||
#include "WVTypes.h"
|
||||
#include "media/stagefright/MediaErrors.h"
|
||||
#include "utils/Errors.h"
|
||||
#include "wv_cdm_types.h"
|
||||
@@ -16,10 +17,9 @@ namespace wvdrm {
|
||||
|
||||
using ::aidl::android::hardware::drm::Status;
|
||||
|
||||
template <typename S = Status>
|
||||
static S mapCdmResponseType(wvcdm::CdmResponseEnum res) {
|
||||
static inline WvStatus mapCdmResponseType(wvcdm::CdmResponseType res) {
|
||||
Status err = Status::ERROR_DRM_UNKNOWN;
|
||||
switch (res) {
|
||||
switch (res.Enum()) {
|
||||
case wvcdm::KEY_ADDED:
|
||||
case wvcdm::KEY_MESSAGE:
|
||||
case wvcdm::KEY_CANCELED:
|
||||
@@ -37,21 +37,26 @@ static S mapCdmResponseType(wvcdm::CdmResponseEnum res) {
|
||||
// that should probably all turn into NO_LICENSE. Here, and below, and
|
||||
// everywhere.
|
||||
case wvcdm::NO_CONTENT_KEY_3:
|
||||
return Status::ERROR_DRM_NO_LICENSE;
|
||||
err = Status::ERROR_DRM_NO_LICENSE;
|
||||
break;
|
||||
|
||||
case wvcdm::NEED_PROVISIONING:
|
||||
return Status::ERROR_DRM_NOT_PROVISIONED;
|
||||
err = Status::ERROR_DRM_NOT_PROVISIONED;
|
||||
break;
|
||||
|
||||
case wvcdm::DEVICE_REVOKED:
|
||||
return Status::ERROR_DRM_DEVICE_REVOKED;
|
||||
err = Status::ERROR_DRM_DEVICE_REVOKED;
|
||||
break;
|
||||
|
||||
case wvcdm::INSUFFICIENT_CRYPTO_RESOURCES:
|
||||
return Status::ERROR_DRM_RESOURCE_BUSY;
|
||||
err = Status::ERROR_DRM_RESOURCE_BUSY;
|
||||
break;
|
||||
|
||||
case wvcdm::RELEASE_USAGE_INFO_ERROR:
|
||||
case wvcdm::RELEASE_USAGE_INFO_FAILED:
|
||||
case wvcdm::SYSTEM_INVALIDATED_ERROR:
|
||||
return Status::ERROR_DRM_INVALID_STATE;
|
||||
err = Status::ERROR_DRM_INVALID_STATE;
|
||||
break;
|
||||
|
||||
case wvcdm::SESSION_NOT_FOUND_FOR_DECRYPT:
|
||||
case wvcdm::SESSION_NOT_FOUND_1:
|
||||
@@ -70,18 +75,22 @@ static S mapCdmResponseType(wvcdm::CdmResponseEnum res) {
|
||||
case wvcdm::SESSION_NOT_FOUND_21:
|
||||
case wvcdm::SESSION_NOT_FOUND_22:
|
||||
case wvcdm::SESSION_NOT_FOUND_23:
|
||||
return Status::ERROR_DRM_SESSION_NOT_OPENED;
|
||||
err = Status::ERROR_DRM_SESSION_NOT_OPENED;
|
||||
break;
|
||||
|
||||
case wvcdm::DECRYPT_ERROR:
|
||||
case wvcdm::SECURE_BUFFER_REQUIRED:
|
||||
return Status::ERROR_DRM_CANNOT_HANDLE;
|
||||
err = Status::ERROR_DRM_CANNOT_HANDLE;
|
||||
break;
|
||||
|
||||
case wvcdm::ANALOG_OUTPUT_ERROR:
|
||||
case wvcdm::INSUFFICIENT_OUTPUT_PROTECTION:
|
||||
return Status::ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION;
|
||||
err = Status::ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION;
|
||||
break;
|
||||
|
||||
case wvcdm::KEYSET_ID_NOT_FOUND_4:
|
||||
return Status::BAD_VALUE;
|
||||
err = Status::BAD_VALUE;
|
||||
break;
|
||||
|
||||
// The following cases follow the order in wv_cdm_types.h
|
||||
// to make it easier to keep track of newly defined errors.
|
||||
@@ -108,20 +117,25 @@ static S mapCdmResponseType(wvcdm::CdmResponseEnum res) {
|
||||
case wvcdm::PARSE_OKP_RESPONSE_ERROR:
|
||||
case wvcdm::OKP_ALREADY_PROVISIONED:
|
||||
ALOGW("Returns UNKNOWN error for legacy status: %d", res);
|
||||
return Status::ERROR_DRM_UNKNOWN;
|
||||
err = Status::ERROR_DRM_UNKNOWN;
|
||||
break;
|
||||
|
||||
case wvcdm::KEY_PROHIBITED_FOR_SECURITY_LEVEL:
|
||||
return Status::ERROR_DRM_INSUFFICIENT_SECURITY;
|
||||
err = Status::ERROR_DRM_INSUFFICIENT_SECURITY;
|
||||
break;
|
||||
case wvcdm::OUTPUT_TOO_LARGE_ERROR:
|
||||
return Status::ERROR_DRM_FRAME_TOO_LARGE;
|
||||
err = Status::ERROR_DRM_FRAME_TOO_LARGE;
|
||||
break;
|
||||
case wvcdm::SESSION_LOST_STATE_ERROR:
|
||||
return Status::ERROR_DRM_SESSION_LOST_STATE;
|
||||
err = Status::ERROR_DRM_SESSION_LOST_STATE;
|
||||
break;
|
||||
case wvcdm::LICENSE_REQUEST_NONCE_GENERATION_ERROR:
|
||||
case wvcdm::LICENSE_RENEWAL_NONCE_GENERATION_ERROR:
|
||||
case wvcdm::CERT_PROVISIONING_NONCE_GENERATION_ERROR:
|
||||
case wvcdm::NONCE_GENERATION_ERROR:
|
||||
// These are likely nonce flood errors
|
||||
return Status::ERROR_DRM_RESOURCE_CONTENTION;
|
||||
err = Status::ERROR_DRM_RESOURCE_CONTENTION;
|
||||
break;
|
||||
|
||||
case wvcdm::CANNOT_DECRYPT_ZERO_SUBSAMPLES:
|
||||
err = Status::CANNOT_DECRYPT_ZERO_SUBSAMPLES;
|
||||
@@ -429,14 +443,13 @@ static S mapCdmResponseType(wvcdm::CdmResponseEnum res) {
|
||||
err = Status::STORAGE_WRITE_FAILURE;
|
||||
break;
|
||||
default:
|
||||
return Status::ERROR_DRM_UNKNOWN;
|
||||
err = Status::ERROR_DRM_UNKNOWN;
|
||||
}
|
||||
return static_cast<S>(err);
|
||||
return WvStatus(err, res);
|
||||
}
|
||||
|
||||
template <typename S = Status>
|
||||
static S mapCdmResponseType(wvcdm::CdmResponseType res) {
|
||||
return mapCdmResponseType(static_cast<wvcdm::CdmResponseEnum>(res));
|
||||
static inline WvStatus mapCdmResponseType(wvcdm::CdmResponseEnum res) {
|
||||
return mapCdmResponseType(wvcdm::CdmResponseType(res));
|
||||
}
|
||||
|
||||
static inline bool isCdmResponseTypeSuccess(wvcdm::CdmResponseType res) {
|
||||
|
||||
Reference in New Issue
Block a user