Object::LocalRef AndroidBridge::ChannelCreate(Object::Param stream) { JNIEnv* const env = GetEnvForThread(); auto rv = Object::LocalRef::Adopt(env, env->CallStaticObjectMethod( sBridge->jChannels, sBridge->jChannelCreate, stream.Get())); MOZ_CATCH_JNI_EXCEPTION(env); return rv; }
nsresult AndroidBridge::InputStreamRead(Object::Param obj, char *aBuf, uint32_t aCount, uint32_t *aRead) { JNIEnv* const env = GetEnvForThread(); auto arr = ByteBuffer::New(aBuf, aCount); jint read = env->CallIntMethod(obj.Get(), sBridge->jByteBufferRead, arr.Get()); if (env->ExceptionCheck()) { env->ExceptionClear(); return NS_ERROR_FAILURE; } if (read <= 0) { *aRead = 0; return NS_OK; } *aRead = read; return NS_OK; }
uint32_t AndroidBridge::InputStreamAvailable(Object::Param obj) { JNIEnv* const env = GetEnvForThread(); auto rv = env->CallIntMethod(obj.Get(), sBridge->jAvailable); MOZ_CATCH_JNI_EXCEPTION(env); return rv; }
void AndroidBridge::InputStreamClose(Object::Param obj) { JNIEnv* const env = GetEnvForThread(); env->CallVoidMethod(obj.Get(), sBridge->jClose); MOZ_CATCH_JNI_EXCEPTION(env); }