void JniJsValue_OnLoad(JavaVM* vm, JNIEnv* env, void* reserved)
{
    // precache for performance and avoid attaching threads
    jclass localJsValueClass = env->FindClass(PKG("JsValue"));
    globalJsValueClass = (jclass)env->NewGlobalRef(localJsValueClass);
    jsValueClassCtor = env->GetMethodID(globalJsValueClass, "<init>", "(J)V");
    env->DeleteLocalRef(localJsValueClass);
}
static jobject JNICALL JniGetType(JNIEnv* env, jclass clazz, jlong ptr)
{
  AdblockPlus::NotificationType type;
  try
  {
    type = GetNotificationPtr(ptr)->GetType();
  }
  CATCH_THROW_AND_RETURN(env, 0)

  const char* enumName = 0;

  switch (type)
  {
  case AdblockPlus::NotificationType::NOTIFICATION_TYPE_CRITICAL:
    enumName = "CRITICAL";
    break;
  case AdblockPlus::NotificationType::NOTIFICATION_TYPE_INFORMATION:
    enumName = "INFORMATION";
    break;
  case AdblockPlus::NotificationType::NOTIFICATION_TYPE_QUESTION:
    enumName = "QUESTION";
    break;
  default:
    enumName = "INVALID";
    break;
  }

  JniLocalReference<jclass> enumClass(
      env,
      env->FindClass(PKG("Notification$Type")));

  jfieldID enumField = env->GetStaticFieldID(
      *enumClass,
      enumName,
      TYP("Notification$Type"));

  return env->GetStaticObjectField(*enumClass, enumField);
}
static jobject JNICALL JniGetType(JNIEnv* env, jclass clazz, jlong ptr)
{
  AdblockPlus::Filter::Type type;
  try
  {
    type = GetFilterPtr(ptr)->GetType();
  }
  CATCH_THROW_AND_RETURN(env, 0)

  const char* enumName = 0;

  switch (type)
  {
  case AdblockPlus::Filter::TYPE_BLOCKING:
    enumName = "BLOCKING";
    break;
  case AdblockPlus::Filter::TYPE_COMMENT:
    enumName = "COMMENT";
    break;
  case AdblockPlus::Filter::TYPE_ELEMHIDE:
    enumName = "ELEMHIDE";
    break;
  case AdblockPlus::Filter::TYPE_ELEMHIDE_EXCEPTION:
    enumName = "ELEMHIDE_EXCEPTION";
    break;
  case AdblockPlus::Filter::TYPE_EXCEPTION:
    enumName = "EXCEPTION";
    break;
  default:
    enumName = "INVALID";
    break;
  }

  JniLocalReference<jclass> enumClass(env, env->FindClass(PKG("Filter$Type")));
  jfieldID enumField = env->GetStaticFieldID(*enumClass, enumName,
      TYP("Filter$Type"));
  return env->GetStaticObjectField(*enumClass, enumField);
}
JniCallbackBase::JniCallbackBase(JNIEnv* env, jobject callbackObject)
  : callbackObject(new JniGlobalReference<jobject>(env, callbackObject)),
    exceptionLoggerClass(new JniGlobalReference<jclass>(env, env->FindClass(PKG("JniExceptionHandler"))))
{
  env->GetJavaVM(&javaVM);
}
Esempio n. 5
0
void JniThrowException(JNIEnv* env, const std::string& message)
{
  JniLocalReference<jclass> clazz(env,
      env->FindClass(PKG("AdblockPlusException")));
  env->ThrowNew(*clazz, message.c_str());
}
Esempio n. 6
0
jobject NewJniNotification(JNIEnv* env,
    const AdblockPlus::NotificationPtr& notification)
{
  return NewJniObject(env, notification, PKG("Notification"));
}
Esempio n. 7
0
jobject NewJniSubscription(JNIEnv* env,
    const AdblockPlus::SubscriptionPtr& subscription)
{
  return NewJniObject(env, subscription, PKG("Subscription"));
}
Esempio n. 8
0
jobject NewJniFilter(JNIEnv* env, const AdblockPlus::FilterPtr& filter)
{
  return NewJniObject(env, filter, PKG("Filter"));
}
JniFilterChangeCallback::JniFilterChangeCallback(JNIEnv* env, jobject callbackObject)
  : JniCallbackBase(env, callbackObject), jsValueClass(new JniGlobalReference<jclass>(env, env->FindClass(PKG("JsValue"))))
{
}
void JniLogSystem_OnLoad(JavaVM* vm, JNIEnv* env, void* reserved)
{
  logLevelClass = new JniGlobalReference<jclass>(env, env->FindClass(PKG("LogSystem$LogLevel")));
}