Merge "New CDM error codes for usage table errors." into rvc-dev am: 8d45d93d0e am: b587f64cac am: 4e22b2253c am: efc12c3cef
Change-Id: I39cb171d6e36ce6fc4eb650f8c9e8f384171b927
This commit is contained in:
@@ -281,7 +281,7 @@ enum CdmResponseType {
|
|||||||
/* previsouly INVALID_PARAMETERS_ENG_20 = 227, */
|
/* previsouly INVALID_PARAMETERS_ENG_20 = 227, */
|
||||||
UPDATE_USAGE_ENTRY_UNKNOWN_ERROR = 228,
|
UPDATE_USAGE_ENTRY_UNKNOWN_ERROR = 228,
|
||||||
/* previously INVALID_PARAMETERS_ENG_21 = 229, */
|
/* previously INVALID_PARAMETERS_ENG_21 = 229, */
|
||||||
SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR = 230,
|
SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR = 230,
|
||||||
MOVE_USAGE_ENTRY_UNKNOWN_ERROR = 231,
|
MOVE_USAGE_ENTRY_UNKNOWN_ERROR = 231,
|
||||||
COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR = 232,
|
COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR = 232,
|
||||||
INVALID_PARAMETERS_ENG_22 = 233,
|
INVALID_PARAMETERS_ENG_22 = 233,
|
||||||
@@ -408,6 +408,9 @@ enum CdmResponseType {
|
|||||||
CANNOT_DECRYPT_ZERO_SUBSAMPLES = 354,
|
CANNOT_DECRYPT_ZERO_SUBSAMPLES = 354,
|
||||||
SAMPLE_AND_SUBSAMPLE_SIZE_MISMATCH = 355,
|
SAMPLE_AND_SUBSAMPLE_SIZE_MISMATCH = 355,
|
||||||
INVALID_IV_SIZE = 356,
|
INVALID_IV_SIZE = 356,
|
||||||
|
LOAD_USAGE_ENTRY_INVALID_SESSION = 357,
|
||||||
|
MOVE_USAGE_ENTRY_DESTINATION_IN_USE = 358,
|
||||||
|
SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE = 359,
|
||||||
// Don't forget to add new values to
|
// Don't forget to add new values to
|
||||||
// * core/test/test_printers.cpp.
|
// * core/test/test_printers.cpp.
|
||||||
// * android/include/mapErrors-inl.h
|
// * android/include/mapErrors-inl.h
|
||||||
|
|||||||
@@ -2476,18 +2476,19 @@ CdmResponseType CryptoSession::LoadUsageEntry(
|
|||||||
case OEMCrypto_SUCCESS:
|
case OEMCrypto_SUCCESS:
|
||||||
case OEMCrypto_WARNING_GENERATION_SKEW:
|
case OEMCrypto_WARNING_GENERATION_SKEW:
|
||||||
return NO_ERROR;
|
return NO_ERROR;
|
||||||
|
case OEMCrypto_ERROR_INVALID_SESSION:
|
||||||
|
// This case is special, as it could imply that the provided
|
||||||
|
// session ID is invalid (CDM internal bug), or that the entry
|
||||||
|
// being loaded is already in use in a different session.
|
||||||
|
// It is up to the caller to handle this.
|
||||||
|
return LOAD_USAGE_ENTRY_INVALID_SESSION;
|
||||||
case OEMCrypto_ERROR_GENERATION_SKEW:
|
case OEMCrypto_ERROR_GENERATION_SKEW:
|
||||||
return LOAD_USAGE_ENTRY_GENERATION_SKEW;
|
return LOAD_USAGE_ENTRY_GENERATION_SKEW;
|
||||||
case OEMCrypto_ERROR_SIGNATURE_FAILURE:
|
case OEMCrypto_ERROR_SIGNATURE_FAILURE:
|
||||||
return LOAD_USAGE_ENTRY_SIGNATURE_FAILURE;
|
return LOAD_USAGE_ENTRY_SIGNATURE_FAILURE;
|
||||||
case OEMCrypto_ERROR_INSUFFICIENT_RESOURCES:
|
|
||||||
return INSUFFICIENT_CRYPTO_RESOURCES_3;
|
|
||||||
case OEMCrypto_ERROR_SESSION_LOST_STATE:
|
|
||||||
return SESSION_LOST_STATE_ERROR;
|
|
||||||
case OEMCrypto_ERROR_SYSTEM_INVALIDATED:
|
|
||||||
return SYSTEM_INVALIDATED_ERROR;
|
|
||||||
default:
|
default:
|
||||||
return LOAD_USAGE_ENTRY_UNKNOWN_ERROR;
|
return MapOEMCryptoResult(result, LOAD_USAGE_ENTRY_UNKNOWN_ERROR,
|
||||||
|
"LoadUsageEntry");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2561,12 +2562,16 @@ CdmResponseType CryptoSession::ShrinkUsageTableHeader(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result == OEMCrypto_SUCCESS) {
|
switch (result) {
|
||||||
usage_table_header->resize(usage_table_header_len);
|
case OEMCrypto_SUCCESS:
|
||||||
|
usage_table_header->resize(usage_table_header_len);
|
||||||
|
return NO_ERROR;
|
||||||
|
case OEMCrypto_ERROR_ENTRY_IN_USE:
|
||||||
|
return SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE;
|
||||||
|
default:
|
||||||
|
return MapOEMCryptoResult(result, SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR,
|
||||||
|
"ShrinkUsageTableHeader");
|
||||||
}
|
}
|
||||||
|
|
||||||
return MapOEMCryptoResult(result, SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR,
|
|
||||||
"ShrinkUsageTableHeader");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CdmResponseType CryptoSession::MoveUsageEntry(uint32_t new_entry_number) {
|
CdmResponseType CryptoSession::MoveUsageEntry(uint32_t new_entry_number) {
|
||||||
@@ -2578,8 +2583,15 @@ CdmResponseType CryptoSession::MoveUsageEntry(uint32_t new_entry_number) {
|
|||||||
metrics_->oemcrypto_move_entry_.Increment(result);
|
metrics_->oemcrypto_move_entry_.Increment(result);
|
||||||
});
|
});
|
||||||
|
|
||||||
return MapOEMCryptoResult(result, MOVE_USAGE_ENTRY_UNKNOWN_ERROR,
|
switch (result) {
|
||||||
"MoveUsageEntry");
|
case OEMCrypto_ERROR_ENTRY_IN_USE:
|
||||||
|
LOGW("OEMCrypto_MoveEntry failed: Destination index in use: index = %u",
|
||||||
|
new_entry_number);
|
||||||
|
return MOVE_USAGE_ENTRY_DESTINATION_IN_USE;
|
||||||
|
default:
|
||||||
|
return MapOEMCryptoResult(result, MOVE_USAGE_ENTRY_UNKNOWN_ERROR,
|
||||||
|
"MoveUsageEntry");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CryptoSession::GetAnalogOutputCapabilities(bool* can_support_output,
|
bool CryptoSession::GetAnalogOutputCapabilities(bool* can_support_output,
|
||||||
|
|||||||
@@ -560,6 +560,9 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) {
|
|||||||
case LOAD_USAGE_ENTRY_GENERATION_SKEW:
|
case LOAD_USAGE_ENTRY_GENERATION_SKEW:
|
||||||
*os << "LOAD_USAGE_ENTRY_GENERATION_SKEW";
|
*os << "LOAD_USAGE_ENTRY_GENERATION_SKEW";
|
||||||
break;
|
break;
|
||||||
|
case LOAD_USAGE_ENTRY_INVALID_SESSION:
|
||||||
|
*os << "LOAD_USAGE_ENTRY_INVALID_SESSION";
|
||||||
|
break;
|
||||||
case LOAD_USAGE_ENTRY_SIGNATURE_FAILURE:
|
case LOAD_USAGE_ENTRY_SIGNATURE_FAILURE:
|
||||||
*os << "LOAD_USAGE_ENTRY_SIGNATURE_FAILURE";
|
*os << "LOAD_USAGE_ENTRY_SIGNATURE_FAILURE";
|
||||||
break;
|
break;
|
||||||
@@ -578,6 +581,9 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) {
|
|||||||
case LOAD_USAGE_HEADER_UNKNOWN_ERROR:
|
case LOAD_USAGE_HEADER_UNKNOWN_ERROR:
|
||||||
*os << "LOAD_USAGE_HEADER_UNKNOWN_ERROR";
|
*os << "LOAD_USAGE_HEADER_UNKNOWN_ERROR";
|
||||||
break;
|
break;
|
||||||
|
case MOVE_USAGE_ENTRY_DESTINATION_IN_USE:
|
||||||
|
*os << "MOVE_USAGE_ENTRY_DESTINATION_IN_USE";
|
||||||
|
break;
|
||||||
case MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
|
case MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
|
||||||
*os << "MOVE_USAGE_ENTRY_UNKNOWN_ERROR";
|
*os << "MOVE_USAGE_ENTRY_UNKNOWN_ERROR";
|
||||||
break;
|
break;
|
||||||
@@ -818,8 +824,11 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) {
|
|||||||
case SET_DECRYPT_HASH_ERROR:
|
case SET_DECRYPT_HASH_ERROR:
|
||||||
*os << "SET_DECRYPT_HASH_ERROR";
|
*os << "SET_DECRYPT_HASH_ERROR";
|
||||||
break;
|
break;
|
||||||
case SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR:
|
case SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE:
|
||||||
*os << "SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR";
|
*os << "SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE";
|
||||||
|
break;
|
||||||
|
case SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR:
|
||||||
|
*os << "SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR";
|
||||||
break;
|
break;
|
||||||
case SIGNATURE_NOT_FOUND:
|
case SIGNATURE_NOT_FOUND:
|
||||||
*os << "SIGNATURE_NOT_FOUND";
|
*os << "SIGNATURE_NOT_FOUND";
|
||||||
|
|||||||
@@ -740,10 +740,9 @@ TEST_P(UsageTableHeaderInitializationTest,
|
|||||||
Open(security_level))
|
Open(security_level))
|
||||||
.Times(2)
|
.Times(2)
|
||||||
.WillRepeatedly(Return(NO_ERROR));
|
.WillRepeatedly(Return(NO_ERROR));
|
||||||
EXPECT_CALL(
|
EXPECT_CALL(*crypto_session_,
|
||||||
*crypto_session_,
|
ShrinkUsageTableHeader(usage_entries_202.size() - 1, NotNull()))
|
||||||
ShrinkUsageTableHeader(usage_entries_202.size() - 1, NotNull()))
|
.WillOnce(Return(SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR));
|
||||||
.WillOnce(Return(SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR));
|
|
||||||
|
|
||||||
EXPECT_TRUE(usage_table_header_->Init(GetParam(), crypto_session_));
|
EXPECT_TRUE(usage_table_header_->Init(GetParam(), crypto_session_));
|
||||||
}
|
}
|
||||||
@@ -1306,7 +1305,7 @@ TEST_F(UsageTableHeaderTest, DeleteEntry_CryptoSessionError) {
|
|||||||
EXPECT_CALL(
|
EXPECT_CALL(
|
||||||
*crypto_session_,
|
*crypto_session_,
|
||||||
ShrinkUsageTableHeader(usage_entry_info_vector.size() - 1, NotNull()))
|
ShrinkUsageTableHeader(usage_entry_info_vector.size() - 1, NotNull()))
|
||||||
.WillOnce(Return(SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR));
|
.WillOnce(Return(SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR));
|
||||||
|
|
||||||
EXPECT_NE(NO_ERROR,
|
EXPECT_NE(NO_ERROR,
|
||||||
usage_table_header_->DeleteEntry(usage_entry_number_to_be_deleted,
|
usage_table_header_->DeleteEntry(usage_entry_number_to_be_deleted,
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ enum {
|
|||||||
kLoadUsageEntrySignatureFailure = ERROR_DRM_VENDOR_MIN + 218,
|
kLoadUsageEntrySignatureFailure = ERROR_DRM_VENDOR_MIN + 218,
|
||||||
kLoadUsageEntryUnknownError = ERROR_DRM_VENDOR_MIN + 219,
|
kLoadUsageEntryUnknownError = ERROR_DRM_VENDOR_MIN + 219,
|
||||||
kUpdateUsageEntryUnknownError = ERROR_DRM_VENDOR_MIN + 222,
|
kUpdateUsageEntryUnknownError = ERROR_DRM_VENDOR_MIN + 222,
|
||||||
kShrinkUsageTablerHeaderUnknownError = ERROR_DRM_VENDOR_MIN + 224,
|
kShrinkUsageTableHeaderUnknownError = ERROR_DRM_VENDOR_MIN + 224,
|
||||||
kMoveUsageEntryUnknownError = ERROR_DRM_VENDOR_MIN + 225,
|
kMoveUsageEntryUnknownError = ERROR_DRM_VENDOR_MIN + 225,
|
||||||
kCopyOldUsageEntryUnknownError = ERROR_DRM_VENDOR_MIN + 226,
|
kCopyOldUsageEntryUnknownError = ERROR_DRM_VENDOR_MIN + 226,
|
||||||
kInvalidParametersEng22 = ERROR_DRM_VENDOR_MIN + 227,
|
kInvalidParametersEng22 = ERROR_DRM_VENDOR_MIN + 227,
|
||||||
@@ -289,10 +289,13 @@ enum {
|
|||||||
kCannotDecryptZeroSubsamples = ERROR_DRM_VENDOR_MIN + 306,
|
kCannotDecryptZeroSubsamples = ERROR_DRM_VENDOR_MIN + 306,
|
||||||
kSampleAndSubsampleSizeMismatch = ERROR_DRM_VENDOR_MIN + 307,
|
kSampleAndSubsampleSizeMismatch = ERROR_DRM_VENDOR_MIN + 307,
|
||||||
kInvalidIvSize = ERROR_DRM_VENDOR_MIN + 308,
|
kInvalidIvSize = ERROR_DRM_VENDOR_MIN + 308,
|
||||||
|
kLoadUsageEntryInvalidSession = ERROR_DRM_VENDOR_MIN + 309,
|
||||||
|
kMoveUsageEntryDestinationInUse = ERROR_DRM_VENDOR_MIN + 310,
|
||||||
|
kShrinkUsageTableHeaderEntryInUse = ERROR_DRM_VENDOR_MIN + 311,
|
||||||
|
|
||||||
// This should always follow the last error code.
|
// This should always follow the last error code.
|
||||||
// The offset value should be updated each time a new error code is added.
|
// The offset value should be updated each time a new error code is added.
|
||||||
kErrorWVDrmMaxErrorUsed = ERROR_DRM_VENDOR_MIN + 308,
|
kErrorWVDrmMaxErrorUsed = ERROR_DRM_VENDOR_MIN + 311,
|
||||||
|
|
||||||
// Used by crypto test mode
|
// Used by crypto test mode
|
||||||
kErrorTestMode = ERROR_DRM_VENDOR_MAX,
|
kErrorTestMode = ERROR_DRM_VENDOR_MAX,
|
||||||
|
|||||||
@@ -378,6 +378,8 @@ static android::status_t mapCdmResponseType(wvcdm::CdmResponseType res) {
|
|||||||
return kLoadSystemIdError;
|
return kLoadSystemIdError;
|
||||||
case wvcdm::LOAD_USAGE_ENTRY_GENERATION_SKEW:
|
case wvcdm::LOAD_USAGE_ENTRY_GENERATION_SKEW:
|
||||||
return kLoadUsageEntryGenerationSkew;
|
return kLoadUsageEntryGenerationSkew;
|
||||||
|
case wvcdm::LOAD_USAGE_ENTRY_INVALID_SESSION:
|
||||||
|
return kLoadUsageEntryInvalidSession;
|
||||||
case wvcdm::LOAD_USAGE_ENTRY_SIGNATURE_FAILURE:
|
case wvcdm::LOAD_USAGE_ENTRY_SIGNATURE_FAILURE:
|
||||||
return kLoadUsageEntrySignatureFailure;
|
return kLoadUsageEntrySignatureFailure;
|
||||||
case wvcdm::LOAD_USAGE_ENTRY_UNKNOWN_ERROR:
|
case wvcdm::LOAD_USAGE_ENTRY_UNKNOWN_ERROR:
|
||||||
@@ -394,6 +396,8 @@ static android::status_t mapCdmResponseType(wvcdm::CdmResponseType res) {
|
|||||||
return kLoadUsageInfoFileError;
|
return kLoadUsageInfoFileError;
|
||||||
case wvcdm::LOAD_USAGE_INFO_MISSING:
|
case wvcdm::LOAD_USAGE_INFO_MISSING:
|
||||||
return kLoadUsageInfoMissing;
|
return kLoadUsageInfoMissing;
|
||||||
|
case wvcdm::MOVE_USAGE_ENTRY_DESTINATION_IN_USE:
|
||||||
|
return kMoveUsageEntryDestinationInUse;
|
||||||
case wvcdm::MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
|
case wvcdm::MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
|
||||||
return kMoveUsageEntryUnknownError;
|
return kMoveUsageEntryUnknownError;
|
||||||
case wvcdm::NOT_AN_ENTITLEMENT_SESSION:
|
case wvcdm::NOT_AN_ENTITLEMENT_SESSION:
|
||||||
@@ -492,8 +496,10 @@ static android::status_t mapCdmResponseType(wvcdm::CdmResponseType res) {
|
|||||||
return kSessionNotFound16;
|
return kSessionNotFound16;
|
||||||
case wvcdm::SET_DECRYPT_HASH_ERROR:
|
case wvcdm::SET_DECRYPT_HASH_ERROR:
|
||||||
return kSetDecryptHashError;
|
return kSetDecryptHashError;
|
||||||
case wvcdm::SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR:
|
case wvcdm::SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE:
|
||||||
return kShrinkUsageTablerHeaderUnknownError;
|
return kShrinkUsageTableHeaderEntryInUse;
|
||||||
|
case wvcdm::SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR:
|
||||||
|
return kShrinkUsageTableHeaderUnknownError;
|
||||||
case wvcdm::SIGNATURE_NOT_FOUND:
|
case wvcdm::SIGNATURE_NOT_FOUND:
|
||||||
return kSignatureNotFound;
|
return kSignatureNotFound;
|
||||||
case wvcdm::SIGNATURE_NOT_FOUND_2:
|
case wvcdm::SIGNATURE_NOT_FOUND_2:
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ static Status mapCdmResponseType(wvcdm::CdmResponseType res) {
|
|||||||
case wvcdm::LOAD_USAGE_ENTRY_SIGNATURE_FAILURE:
|
case wvcdm::LOAD_USAGE_ENTRY_SIGNATURE_FAILURE:
|
||||||
case wvcdm::LOAD_USAGE_ENTRY_UNKNOWN_ERROR:
|
case wvcdm::LOAD_USAGE_ENTRY_UNKNOWN_ERROR:
|
||||||
case wvcdm::UPDATE_USAGE_ENTRY_UNKNOWN_ERROR:
|
case wvcdm::UPDATE_USAGE_ENTRY_UNKNOWN_ERROR:
|
||||||
case wvcdm::SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR:
|
case wvcdm::SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR:
|
||||||
case wvcdm::MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
|
case wvcdm::MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
|
||||||
case wvcdm::COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR:
|
case wvcdm::COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR:
|
||||||
case wvcdm::INVALID_PARAMETERS_ENG_22:
|
case wvcdm::INVALID_PARAMETERS_ENG_22:
|
||||||
@@ -355,6 +355,9 @@ static Status mapCdmResponseType(wvcdm::CdmResponseType res) {
|
|||||||
case wvcdm::CANNOT_DECRYPT_ZERO_SUBSAMPLES:
|
case wvcdm::CANNOT_DECRYPT_ZERO_SUBSAMPLES:
|
||||||
case wvcdm::SAMPLE_AND_SUBSAMPLE_SIZE_MISMATCH:
|
case wvcdm::SAMPLE_AND_SUBSAMPLE_SIZE_MISMATCH:
|
||||||
case wvcdm::INVALID_IV_SIZE:
|
case wvcdm::INVALID_IV_SIZE:
|
||||||
|
case wvcdm::LOAD_USAGE_ENTRY_INVALID_SESSION:
|
||||||
|
case wvcdm::MOVE_USAGE_ENTRY_DESTINATION_IN_USE:
|
||||||
|
case wvcdm::SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE:
|
||||||
ALOGW("Returns UNKNOWN error for legacy status: %d", res);
|
ALOGW("Returns UNKNOWN error for legacy status: %d", res);
|
||||||
return Status::ERROR_DRM_UNKNOWN;
|
return Status::ERROR_DRM_UNKNOWN;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user