New CDM error codes for usage table errors.
[ Merge of http://go/wvgerrit/95404 ] There are three situtations where error codes from a usage table operations were not being mapped to unique CDM response types. These particular errors provide useful information for the CDM during table defragging. Also fixed misspelled error code. Bug: 150890014 Bug: 150891685 Test: Linux unit tests and Android build Change-Id: I683abdd5fc0871317eede960ea36cfafac7e7f49
This commit is contained in:
@@ -281,7 +281,7 @@ enum CdmResponseType {
|
||||
/* previsouly INVALID_PARAMETERS_ENG_20 = 227, */
|
||||
UPDATE_USAGE_ENTRY_UNKNOWN_ERROR = 228,
|
||||
/* 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,
|
||||
COPY_OLD_USAGE_ENTRY_UNKNOWN_ERROR = 232,
|
||||
INVALID_PARAMETERS_ENG_22 = 233,
|
||||
@@ -408,6 +408,9 @@ enum CdmResponseType {
|
||||
CANNOT_DECRYPT_ZERO_SUBSAMPLES = 354,
|
||||
SAMPLE_AND_SUBSAMPLE_SIZE_MISMATCH = 355,
|
||||
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
|
||||
// * core/test/test_printers.cpp.
|
||||
// * android/include/mapErrors-inl.h
|
||||
|
||||
@@ -2476,18 +2476,19 @@ CdmResponseType CryptoSession::LoadUsageEntry(
|
||||
case OEMCrypto_SUCCESS:
|
||||
case OEMCrypto_WARNING_GENERATION_SKEW:
|
||||
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:
|
||||
return LOAD_USAGE_ENTRY_GENERATION_SKEW;
|
||||
case OEMCrypto_ERROR_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:
|
||||
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) {
|
||||
usage_table_header->resize(usage_table_header_len);
|
||||
switch (result) {
|
||||
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) {
|
||||
@@ -2578,8 +2583,15 @@ CdmResponseType CryptoSession::MoveUsageEntry(uint32_t new_entry_number) {
|
||||
metrics_->oemcrypto_move_entry_.Increment(result);
|
||||
});
|
||||
|
||||
return MapOEMCryptoResult(result, MOVE_USAGE_ENTRY_UNKNOWN_ERROR,
|
||||
"MoveUsageEntry");
|
||||
switch (result) {
|
||||
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,
|
||||
|
||||
@@ -560,6 +560,9 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) {
|
||||
case LOAD_USAGE_ENTRY_GENERATION_SKEW:
|
||||
*os << "LOAD_USAGE_ENTRY_GENERATION_SKEW";
|
||||
break;
|
||||
case LOAD_USAGE_ENTRY_INVALID_SESSION:
|
||||
*os << "LOAD_USAGE_ENTRY_INVALID_SESSION";
|
||||
break;
|
||||
case LOAD_USAGE_ENTRY_SIGNATURE_FAILURE:
|
||||
*os << "LOAD_USAGE_ENTRY_SIGNATURE_FAILURE";
|
||||
break;
|
||||
@@ -578,6 +581,9 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) {
|
||||
case LOAD_USAGE_HEADER_UNKNOWN_ERROR:
|
||||
*os << "LOAD_USAGE_HEADER_UNKNOWN_ERROR";
|
||||
break;
|
||||
case MOVE_USAGE_ENTRY_DESTINATION_IN_USE:
|
||||
*os << "MOVE_USAGE_ENTRY_DESTINATION_IN_USE";
|
||||
break;
|
||||
case MOVE_USAGE_ENTRY_UNKNOWN_ERROR:
|
||||
*os << "MOVE_USAGE_ENTRY_UNKNOWN_ERROR";
|
||||
break;
|
||||
@@ -818,8 +824,11 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) {
|
||||
case SET_DECRYPT_HASH_ERROR:
|
||||
*os << "SET_DECRYPT_HASH_ERROR";
|
||||
break;
|
||||
case SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR:
|
||||
*os << "SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR";
|
||||
case SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE:
|
||||
*os << "SHRINK_USAGE_TABLE_HEADER_ENTRY_IN_USE";
|
||||
break;
|
||||
case SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR:
|
||||
*os << "SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR";
|
||||
break;
|
||||
case SIGNATURE_NOT_FOUND:
|
||||
*os << "SIGNATURE_NOT_FOUND";
|
||||
|
||||
@@ -740,10 +740,9 @@ TEST_P(UsageTableHeaderInitializationTest,
|
||||
Open(security_level))
|
||||
.Times(2)
|
||||
.WillRepeatedly(Return(NO_ERROR));
|
||||
EXPECT_CALL(
|
||||
*crypto_session_,
|
||||
ShrinkUsageTableHeader(usage_entries_202.size() - 1, NotNull()))
|
||||
.WillOnce(Return(SHRINK_USAGE_TABLER_HEADER_UNKNOWN_ERROR));
|
||||
EXPECT_CALL(*crypto_session_,
|
||||
ShrinkUsageTableHeader(usage_entries_202.size() - 1, NotNull()))
|
||||
.WillOnce(Return(SHRINK_USAGE_TABLE_HEADER_UNKNOWN_ERROR));
|
||||
|
||||
EXPECT_TRUE(usage_table_header_->Init(GetParam(), crypto_session_));
|
||||
}
|
||||
@@ -1306,7 +1305,7 @@ TEST_F(UsageTableHeaderTest, DeleteEntry_CryptoSessionError) {
|
||||
EXPECT_CALL(
|
||||
*crypto_session_,
|
||||
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,
|
||||
usage_table_header_->DeleteEntry(usage_entry_number_to_be_deleted,
|
||||
|
||||
Reference in New Issue
Block a user