Merge "Handle JavaBBinderHolder not init w/ mockito"
This commit is contained in:
@@ -101,9 +101,18 @@ static void android_os_Parcel_markSensitive(jlong nativePtr)
|
|||||||
static void android_os_Parcel_markForBinder(JNIEnv* env, jclass clazz, jlong nativePtr,
|
static void android_os_Parcel_markForBinder(JNIEnv* env, jclass clazz, jlong nativePtr,
|
||||||
jobject binder)
|
jobject binder)
|
||||||
{
|
{
|
||||||
|
LOG_ALWAYS_FATAL_IF(binder == nullptr, "Null binder specified for markForBinder");
|
||||||
|
|
||||||
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
|
Parcel* parcel = reinterpret_cast<Parcel*>(nativePtr);
|
||||||
if (parcel) {
|
if (parcel) {
|
||||||
parcel->markForBinder(ibinderForJavaObject(env, binder));
|
sp<IBinder> nBinder = ibinderForJavaObject(env, binder);
|
||||||
|
|
||||||
|
if (nBinder == nullptr) {
|
||||||
|
ALOGE("Native binder in markForBinder is null for non-null jobject");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
parcel->markForBinder(nBinder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -798,6 +798,12 @@ sp<IBinder> ibinderForJavaObject(JNIEnv* env, jobject obj)
|
|||||||
if (env->IsInstanceOf(obj, gBinderOffsets.mClass)) {
|
if (env->IsInstanceOf(obj, gBinderOffsets.mClass)) {
|
||||||
JavaBBinderHolder* jbh = (JavaBBinderHolder*)
|
JavaBBinderHolder* jbh = (JavaBBinderHolder*)
|
||||||
env->GetLongField(obj, gBinderOffsets.mObject);
|
env->GetLongField(obj, gBinderOffsets.mObject);
|
||||||
|
|
||||||
|
if (jbh == nullptr) {
|
||||||
|
ALOGE("JavaBBinderHolder null on binder");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
return jbh->get(env, obj);
|
return jbh->get(env, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user