Lines Matching refs:env
38 var = env->FindClass(className); \
42 var = env->GetFieldID(clazz, fieldName, fieldDescriptor); \
46 var = env->GetMethodID(clazz, fieldName, fieldDescriptor); \
50 var = env->GetStaticFieldID(clazz, fieldName, fieldDescriptor); \
54 var = env->GetStaticMethodID(clazz, fieldName, fieldDescriptor); \
121 JNIDrmListener(JNIEnv* env, jobject thiz, jobject weak_thiz);
130 JNIDrmListener::JNIDrmListener(JNIEnv* env, jobject thiz, jobject weak_thiz)
134 jclass clazz = env->GetObjectClass(thiz);
137 jniThrowException(env, "java/lang/Exception",
141 mClass = (jclass)env->NewGlobalRef(clazz);
145 mObject = env->NewGlobalRef(weak_thiz);
151 JNIEnv *env = AndroidRuntime::getJNIEnv();
152 env->DeleteGlobalRef(mObject);
153 env->DeleteGlobalRef(mClass);
180 JNIEnv *env = AndroidRuntime::getJNIEnv();
182 jobject jParcel = createJavaParcelObject(env);
184 Parcel* nativeParcel = parcelForJavaObject(env, jParcel);
186 env->CallStaticVoidMethod(mClass, gFields.post_event, mObject,
191 if (env->ExceptionCheck()) {
193 LOGW_EX(env);
194 env->ExceptionClear();
200 JNIEnv *env, status_t err, const char *msg = NULL) {
240 jniThrowException(env, "java/lang/IllegalArgumentException", msg);
243 jniThrowException(env, "android/media/NotProvisionedException", msg);
246 jniThrowException(env, "android/media/DeniedByServerException", msg);
259 jniThrowException(env, "java/lang/IllegalStateException", msg);
265 static sp<IDrm> GetDrm(JNIEnv *env, jobject thiz) {
266 JDrm *jdrm = (JDrm *)env->GetIntField(thiz, gFields.context);
271 JNIEnv *env, jobject thiz, const uint8_t uuid[16]) {
272 mObject = env->NewWeakGlobalRef(thiz);
282 JNIEnv *env = AndroidRuntime::getJNIEnv();
284 env->DeleteWeakGlobalRef(mObject);
363 static Vector<uint8_t> JByteArrayToVector(JNIEnv *env, jbyteArray const &byteArray) {
365 size_t length = env->GetArrayLength(byteArray);
367 env->GetByteArrayRegion(byteArray, 0, length, (jbyte *)vector.editArray());
371 static jbyteArray VectorToJByteArray(JNIEnv *env, Vector<uint8_t> const &vector) {
373 jbyteArray result = env->NewByteArray(length);
375 env->SetByteArrayRegion(result, 0, length, (jbyte *)vector.array());
380 static String8 JStringToString8(JNIEnv *env, jstring const &jstr) {
383 const char *s = env->GetStringUTFChars(jstr, NULL);
386 env->ReleaseStringUTFChars(jstr, s);
403 static KeyedVector<String8, String8> HashMapToKeyedVector(JNIEnv *env, jobject &hashMap) {
408 jobject entrySet = env->CallObjectMethod(hashMap, gFields.hashmap.entrySet);
410 jobject iterator = env->CallObjectMethod(entrySet, gFields.set.iterator);
412 jboolean hasNext = env->CallBooleanMethod(iterator, gFields.iterator.hasNext);
414 jobject entry = env->CallObjectMethod(iterator, gFields.iterator.next);
416 jobject obj = env->CallObjectMethod(entry, gFields.entry.getKey);
417 if (!env->IsInstanceOf(obj, clazz)) {
418 jniThrowException(env, "java/lang/IllegalArgumentException",
423 obj = env->CallObjectMethod(entry, gFields.entry.getValue);
424 if (!env->IsInstanceOf(obj, clazz)) {
425 jniThrowException(env, "java/lang/IllegalArgumentException",
430 String8 key = JStringToString8(env, jkey);
431 String8 value = JStringToString8(env, jvalue);
434 env->DeleteLocalRef(jkey);
435 env->DeleteLocalRef(jvalue);
436 hasNext = env->CallBooleanMethod(iterator, gFields.iterator.hasNext);
438 env->DeleteLocalRef(entry);
440 env->DeleteLocalRef(iterator);
442 env->DeleteLocalRef(entrySet);
447 static jobject KeyedVectorToHashMap (JNIEnv *env, KeyedVector<String8, String8> const &map) {
450 jobject hashMap = env->NewObject(clazz, gFields.hashmap.init);
452 jstring jkey = env->NewStringUTF(map.keyAt(i).string());
453 jstring jvalue = env->NewStringUTF(map.valueAt(i).string());
454 env->CallObjectMethod(hashMap, gFields.hashmap.put, jkey, jvalue);
455 env->DeleteLocalRef(jkey);
456 env->DeleteLocalRef(jvalue);
461 static jobject ListOfVectorsToArrayListOfByteArray(JNIEnv *env,
465 jobject arrayList = env->NewObject(clazz, gFields.arraylist.init);
468 jbyteArray byteArray = VectorToJByteArray(env, *iter);
469 env->CallBooleanMethod(arrayList, gFields.arraylist.add, byteArray);
470 env->DeleteLocalRef(byteArray);
482 JNIEnv *env, jobject thiz, const sp<JDrm> &drm) {
483 sp<JDrm> old = (JDrm *)env->GetIntField(thiz, gFields.context);
490 env->SetIntField(thiz, gFields.context, (int)drm.get());
495 static bool CheckSession(JNIEnv *env, const sp<IDrm> &drm, jbyteArray const &jsessionId)
498 jniThrowException(env, "java/lang/IllegalStateException", "MediaDrm obj is null");
503 jniThrowException(env, "java/lang/IllegalArgumentException", "sessionId is null");
509 static void android_media_MediaDrm_release(JNIEnv *env, jobject thiz) {
510 sp<JDrm> drm = setDrm(env, thiz, NULL);
516 static void android_media_MediaDrm_native_init(JNIEnv *env) {
525 gEventTypes.kEventProvisionRequired = env->GetStaticIntField(clazz, field);
527 gEventTypes.kEventKeyRequired = env->GetStaticIntField(clazz, field);
529 gEventTypes.kEventKeyExpired = env->GetStaticIntField(clazz, field);
531 gEventTypes.kEventVendorDefined = env->GetStaticIntField(clazz, field);
534 gKeyTypes.kKeyTypeStreaming = env->GetStaticIntField(clazz, field);
536 gKeyTypes.kKeyTypeOffline = env
538 gKeyTypes.kKeyTypeRelease = env->GetStaticIntField(clazz, field);
572 JNIEnv *env, jobject thiz,
576 jniThrowException(env, "java/lang/IllegalArgumentException", "uuid is null");
580 Vector<uint8_t> uuid = JByteArrayToVector(env, uuidObj);
583 jniThrowException(env, "java/lang/IllegalArgumentException",
588 sp<JDrm> drm = new JDrm(env, thiz, uuid.array());
594 env,
600 sp<JNIDrmListener> listener = new JNIDrmListener(env, thiz, weak_this);
602 setDrm(env, thiz, drm);
606 JNIEnv *env, jobject thiz) {
607 android_media_MediaDrm_release(env, thiz);
611 JNIEnv *env, jobject thiz, jbyteArray uuidObj) {
614 jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
618 Vector<uint8_t> uuid = JByteArrayToVector(env, uuidObj);
622 env,
632 JNIEnv *env, jobject thiz) {
633 sp<IDrm> drm = GetDrm(env, thiz);
636 jniThrowException(env, "java/lang/IllegalStateException",
644 if (throwExceptionAsNecessary(env, err, "Failed to open session")) {
648 return VectorToJByteArray(env, sessionId);
652 JNIEnv *env, jobject thiz, jbyteArray jsessionId) {
653 sp<IDrm> drm = GetDrm(env, thiz);
655 if (!CheckSession(env, drm, jsessionId)) {
659 Vector<uint8_t> sessionId(JByteArrayToVector(env, jsessionId));
663 throwExceptionAsNecessary(env, err, "Failed to close session");
667 JNIEnv *env, jobject thiz, jbyteArray jsessionId, jbyteArray jinitData,
669 sp<IDrm> drm = GetDrm(env, thiz);
671 if (!CheckSession(env, drm, jsessionId)) {
675 Vector<uint8_t> sessionId(JByteArrayToVector(env, jsessionId));
679 initData = JByteArrayToVector(env, jinitData);
684 mimeType = JStringToString8(env, jmimeType);
695 jniThrowException(env, "java/lang/IllegalArgumentException",
702 optParams = HashMapToKeyedVector(env, joptParams);
711 if (throwExceptionAsNecessary(env, err, "Failed to get key request")) {
722 keyObj = env->AllocObject(clazz);
723 jbyteArray jrequest = VectorToJByteArray(env, request);
724 env->SetObjectField(keyObj, gFields.keyRequest.data, jrequest);
726 jstring jdefaultUrl = env->NewStringUTF(defaultUrl.string());
727 env->SetObjectField(keyObj, gFields.keyRequest.defaultUrl, jdefaultUrl);
734 JNIEnv *env, jobject thiz, jbyteArray jsessionId, jbyteArray jresponse) {
735 sp<IDrm> drm = GetDrm(env, thiz);
737 if (!CheckSession(env, drm, jsessionId)) {
741 Vector<uint8_t> sessionId(JByteArrayToVector(env, jsessionId));
744 jniThrowException(env, "java/lang/IllegalArgumentException",
748 Vector<uint8_t> response(JByteArrayToVector(env, jresponse));
753 throwExceptionAsNecessary(env, err, "Failed to handle key response");
754 return VectorToJByteArray(env, keySetId);
758 JNIEnv *env, jobject thiz, jbyteArray jkeysetId) {
759 sp<IDrm> drm = GetDrm(env, thiz);
762 jniThrowException(env, "java/lang/IllegalArgumentException",
767 Vector<uint8_t> keySetId(JByteArrayToVector(env, jkeysetId));
771 throwExceptionAsNecessary(env, err, "Failed to remove keys");
775 JNIEnv *env, jobject thiz, jbyteArray jsessionId,
778 sp<IDrm> drm = GetDrm(env, thiz);
780 if (!CheckSession(env, drm, jsessionId)) {
785 jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
789 Vector<uint8_t> sessionId(JByteArrayToVector(env, jsessionId));
790 Vector<uint8_t> keySetId(JByteArrayToVector(env, jkeysetId));
794 throwExceptionAsNecessary(env, err, "Failed to restore keys");
798 JNIEnv *env, jobject thiz, jbyteArray jsessionId) {
799 sp<IDrm> drm = GetDrm(env, thiz);
801 if (!CheckSession(env, drm, jsessionId)) {
804 Vector<uint8_t> sessionId(JByteArrayToVector(env, jsessionId));
810 if (throwExceptionAsNecessary(env, err, "Failed to query key status")) {
814 return KeyedVectorToHashMap(env, infoMap);
818 JNIEnv *env, jobject thiz) {
819 sp<IDrm> drm = GetDrm(env, thiz);
822 jniThrowException(env, "java/lang/IllegalStateException",
832 if (throwExceptionAsNecessary(env, err, "Failed to get provision request")) {
843 provisionObj = env->AllocObject(clazz);
844 jbyteArray jrequest = VectorToJByteArray(env, request);
845 env->SetObjectField(provisionObj, gFields.provisionRequest.data, jrequest);
847 jstring jdefaultUrl = env->NewStringUTF(defaultUrl.string());
848 env->SetObjectField(provisionObj, gFields.provisionRequest.defaultUrl, jdefaultUrl);
855 JNIEnv *env, jobject thiz, jbyteArray jresponse) {
856 sp<IDrm> drm = GetDrm(env, thiz);
859 jniThrowException(env, "java/lang/IllegalStateException",
865 jniThrowException(env, "java/lang/IllegalArgumentException",
870 Vector<uint8_t> response(JByteArrayToVector(env, jresponse));
874 throwExceptionAsNecessary(env, err, "Failed to handle provision response");
878 JNIEnv *env, jobject thiz) {
879 sp<IDrm> drm = GetDrm(env, thiz);
882 jniThrowException(env, "java/lang/IllegalStateException",
891 if (throwExceptionAsNecessary(env, err, "Failed to get secure stops")) {
895 return ListOfVectorsToArrayListOfByteArray(env, secureStops);
899 JNIEnv *env, jobject thiz, jbyteArray jssRelease) {
900 sp<IDrm> drm = GetDrm(env, thiz);
903 jniThrowException(env, "java/lang/IllegalStateException",
908 Vector<uint8_t> ssRelease(JByteArrayToVector(env, jssRelease));
912 throwExceptionAsNecessary(env, err, "Failed to release secure stops");
916 JNIEnv *env, jobject thiz, jstring jname) {
917 sp<IDrm> drm = GetDrm(env, thiz);
920 jniThrowException(env, "java/lang/IllegalStateException",
926 jniThrowException(env, "java/lang/IllegalArgumentException",
931 String8 name = JStringToString8(env, jname);
936 if (throwExceptionAsNecessary(env, err, "Failed to get property")) {
940 return env->NewStringUTF(value.string());
944 JNIEnv *env, jobject thiz, jstring jname) {
945 sp<IDrm> drm = GetDrm(env, thiz);
948 jniThrowException(env, "java/lang/IllegalStateException",
954 jniThrowException(env, "java/lang/IllegalArgumentException",
959 String8 name = JStringToString8(env, jname);
964 if (throwExceptionAsNecessary(env, err, "Failed to get property")) {
968 return VectorToJByteArray(env, value);
972 JNIEnv *env, jobject thiz, jstring jname, jstring jvalue) {
973 sp<IDrm> drm = GetDrm(env, thiz);
976 jniThrowException(env, "java/lang/IllegalStateException",
982 jniThrowException(env, "java/lang/IllegalArgumentException",
988 jniThrowException(env, "java/lang/IllegalArgumentException",
993 String8 name = JStringToString8(env, jname);
994 String8 value = JStringToString8(env, jvalue);
998 throwExceptionAsNecessary(env, err, "Failed to set property");
1002 JNIEnv *env, jobject thiz, jstring jname, jbyteArray jvalue) {
1003 sp<IDrm> drm = GetDrm(env, thiz);
1006 jniThrowException(env, "java/lang/IllegalStateException",
1012 jniThrowException(env, "java/lang/IllegalArgumentException",
1018 jniThrowException(env, "java/lang/IllegalArgumentException",
1023 String8 name = JStringToString8(env, jname);
1024 Vector<uint8_t> value = JByteArrayToVector(env, jvalue);
1028 throwExceptionAsNecessary(env, err, "Failed to set property");
1032 JNIEnv *env, jobject thiz, jobject jdrm, jbyteArray jsessionId,
1035 sp<IDrm> drm = GetDrm(env, jdrm);
1037 if (!CheckSession(env, drm, jsessionId)) {
1042 jniThrowException(env, "java/lang/IllegalArgumentException",
1047 Vector<uint8_t> sessionId(JByteArrayToVector(env, jsessionId));
1048 String8 algorithm = JStringToString8(env, jalgorithm);
1052 throwExceptionAsNecessary(env, err, "Failed to set cipher algorithm");
1056 JNIEnv *env, jobject thiz, jobject jdrm, jbyteArray jsessionId,
1059 sp<IDrm> drm = GetDrm(env, jdrm);
1061 if (!CheckSession(env, drm, jsessionId)) {
1066 jniThrowException(env, "java/lang/IllegalArgumentException",
1071 env, jsessionId));
1072 String8 algorithm = JStringToString8(env, jalgorithm);
1076 throwExceptionAsNecessary(env, err, "Failed to set mac algorithm");
1081 JNIEnv *env, jobject thiz, jobject jdrm, jbyteArray jsessionId,
1084 sp<IDrm> drm = GetDrm(env, jdrm);
1086 if (!CheckSession(env, drm, jsessionId)) {
1091 jniThrowException(env, "java/lang/IllegalArgumentException",
1096 Vector<uint8_t> sessionId(JByteArrayToVector(env, jsessionId));
1097 Vector<uint8_t> keyId(JByteArrayToVector(env, jkeyId));
1098 Vector<uint8_t> input(JByteArrayToVector(env, jinput));
1099 Vector<uint8_t> iv(JByteArrayToVector(env, jiv));
1104 throwExceptionAsNecessary(env, err, "Failed to encrypt");
1106 return VectorToJByteArray(env, output);
1110 JNIEnv *env, jobject thiz, jobject jdrm, jbyteArray jsessionId,
1113 sp<IDrm> drm = GetDrm(env, jdrm);
1115 if (!CheckSession(env, drm, jsessionId)) {
1120 jniThrowException(env, "java/lang/IllegalArgumentException",
1125 Vector<uint8_t> sessionId(JByteArrayToVector(env, jsessionId));
1126 Vector<uint8_t> keyId(JByteArrayToVector(env, jkeyId));
1127 Vector<uint8_t> input(JByteArrayToVector(env, jinput));
1128 Vector<uint8_t> iv(JByteArrayToVector(env, jiv));
1132 throwExceptionAsNecessary(env, err, "Failed to decrypt");
1134 return VectorToJByteArray(env, output);
1138 JNIEnv *env, jobject thiz, jobject jdrm, jbyteArray jsessionId,
1141 sp<IDrm> drm = GetDrm(env, jdrm);
1143 if (!CheckSession(env, drm, jsessionId)) {
1148 jniThrowException(env, "java/lang/IllegalArgumentException",
1153 Vector<uint8_t> sessionId(JByteArrayToVector(env, jsessionId));
1154 Vector<uint8_t> keyId(JByteArrayToVector(env, jkeyId));
1155 Vector<uint8_t> message(JByteArrayToVector(env, jmessage));
1160 throwExceptionAsNecessary(env, err, "Failed to sign");
1162 return VectorToJByteArray(env, signature);
1166 JNIEnv *env, jobject thiz, jobject jdrm, jbyteArray jsessionId,
1169 sp<IDrm> drm = GetDrm(env, jdrm);
1171 if (!CheckSession(env, drm, jsessionId)) {
1176 jniThrowException(env, "java/lang/IllegalArgumentException",
1181 Vector<uint8_t> sessionId(JByteArrayToVector(env, jsessionId));
1182 Vector<uint8_t> keyId(JByteArrayToVector(env, jkeyId));
1183 Vector<uint8_t> message(JByteArrayToVector(env, jmessage));
1184 Vector<uint8_t> signature(JByteArrayToVector(env, jsignature));
1189 throwExceptionAsNecessary(env, err, "Failed to verify");
1274 int register_android_media_Drm(JNIEnv *env) {
1275 return AndroidRuntime::registerNativeMethods(env,