static void JNICALL JniTriggerEvent(JNIEnv* env, jclass clazz, jlong ptr, jstring jEventName, jarray jJsPtrs) { AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr); std::string eventName = JniJavaToStdString(env, jEventName); AdblockPlus::JsValueList args; if (jJsPtrs) { jlong* ptrs = (jlong*)env->GetPrimitiveArrayCritical(jJsPtrs, 0); jsize length = env->GetArrayLength(jJsPtrs); for (jsize i = 0; i < length; i++) { args.push_back(JniGetJsValuePtr(ptrs[i])); } env->ReleasePrimitiveArrayCritical(jJsPtrs, ptrs, JNI_ABORT); } try { engine->TriggerEvent(eventName, args); } CATCH_AND_THROW(env) }
static jlong JNICALL JniCtor(JNIEnv* env, jclass clazz, jlong jsValue) { try { return JniPtrToLong(new AdblockPlus::FilterPtr(new AdblockPlus::Filter(JniGetJsValuePtr(jsValue)))); } CATCH_THROW_AND_RETURN(env, 0) }