From 3ccb34d7070d73ba6c7842801b070b41de32b842 Mon Sep 17 00:00:00 2001 From: Jeff Tinker Date: Mon, 9 Nov 2015 17:31:05 -0800 Subject: Improve MediaCodec.CryptoException log messages The message being logged is "Unknown error" even for known error types. This change provides more descriptive error strings, for the case when the message isn't explicitly provided by the DRM plugin. Change-Id: Ic86478d7685cd33e21ecd2f875ef7dbed351e52e related-to-bug: 25477595 --- media/jni/android_media_MediaCodec.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp index e8f680f6a36c..49b579ce438d 100644 --- a/media/jni/android_media_MediaCodec.cpp +++ b/media/jni/android_media_MediaCodec.cpp @@ -834,29 +834,36 @@ static void throwCryptoException(JNIEnv *env, status_t err, const char *msg) { env->GetMethodID(clazz.get(), "", "(ILjava/lang/String;)V"); CHECK(constructID != NULL); - jstring msgObj = env->NewStringUTF(msg != NULL ? msg : "Unknown Error"); + const char *defaultMsg = "Unknown Error"; /* translate OS errors to Java API CryptoException errorCodes (which are positive) */ switch (err) { case ERROR_DRM_NO_LICENSE: err = gCryptoErrorCodes.cryptoErrorNoKey; + defaultMsg = "Crypto key not available"; break; case ERROR_DRM_LICENSE_EXPIRED: err = gCryptoErrorCodes.cryptoErrorKeyExpired; + defaultMsg = "License expired"; break; case ERROR_DRM_RESOURCE_BUSY: err = gCryptoErrorCodes.cryptoErrorResourceBusy; + defaultMsg = "Resource busy or unavailable"; break; case ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION: err = gCryptoErrorCodes.cryptoErrorInsufficientOutputProtection; + defaultMsg = "Required output protections are not active"; break; case ERROR_DRM_SESSION_NOT_OPENED: err = gCryptoErrorCodes.cryptoErrorSessionNotOpened; + defaultMsg = "Attempted to use a closed session"; break; default: /* Other negative DRM error codes go out as is. */ break; } + jstring msgObj = env->NewStringUTF(msg != NULL ? msg : defaultMsg); + jthrowable exception = (jthrowable)env->NewObject(clazz.get(), constructID, err, msgObj); -- cgit v1.2.3-59-g8ed1b