Add metrics_dump, a tool to format drm metrics

[ Merge of http://go/wvgerrit/59022 ]

Android metrics are output by the adb shell command
|dumpsys media.metrics|. They appear in bugreports
and can also be requested interactively. Both the
widevine and framework mediadrm metrics are base64
encoded protobufs detailing each of the metrics
items. This tool prints them in a readable format.

Test: wv android unit/integration tests
Change-Id: Id1bc05b34693a3ca44dd3872a28a2337b3ce4d79
This commit is contained in:
Rahul Frias
2019-11-20 14:25:53 -08:00
parent 84061e93d6
commit 8723859570
12 changed files with 1475 additions and 3 deletions

View File

@@ -941,7 +941,7 @@ void PrintTo(const enum CdmLicenseType& value, ::std::ostream* os) {
*os << "Unknown CdmLicenseType";
break;
}
};
}
void PrintTo(const enum CdmSecurityLevel& value, ::std::ostream* os) {
switch (value) {
@@ -964,7 +964,7 @@ void PrintTo(const enum CdmSecurityLevel& value, ::std::ostream* os) {
*os << "Unknown CdmSecurityLevel";
break;
}
};
}
void PrintTo(const enum CdmCertificateType& value, ::std::ostream* os) {
switch (value) {
@@ -978,6 +978,182 @@ void PrintTo(const enum CdmCertificateType& value, ::std::ostream* os) {
*os << "Unknown CdmCertificateType";
break;
}
};
}
void PrintTo(const enum OEMCryptoResult& value, ::std::ostream* os) {
switch (value) {
case OEMCrypto_SUCCESS:
*os << "SUCCESS";
break;
case OEMCrypto_ERROR_INIT_FAILED:
*os << "INIT_FAILED";
break;
case OEMCrypto_ERROR_TERMINATE_FAILED:
*os << "TERMINATE_FAILED";
break;
case OEMCrypto_ERROR_OPEN_FAILURE:
*os << "OPEN_FAILURE";
break;
case OEMCrypto_ERROR_CLOSE_FAILURE:
*os << "CLOSE_FAILURE";
break;
case OEMCrypto_ERROR_ENTER_SECURE_PLAYBACK_FAILED:
*os << "ENTER_SECURE_PLAYBACK_FAILED";
break;
case OEMCrypto_ERROR_EXIT_SECURE_PLAYBACK_FAILED:
*os << "EXIT_SECURE_PLAYBACK_FAILED";
break;
case OEMCrypto_ERROR_SHORT_BUFFER:
*os << "SHORT_BUFFER";
break;
case OEMCrypto_ERROR_NO_DEVICE_KEY:
*os << "NO_DEVICE_KEY";
break;
case OEMCrypto_ERROR_NO_ASSET_KEY:
*os << "NO_ASSET_KEY";
break;
case OEMCrypto_ERROR_KEYBOX_INVALID:
*os << "KEYBOX_INVALID";
break;
case OEMCrypto_ERROR_NO_KEYDATA:
*os << "NO_KEYDATA";
break;
case OEMCrypto_ERROR_NO_CW:
*os << "NO_CW";
break;
case OEMCrypto_ERROR_DECRYPT_FAILED:
*os << "DECRYPT_FAILED";
break;
case OEMCrypto_ERROR_WRITE_KEYBOX:
*os << "WRITE_KEYBOX";
break;
case OEMCrypto_ERROR_WRAP_KEYBOX:
*os << "WRAP_KEYBOX";
break;
case OEMCrypto_ERROR_BAD_MAGIC:
*os << "BAD_MAGIC";
break;
case OEMCrypto_ERROR_BAD_CRC:
*os << "BAD_CRC";
break;
case OEMCrypto_ERROR_NO_DEVICEID:
*os << "NO_DEVICEID";
break;
case OEMCrypto_ERROR_RNG_FAILED:
*os << "RNG_FAILED";
break;
case OEMCrypto_ERROR_RNG_NOT_SUPPORTED:
*os << "RNG_NOT_SUPPORTED";
break;
case OEMCrypto_ERROR_SETUP:
*os << "SETUP";
break;
case OEMCrypto_ERROR_OPEN_SESSION_FAILED:
*os << "OPEN_SESSION_FAILED";
break;
case OEMCrypto_ERROR_CLOSE_SESSION_FAILED:
*os << "CLOSE_SESSION_FAILED";
break;
case OEMCrypto_ERROR_INVALID_SESSION:
*os << "INVALID_SESSION";
break;
case OEMCrypto_ERROR_NOT_IMPLEMENTED:
*os << "NOT_IMPLEMENTED";
break;
case OEMCrypto_ERROR_NO_CONTENT_KEY:
*os << "NO_CONTENT_KEY";
break;
case OEMCrypto_ERROR_CONTROL_INVALID:
*os << "CONTROL_INVALID";
break;
case OEMCrypto_ERROR_UNKNOWN_FAILURE:
*os << "UNKNOWN_FAILURE";
break;
case OEMCrypto_ERROR_INVALID_CONTEXT:
*os << "INVALID_CONTEXT";
break;
case OEMCrypto_ERROR_SIGNATURE_FAILURE:
*os << "SIGNATURE_FAILURE";
break;
case OEMCrypto_ERROR_TOO_MANY_SESSIONS:
*os << "TOO_MANY_SESSIONS";
break;
case OEMCrypto_ERROR_INVALID_NONCE:
*os << "INVALID_NONCE";
break;
case OEMCrypto_ERROR_TOO_MANY_KEYS:
*os << "TOO_MANY_KEYS";
break;
case OEMCrypto_ERROR_DEVICE_NOT_RSA_PROVISIONED:
*os << "DEVICE_NOT_RSA_PROVISIONED";
break;
case OEMCrypto_ERROR_INVALID_RSA_KEY:
*os << "INVALID_RSA_KEY";
break;
case OEMCrypto_ERROR_KEY_EXPIRED:
*os << "KEY_EXPIRED";
break;
case OEMCrypto_ERROR_INSUFFICIENT_RESOURCES:
*os << "INSUFFICIENT_RESOURCES";
break;
case OEMCrypto_ERROR_INSUFFICIENT_HDCP:
*os << "INSUFFICIENT_HDCP";
break;
case OEMCrypto_ERROR_BUFFER_TOO_LARGE:
*os << "BUFFER_TOO_LARGE";
break;
case OEMCrypto_WARNING_GENERATION_SKEW:
*os << "OEMCrypto_WARNING_GENERATION_SKEW";
break;
case OEMCrypto_ERROR_GENERATION_SKEW:
*os << "GENERATION_SKEW";
break;
case OEMCrypto_LOCAL_DISPLAY_ONLY:
*os << "OEMCrypto_LOCAL_DISPLAY_ONLY";
break;
case OEMCrypto_ERROR_ANALOG_OUTPUT:
*os << "ANALOG_OUTPUT";
break;
case OEMCrypto_ERROR_WRONG_PST:
*os << "WRONG_PST";
break;
case OEMCrypto_ERROR_WRONG_KEYS:
*os << "WRONG_KEYS";
break;
case OEMCrypto_ERROR_MISSING_MASTER:
*os << "MISSING_MASTER";
break;
case OEMCrypto_ERROR_LICENSE_INACTIVE:
*os << "LICENSE_INACTIVE";
break;
case OEMCrypto_ERROR_ENTRY_NEEDS_UPDATE:
*os << "ENTRY_NEEDS_UPDATE";
break;
case OEMCrypto_ERROR_ENTRY_IN_USE:
*os << "ENTRY_IN_USE";
break;
case OEMCrypto_ERROR_USAGE_TABLE_UNRECOVERABLE:
*os << "USAGE_TABLE_UNRECOVERABLE";
break;
case OEMCrypto_KEY_NOT_LOADED:
*os << "OEMCrypto_KEY_NOT_LOADED";
break;
case OEMCrypto_KEY_NOT_ENTITLED:
*os << "OEMCrypto_KEY_NOT_ENTITLED";
break;
case OEMCrypto_ERROR_BAD_HASH:
*os << "BAD_HASH";
break;
case OEMCrypto_ERROR_OUTPUT_TOO_LARGE:
*os << "OUTPUT_TOO_LARGE";
break;
case OEMCrypto_ERROR_SESSION_LOST_STATE:
*os << "SESSION_LOST_STATE";
break;
case OEMCrypto_ERROR_SYSTEM_INVALIDATED:
*os << "SYSTEM_INVALIDATED";
break;
}
}
} // namespace wvcdm