Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 82bdd3f7 authored by Jeff Tinker's avatar Jeff Tinker Committed by Android Git Automerger
Browse files

am f2455df4: Merge "Revert "Enhancement for OnInfo callback on DRM Framework"" into klp-dev

* commit 'f2455df4':
  Revert "Enhancement for OnInfo callback on DRM Framework"
parents 627f28c0 f2455df4
Loading
Loading
Loading
Loading
+9 −27
Original line number Diff line number Diff line
@@ -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;
                }

+5 −43
Original line number Diff line number Diff line
@@ -169,50 +169,12 @@ 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"),
            env->GetStaticMethodID(mClass, "notify", "(Ljava/lang/Object;IILjava/lang/String;)V"),
            mObject, uniqueId, type, message);
}
    env->DeleteLocalRef(message);
}

static Mutex sLock;