Revert "Enhancement for OnInfo callback on DRM Framework"
This reverts commit 6fd97b7d93
.
Fixes Fatal signal 6 (SIGABRT)" when playing or downloading a video
bug: 10542864
Change-Id: I85b84d6b602079571be1a7237c907716db9cdf54
This commit is contained in:
@ -63,8 +63,6 @@ public class DrmManagerClient {
|
||||
|
||||
private final CloseGuard mCloseGuard = CloseGuard.get();
|
||||
|
||||
private static final String EXTENDED_INFO_DATA = "extended_info_data";
|
||||
|
||||
static {
|
||||
// Load the respective library
|
||||
System.loadLibrary("drmframework_jni");
|
||||
@ -186,22 +184,8 @@ public class DrmManagerClient {
|
||||
DrmManagerClient instance = (DrmManagerClient)((WeakReference)thisReference).get();
|
||||
|
||||
if (null != instance && null != instance.mInfoHandler) {
|
||||
DrmInfoEvent event = new DrmInfoEvent(uniqueId, infoType, message);
|
||||
Message m = instance.mInfoHandler.obtainMessage(
|
||||
InfoHandler.INFO_EVENT_TYPE, event);
|
||||
instance.mInfoHandler.sendMessage(m);
|
||||
}
|
||||
}
|
||||
|
||||
private static void notify(
|
||||
Object thisReference, int uniqueId, int infoType, String message,
|
||||
HashMap<String, Object> attributes) {
|
||||
DrmManagerClient instance = (DrmManagerClient)((WeakReference)thisReference).get();
|
||||
|
||||
if (null != instance && null != instance.mInfoHandler) {
|
||||
DrmInfoEvent event = new DrmInfoEvent(uniqueId, infoType, message, attributes);
|
||||
Message m = instance.mInfoHandler.obtainMessage(
|
||||
InfoHandler.INFO_EVENT_TYPE, event);
|
||||
InfoHandler.INFO_EVENT_TYPE, uniqueId, infoType, message);
|
||||
instance.mInfoHandler.sendMessage(m);
|
||||
}
|
||||
}
|
||||
@ -214,25 +198,23 @@ public class DrmManagerClient {
|
||||
}
|
||||
|
||||
public void handleMessage(Message msg) {
|
||||
DrmInfoEvent info = (DrmInfoEvent) msg.obj;
|
||||
DrmInfoEvent info = null;
|
||||
DrmErrorEvent error = null;
|
||||
int uniqueId;
|
||||
int eventType;
|
||||
String message;
|
||||
|
||||
switch (msg.what) {
|
||||
case InfoHandler.INFO_EVENT_TYPE:
|
||||
uniqueId = info.getUniqueId();
|
||||
eventType = info.getType();
|
||||
message = info.getMessage();
|
||||
int uniqueId = msg.arg1;
|
||||
int infoType = msg.arg2;
|
||||
String message = msg.obj.toString();
|
||||
|
||||
switch (eventType) {
|
||||
switch (infoType) {
|
||||
case DrmInfoEvent.TYPE_REMOVE_RIGHTS: {
|
||||
try {
|
||||
DrmUtils.removeFile(message);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
info = new DrmInfoEvent(uniqueId, infoType, message);
|
||||
break;
|
||||
}
|
||||
case DrmInfoEvent.TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT:
|
||||
@ -240,11 +222,11 @@ public class DrmManagerClient {
|
||||
case DrmInfoEvent.TYPE_WAIT_FOR_RIGHTS:
|
||||
case DrmInfoEvent.TYPE_ACCOUNT_ALREADY_REGISTERED:
|
||||
case DrmInfoEvent.TYPE_RIGHTS_REMOVED: {
|
||||
info = new DrmInfoEvent(uniqueId, infoType, message);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
info = null;
|
||||
error = new DrmErrorEvent(uniqueId, eventType, message);
|
||||
error = new DrmErrorEvent(uniqueId, infoType, message);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -169,49 +169,11 @@ void JNIOnInfoListener::onInfo(const DrmInfoEvent& event) {
|
||||
JNIEnv *env = AndroidRuntime::getJNIEnv();
|
||||
jstring message = env->NewStringUTF(event.getMessage().string());
|
||||
ALOGV("JNIOnInfoListener::onInfo => %d | %d | %s", uniqueId, type, event.getMessage().string());
|
||||
const DrmBuffer& drmBuffer = event.getData();
|
||||
if (event.getCount() > 0 || drmBuffer.length > 0) {
|
||||
jclass hashMapClazz = env->FindClass("java/util/HashMap");
|
||||
jmethodID hashMapInitId = env->GetMethodID(hashMapClazz, "<init>", "()V");
|
||||
jmethodID hashMapPutId = env->GetMethodID(hashMapClazz, "put",
|
||||
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
|
||||
jobject hashMapObject = env->NewObject(hashMapClazz, hashMapInitId);
|
||||
env->DeleteLocalRef(hashMapClazz);
|
||||
|
||||
if (0 < drmBuffer.length) {
|
||||
jfieldID fid = env->GetStaticFieldID(
|
||||
mClass, "EXTENDED_INFO_DATA", "Ljava/lang/String;");
|
||||
jstring key = (jstring) env->GetStaticObjectField(mClass, fid);
|
||||
|
||||
jbyteArray valueByte = env->NewByteArray(drmBuffer.length);
|
||||
env->SetByteArrayRegion(valueByte, 0, drmBuffer.length, (jbyte*) drmBuffer.data);
|
||||
env->CallObjectMethod(hashMapObject, hashMapPutId, key, valueByte);
|
||||
env->DeleteLocalRef(valueByte);
|
||||
env->DeleteLocalRef(key);
|
||||
}
|
||||
DrmInfoEvent::KeyIterator keyIt = event.keyIterator();
|
||||
while (keyIt.hasNext()) {
|
||||
String8 mapKey = keyIt.next();
|
||||
jstring key = env->NewStringUTF(mapKey.string());
|
||||
jstring value = env->NewStringUTF(event.get(mapKey).string());
|
||||
env->CallObjectMethod(hashMapObject, hashMapPutId, key, value);
|
||||
env->DeleteLocalRef(value);
|
||||
env->DeleteLocalRef(key);
|
||||
}
|
||||
env->CallStaticVoidMethod(
|
||||
mClass,
|
||||
env->GetStaticMethodID(mClass, "notify",
|
||||
"(Ljava/lang/Object;IILjava/lang/String;Ljava/util/HashMap;)V"),
|
||||
mObject, uniqueId, type, message, hashMapObject);
|
||||
env->DeleteLocalRef(hashMapObject);
|
||||
} else {
|
||||
env->CallStaticVoidMethod(
|
||||
mClass,
|
||||
env->GetStaticMethodID(mClass, "notify",
|
||||
"(Ljava/lang/Object;IILjava/lang/String;)V"),
|
||||
mObject, uniqueId, type, message);
|
||||
}
|
||||
env->DeleteLocalRef(message);
|
||||
env->CallStaticVoidMethod(
|
||||
mClass,
|
||||
env->GetStaticMethodID(mClass, "notify", "(Ljava/lang/Object;IILjava/lang/String;)V"),
|
||||
mObject, uniqueId, type, message);
|
||||
}
|
||||
|
||||
static Mutex sLock;
|
||||
|
Reference in New Issue
Block a user