| Index: jni/Utils.cpp |
| =================================================================== |
| --- a/jni/Utils.cpp |
| +++ b/jni/Utils.cpp |
| @@ -15,6 +15,8 @@ |
| * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| */ |
| +#include <string> |
| + |
| #include "Utils.h" |
| #include "Debug.h" |
| @@ -36,3 +38,54 @@ |
| return value; |
| } |
| + |
| +namespace AdblockPlus |
| +{ |
| +namespace Android |
| +{ |
| + |
| +std::string JniJava2StdString(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; |
| +} |
| + |
| +jobject NewJniArrayList(JNIEnv* env) |
| +{ |
| + jclass clazz = env->FindClass("java/util/ArrayList"); |
| + jmethodID ctor = env->GetMethodID(clazz, "<init>", "()V"); |
| + return env->NewObject(clazz, ctor); |
| +} |
| + |
| +void JniAddObjectToList(JNIEnv* env, jobject list, jobject value) |
| +{ |
| + jmethodID add = env->GetMethodID(env->GetObjectClass(list), "add", "(Ljava/lang/Object;)Z"); |
| + env->CallBooleanMethod(list, add, value); |
| +} |
| + |
| +void JniThrowException(JNIEnv* env, const std::string& message) |
| +{ |
| + jclass clazz = env->FindClass(PKG("AdblockPlusException")); |
| + env->ThrowNew(clazz, 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"); |
| +} |
| + |
| +} // namespace Android |
| +} // namespace AdblockPlus |