Lines Matching defs:env

144 static void incRefsCreated(JNIEnv* env)
149 env->CallStaticVoidMethod(gBinderInternalOffsets.mClass,
156 static JavaVM* jnienv_to_javavm(JNIEnv* env)
159 return env->GetJavaVM(&vm) >= 0 ? vm : NULL;
164 JNIEnv* env;
165 return vm->GetEnv((void **)&env, JNI_VERSION_1_4) >= 0 ? env : NULL;
168 static void report_exception(JNIEnv* env, jthrowable excep, const char* msg)
170 env->ExceptionClear();
172 jstring tagstr = env->NewStringUTF(LOG_TAG);
175 msgstr = env->NewStringUTF(msg);
179 env->ExceptionClear(); /* assume exception (OOM?) was thrown */
185 env->CallStaticIntMethod(
187 if (env->ExceptionCheck()) {
190 env->ExceptionClear();
193 if (env->IsInstanceOf(excep, gErrorOffsets.mClass)) {
203 env->Throw(excep);
204 env->ExceptionDescribe();
211 env->DeleteLocalRef(tagstr);
212 env->DeleteLocalRef(msgstr);
220 JavaBBinder(JNIEnv* env, jobject object)
221 : mVM(jnienv_to_javavm(env)), mObject(env->NewGlobalRef(object))
225 incRefsCreated(env);
243 JNIEnv* env = javavm_to_jnienv(mVM);
244 env->DeleteGlobalRef(mObject);
250 JNIEnv* env = javavm_to_jnienv(mVM);
252 ALOGV("onTransact() on %p calling object %p in env %p vm %p\n", this, mObject, env, mVM);
260 jboolean res = env->CallBooleanMethod(mObject, gBinderOffsets.mExecTransact,
263 if (env->ExceptionCheck()) {
264 jthrowable excep = env->ExceptionOccurred();
265 report_exception(env, excep,
271 env->DeleteLocalRef(excep);
279 set_dalvik_blockguard_policy(env, strict_policy_before);
282 if (env->ExceptionCheck()) {
283 jthrowable excep = env->ExceptionOccurred();
284 report_exception(env, excep,
287 env->DeleteLocalRef(excep);
317 sp<JavaBBinder> get(JNIEnv* env, jobject obj)
322 b = new JavaBBinder(env, obj);
370 JavaDeathRecipient(JNIEnv* env, jobject object, const sp<DeathRecipientList>& list)
371 : mVM(jnienv_to_javavm(env)), mObject(env->NewGlobalRef(object)),
380 incRefsCreated(env);
387 JNIEnv* env = javavm_to_jnienv(mVM);
389 env->CallStaticVoidMethod(gBinderProxyOffsets.mClass,
391 if (env->ExceptionCheck()) {
392 jthrowable excep = env->ExceptionOccurred();
393 report_exception(env, excep,
405 mObjectWeak = env->NewWeakGlobalRef(mObject);
406 env->DeleteGlobalRef(mObject);
425 JNIEnv* env = javavm_to_jnienv(mVM);
428 result = env->IsSameObject(obj, mObject);
430 jobject me = env->NewLocalRef(mObjectWeak);
431 result = env->IsSameObject(obj, me);
432 env->DeleteLocalRef(me);
441 JNIEnv* env = javavm_to_jnienv(mVM);
442 ScopedLocalRef<jclass> objClassRef(env, env->GetObjectClass(mObject));
443 ScopedLocalRef<jstring> nameRef(env,
444 (jstring) env->CallObjectMethod(objClassRef.get(), gClassOffsets.mGetName));
445 ScopedUtfChars nameUtf(env, nameRef.get());
452 env->ExceptionClear();
462 JNIEnv* env = javavm_to_jnienv(mVM);
464 env->DeleteGlobalRef(mObject);
466 env->DeleteWeakGlobalRef(mObjectWeak);
541 JNIEnv* env = javavm_to_jnienv((JavaVM*)cleanupCookie);
542 env->DeleteGlobalRef((jobject)obj);
547 jobject javaObjectForIBinder(JNIEnv* env, const sp<IBinder>& val)
565 jobject res = jniGetReferent(env, object);
573 env->DeleteGlobalRef(object);
576 object = env->NewObject(gBinderProxyOffsets.mClass, gBinderProxyOffsets.mConstructor);
580 env->SetLongField(object, gBinderProxyOffsets.mObject, (jlong)val.get());
585 jobject refObject = env->NewGlobalRef(
586 env->GetObjectField(object, gBinderProxyOffsets.mSelf));
588 jnienv_to_javavm(env), proxy_cleanup);
593 env->SetLongField(object, gBinderProxyOffsets.mOrgue, reinterpret_cast<jlong>(drl.get()));
597 incRefsCreated(env);
603 sp<IBinder> ibinderForJavaObject(JNIEnv* env, jobject obj)
607 if (env->IsInstanceOf(obj, gBinderOffsets.mClass)) {
609 env->GetLongField(obj, gBinderOffsets.mObject);
610 return jbh != NULL ? jbh->get(env, obj) : NULL;
613 if (env->IsInstanceOf(obj, gBinderProxyOffsets.mClass)) {
615 env->GetLongField(obj, gBinderProxyOffsets.mObject);
622 jobject newParcelFileDescriptor(JNIEnv* env, jobject fileDesc)
624 return env->NewObject(
628 void set_dalvik_blockguard_policy(JNIEnv* env, jint strict_policy)
632 env->CallStaticVoidMethod(gStrictModeCallbackOffsets.mClass,
637 void signalExceptionForError(JNIEnv* env, jobject obj, status_t err,
642 jniThrowException(env, "java/lang/RuntimeException", "Unknown error");
645 jniThrowException(env, "java/lang/OutOfMemoryError", NULL);
648 jniThrowException(env, "java/lang/UnsupportedOperationException", NULL);
651 jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
654 jniThrowException(env, "java/lang/IndexOutOfBoundsException", NULL);
657 jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
660 jniThrowException(env, "java/util/NoSuchElementException", NULL);
663 jniThrowException(env, "java/lang/SecurityException", NULL);
666 jniThrowException(env, "android/os/ParcelFormatException", "Not enough data");
669 jniThrowException(env, "java/lang/RuntimeException", "Not initialized");
672 jniThrowException(env, "java/lang/RuntimeException", "Item already exists");
676 jniThrowException(env, canThrowRemoteException
681 jniThrowException(env, "java/lang/RuntimeException", "Unknown transaction code");
708 jniThrowException(env, exceptionToThrow, msg);
711 jniThrowException(env, "java/lang/RuntimeException",
715 jniThrowNullPointerException(env, NULL);
718 jniThrowException(env, "java/lang/RuntimeException",
722 jniThrowException(env, "java/lang/RuntimeException",
726 jniThrowException(env, "java/lang/RuntimeException",
730 jniThrowException(env, "java/lang/RuntimeException",
734 jniThrowException(env, "java/lang/RuntimeException",
738 jniThrowException(env, "java/lang/RuntimeException",
742 jniThrowException(env, "java/lang/RuntimeException",
746 jniThrowException(env, "java/lang/RuntimeException",
754 jniThrowException(env, canThrowRemoteException
764 static jint android_os_Binder_getCallingPid(JNIEnv* env, jobject clazz)
769 static jint android_os_Binder_getCallingUid(JNIEnv* env, jobject clazz)
774 static jlong android_os_Binder_clearCallingIdentity(JNIEnv* env, jobject clazz)
779 static void android_os_Binder_restoreCallingIdentity(JNIEnv* env, jobject clazz, jlong token)
787 jniThrowException(env, "java/lang/IllegalStateException", buf);
793 static void android_os_Binder_setThreadStrictModePolicy(JNIEnv* env, jobject clazz, jint policyMask)
798 static jint android_os_Binder_getThreadStrictModePolicy(JNIEnv* env, jobject clazz)
803 static void android_os_Binder_flushPendingCommands(JNIEnv* env, jobject clazz)
808 static void android_os_Binder_init(JNIEnv* env, jobject obj)
812 jniThrowException(env, "java/lang/OutOfMemoryError", NULL);
817 env->SetLongField(obj, gBinderOffsets.mObject, (jlong)jbh);
820 static void android_os_Binder_destroy(JNIEnv* env, jobject obj)
823 env->GetLongField(obj, gBinderOffsets.mObject);
825 env->SetLongField(obj, gBinderOffsets.mObject, 0);
839 static void android_os_Binder_blockUntilThreadAvailable(JNIEnv* env, jobject clazz)
862 static int int_register_android_os_Binder(JNIEnv* env)
864 jclass clazz = FindClassOrDie(env, kBinderPathName);
866 gBinderOffsets.mClass = MakeGlobalRefOrDie(env, clazz);
867 gBinderOffsets.mExecTransact = GetMethodIDOrDie(env, clazz, "execTransact", "(IJJI)Z");
868 gBinderOffsets.mObject = GetFieldIDOrDie(env, clazz, "mObject", "J");
871 env, kBinderPathName,
881 jint android_os_Debug_getLocalObjectCount(JNIEnv* env, jobject clazz)
886 jint android_os_Debug_getProxyObjectCount(JNIEnv* env, jobject clazz)
891 jint android_os_Debug_getDeathObjectCount(JNIEnv* env, jobject clazz)
902 static jobject android_os_BinderInternal_getContextObject(JNIEnv* env, jobject clazz)
905 return javaObjectForIBinder(env, b);
908 static void android_os_BinderInternal_joinThreadPool(JNIEnv* env, jobject clazz)
914 static void android_os_BinderInternal_disableBackgroundScheduling(JNIEnv* env,
920 static void android_os_BinderInternal_setMaxThreads(JNIEnv* env,
926 static void android_os_BinderInternal_handleGc(JNIEnv* env, jobject clazz)
945 static int int_register_android_os_BinderInternal(JNIEnv* env)
947 jclass clazz = FindClassOrDie(env, kBinderInternalPathName);
949 gBinderInternalOffsets.mClass = MakeGlobalRefOrDie(env, clazz);
950 gBinderInternalOffsets.mForceGc = GetStaticMethodIDOrDie(env, clazz, "forceBinderGc", "()V");
953 env, kBinderInternalPathName,
961 static jboolean android_os_BinderProxy_pingBinder(JNIEnv* env, jobject obj)
964 env->GetLongField(obj, gBinderProxyOffsets.mObject);
972 static jstring android_os_BinderProxy_getInterfaceDescriptor(JNIEnv* env, jobject obj)
974 IBinder* target = (IBinder*) env->GetLongField(obj, gBinderProxyOffsets.mObject);
977 return env->NewString(reinterpret_cast<const jchar*>(desc.string()),
980 jniThrowException(env, "java/lang/RuntimeException",
985 static jboolean android_os_BinderProxy_isBinderAlive(JNIEnv* env, jobject obj)
988 env->GetLongField(obj, gBinderProxyOffsets.mObject);
1093 static jboolean android_os_BinderProxy_transact(JNIEnv* env, jobject obj,
1097 jniThrowNullPointerException(env, NULL);
1101 Parcel* data = parcelForJavaObject(env, dataObj);
1105 Parcel* reply = parcelForJavaObject(env, replyObj);
1111 env->GetLongField(obj, gBinderProxyOffsets.mObject);
1113 jniThrowException(env, "java/lang/IllegalStateException", "Binder has been finalized!");
1149 signalExceptionForError(env, obj, err, true /*canThrowRemoteException*/, data->dataSize());
1153 static void android_os_BinderProxy_linkToDeath(JNIEnv* env, jobject obj,
1157 jniThrowNullPointerException(env, NULL);
1162 env->GetLongField(obj, gBinderProxyOffsets.mObject);
1172 env->GetLongField(obj, gBinderProxyOffsets.mOrgue);
1173 sp<JavaDeathRecipient> jdr = new JavaDeathRecipient(env, recipient, list);
1179 signalExceptionForError(env, obj, err, true /*canThrowRemoteException*/);
1184 static jboolean android_os_BinderProxy_unlinkToDeath(JNIEnv* env, jobject obj,
1189 jniThrowNullPointerException(env, NULL);
1194 env->GetLongField(obj, gBinderProxyOffsets.mObject);
1207 env->GetLongField(obj, gBinderProxyOffsets.mOrgue);
1225 jniThrowException(env, "java/util/NoSuchElementException",
1233 static void android_os_BinderProxy_destroy(JNIEnv* env, jobject obj)
1239 env->GetLongField(obj, gBinderProxyOffsets.mObject);
1241 env->GetLongField(obj, gBinderProxyOffsets.mOrgue);
1245 env->SetLongField(obj, gBinderProxyOffsets.mObject, 0);
1246 env->SetLongField(obj, gBinderProxyOffsets.mOrgue, 0);
1269 static int int_register_android_os_BinderProxy(JNIEnv* env)
1271 jclass clazz = FindClassOrDie(env, "java/lang/Error");
1272 gErrorOffsets.mClass = MakeGlobalRefOrDie(env, clazz);
1274 clazz = FindClassOrDie(env, kBinderProxyPathName);
1275 gBinderProxyOffsets.mClass = MakeGlobalRefOrDie(env, clazz);
1276 gBinderProxyOffsets.mConstructor = GetMethodIDOrDie(env, clazz, "<init>", "()V");
1277 gBinderProxyOffsets.mSendDeathNotice = GetStaticMethodIDOrDie(env, clazz, "sendDeathNotice",
1280 gBinderProxyOffsets.mObject = GetFieldIDOrDie(env, clazz, "mObject", "J");
1281 gBinderProxyOffsets.mSelf = GetFieldIDOrDie(env, clazz, "mSelf",
1283 gBinderProxyOffsets.mOrgue = GetFieldIDOrDie(env, clazz, "mOrgue", "J");
1285 clazz = FindClassOrDie(env, "java/lang/Class");
1286 gClassOffsets.mGetName = GetMethodIDOrDie(env, clazz, "getName", "()Ljava/lang/String;");
1289 env, kBinderProxyPathName,
1297 int register_android_os_Binder(JNIEnv* env)
1299 if (int_register_android_os_Binder(env) < 0)
1301 if (int_register_android_os_BinderInternal(env) < 0)
1303 if (int_register_android_os_BinderProxy(env) < 0)
1306 jclass clazz = FindClassOrDie(env, "android/util/Log");
1307 gLogOffsets.mClass = MakeGlobalRefOrDie(env, clazz);
1308 gLogOffsets.mLogE = GetStaticMethodIDOrDie(env, clazz, "e",
1311 clazz = FindClassOrDie(env, "android/os/ParcelFileDescriptor");
1312 gParcelFileDescriptorOffsets.mClass = MakeGlobalRefOrDie(env, clazz);
1313 gParcelFileDescriptorOffsets.mConstructor = GetMethodIDOrDie(env, clazz, "<init>",
1316 clazz = FindClassOrDie(env, "android/os/StrictMode");
1317 gStrictModeCallbackOffsets.mClass = MakeGlobalRefOrDie(env, clazz);
1318 gStrictModeCallbackOffsets.mCallback = GetStaticMethodIDOrDie(env, clazz,