Index: libadblockplus-android/jni/Utils.cpp |
diff --git a/libadblockplus-android/jni/Utils.cpp b/libadblockplus-android/jni/Utils.cpp |
deleted file mode 100644 |
index 124abfe44b6bd0322a278f0b52434a76103e6057..0000000000000000000000000000000000000000 |
--- a/libadblockplus-android/jni/Utils.cpp |
+++ /dev/null |
@@ -1,193 +0,0 @@ |
-/* |
- * This file is part of Adblock Plus <https://adblockplus.org/>, |
- * Copyright (C) 2006-present eyeo GmbH |
- * |
- * Adblock Plus is free software: you can redistribute it and/or modify |
- * it under the terms of the GNU General Public License version 3 as |
- * published by the Free Software Foundation. |
- * |
- * Adblock Plus is distributed in the hope that it will be useful, |
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
- * GNU General Public License for more details. |
- * |
- * You should have received a copy of the GNU General Public License |
- * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
- */ |
- |
-#include <string> |
- |
-#include "Utils.h" |
- |
-// precached in JNI_OnLoad and released in JNI_OnUnload |
-JniGlobalReference<jclass>* arrayListClass; |
-jmethodID arrayListCtor; |
- |
-JniGlobalReference<jclass>* filterClass; |
-jmethodID filterCtor; |
- |
-JniGlobalReference<jclass>* subscriptionClass; |
-jmethodID subscriptionCtor; |
- |
-JniGlobalReference<jclass>* notificationClass; |
-jmethodID notificationCtor; |
- |
-JniGlobalReference<jclass>* exceptionClass; |
- |
-void JniUtils_OnLoad(JavaVM* vm, JNIEnv* env, void* reserved) |
-{ |
- arrayListClass = new JniGlobalReference<jclass>(env, env->FindClass("java/util/ArrayList")); |
- arrayListCtor = env->GetMethodID(arrayListClass->Get(), "<init>", "()V"); |
- |
- filterClass = new JniGlobalReference<jclass>(env, env->FindClass(PKG("Filter"))); |
- filterCtor = env->GetMethodID(filterClass->Get(), "<init>", "(J)V"); |
- |
- subscriptionClass = new JniGlobalReference<jclass>(env, env->FindClass(PKG("Subscription"))); |
- subscriptionCtor = env->GetMethodID(subscriptionClass->Get(), "<init>", "(J)V"); |
- |
- notificationClass = new JniGlobalReference<jclass>(env, env->FindClass(PKG("Notification"))); |
- notificationCtor = env->GetMethodID(notificationClass->Get(), "<init>", "(J)V"); |
- |
- exceptionClass = new JniGlobalReference<jclass>(env, env->FindClass(PKG("AdblockPlusException"))); |
-} |
- |
-void JniUtils_OnUnload(JavaVM* vm, JNIEnv* env, void* reserved) |
-{ |
- if (arrayListClass) |
- { |
- delete arrayListClass; |
- arrayListClass = NULL; |
- } |
- |
- if (filterClass) |
- { |
- delete filterClass; |
- filterClass = NULL; |
- } |
- |
- if (subscriptionClass) |
- { |
- delete subscriptionClass; |
- subscriptionClass = NULL; |
- } |
- |
- if (notificationClass) |
- { |
- delete notificationClass; |
- notificationClass = NULL; |
- } |
- |
- if (exceptionClass) |
- { |
- delete exceptionClass; |
- exceptionClass = NULL; |
- } |
-} |
- |
-std::string JniJavaToStdString(JNIEnv* env, jstring str) |
-{ |
- if (!str) |
- { |
- return std::string(); |
- } |
- |
- const char* cStr = env->GetStringUTFChars(str, 0); |
- std::string ret(cStr); |
- env->ReleaseStringUTFChars(str, cStr); |
- |
- return ret; |
-} |
- |
-jstring JniStdStringToJava(JNIEnv* env, std::string str) |
-{ |
- return env->NewStringUTF(str.c_str()); |
-} |
- |
-bool stringBeginsWith(const std::string& string, const std::string& beginning) |
-{ |
- return string.compare(0, beginning.length(), beginning) == 0; |
-} |
- |
-jobject NewJniArrayList(JNIEnv* env) |
-{ |
- return env->NewObject(arrayListClass->Get(), arrayListCtor); |
-} |
- |
-jmethodID JniGetAddToListMethod(JNIEnv* env, jobject list) |
-{ |
- JniLocalReference<jclass> clazz(env, env->GetObjectClass(list)); |
- return env->GetMethodID(*clazz, "add", "(Ljava/lang/Object;)Z"); |
-} |
- |
-void JniAddObjectToList(JNIEnv* env, jobject list, jmethodID addMethod, jobject value) |
-{ |
- env->CallBooleanMethod(list, addMethod, value); |
-} |
- |
-void JniAddObjectToList(JNIEnv* env, jobject list, jobject value) |
-{ |
- jmethodID addMethod = JniGetAddToListMethod(env, list); |
- JniAddObjectToList(env, list, addMethod, value); |
-} |
- |
-void JniThrowException(JNIEnv* env, const std::string& message) |
-{ |
- env->ThrowNew(exceptionClass->Get(), message.c_str()); |
-} |
- |
-void JniThrowException(JNIEnv* env, const std::exception& e) |
-{ |
- JniThrowException(env, e.what()); |
-} |
- |
-void JniThrowException(JNIEnv* env) |
-{ |
- JniThrowException(env, "Unknown exception from libadblockplus"); |
-} |
- |
-JNIEnvAcquire::JNIEnvAcquire(JavaVM* javaVM) |
- : javaVM(javaVM), jniEnv(0), attachmentStatus(0) |
-{ |
- attachmentStatus = javaVM->GetEnv((void **)&jniEnv, ABP_JNI_VERSION); |
- if (attachmentStatus == JNI_EDETACHED) |
- { |
- if (javaVM->AttachCurrentThread(&jniEnv, 0)) |
- { |
- // This one is FATAL, we can't recover from this (because without a JVM we're dead), so |
- // throwing a runtime_exception in a ctor can be tolerated here IMHO |
- throw std::runtime_error("Failed to get JNI environment"); |
- } |
- } |
-} |
- |
-JNIEnvAcquire::~JNIEnvAcquire() |
-{ |
- if (attachmentStatus == JNI_EDETACHED) |
- { |
- javaVM->DetachCurrentThread(); |
- } |
-} |
- |
-template<typename T> |
-static jobject NewJniObject(JNIEnv* env, T&& value, jclass clazz, jmethodID ctor) |
-{ |
- return env->NewObject(clazz, ctor, JniPtrToLong(new T(std::forward<T>(value)))); |
-} |
- |
-jobject NewJniFilter(JNIEnv* env, AdblockPlus::Filter&& filter) |
-{ |
- return NewJniObject<AdblockPlus::Filter>( |
- env, std::move(filter), filterClass->Get(), filterCtor); |
-} |
- |
-jobject NewJniSubscription(JNIEnv* env, AdblockPlus::Subscription&& subscription) |
-{ |
- return NewJniObject<AdblockPlus::Subscription>( |
- env, std::move(subscription), subscriptionClass->Get(), subscriptionCtor); |
-} |
- |
-jobject NewJniNotification(JNIEnv* env, AdblockPlus::Notification&& notification) |
-{ |
- return NewJniObject<AdblockPlus::Notification>( |
- env, std::move(notification), notificationClass->Get(), notificationCtor); |
-} |