| Index: jni/JniFilterEngine.cpp |
| diff --git a/jni/JniFilterEngine.cpp b/jni/JniFilterEngine.cpp |
| index 7976902711d9e59dd5038bce35cea432d6b40876..557002b01fe56d2ba1a251d7ba31b7db9126a310 100644 |
| --- a/jni/JniFilterEngine.cpp |
| +++ b/jni/JniFilterEngine.cpp |
| @@ -34,11 +34,13 @@ static jobject SubscriptionsToArrayList(JNIEnv* env, std::vector<AdblockPlus::Su |
| static AdblockPlus::FilterEngine::ContentType ConvertContentType(JNIEnv *env, |
| jobject jContentType) |
| { |
| - jclass contentTypeClass = env->GetObjectClass(jContentType); |
| - jmethodID nameMethod = env->GetMethodID(contentTypeClass, "name", |
| - "()Ljava/lang/String;"); |
| - jstring jValue = (jstring) env->CallObjectMethod(jContentType, nameMethod); |
| - const std::string value = JniJavaToStdString(env, jValue); |
| + JniLocalReference<jclass> contentTypeClass(env, |
| + env->GetObjectClass(jContentType)); |
| + jmethodID nameMethod = env->GetMethodID(*contentTypeClass, "name", |
| + "()Ljava/lang/String;"); |
| + JniLocalReference<jstring> jValue(env, |
| + (jstring) env->CallObjectMethod(jContentType, nameMethod)); |
| + const std::string value = JniJavaToStdString(env, *jValue); |
| return AdblockPlus::FilterEngine::StringToContentType(value); |
| } |
| @@ -94,7 +96,7 @@ static jobject JNICALL JniGetListedFilters(JNIEnv* env, jclass clazz, jlong ptr) |
| for (std::vector<AdblockPlus::FilterPtr>::iterator it = filters.begin(), end = filters.end(); it != end; it++) |
| { |
| - JniAddObjectToList(env, list, NewJniFilter(env, *it)); |
| + JniAddObjectToList(env, list, *JniLocalReference<jobject>(env, NewJniFilter(env, *it))); |
| } |
| return list; |
| @@ -182,13 +184,17 @@ static void JNICALL JniRemoveFilterChangeCallback(JNIEnv* env, jclass clazz, jlo |
| CATCH_AND_THROW(env) |
| } |
| -static void JNICALL JniSetFilterChangeCallback(JNIEnv* env, jclass clazz, jlong ptr, jlong filterPtr) |
| +static void JNICALL JniSetFilterChangeCallback(JNIEnv* env, jclass clazz, |
| + jlong ptr, jlong filterPtr) |
| { |
| - AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); |
| - JniFilterChangeCallback* callback = JniLongToTypePtr<JniFilterChangeCallback>(filterPtr); |
| + AdblockPlus::FilterEngine* engine = |
| + JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); |
| + JniFilterChangeCallback* callback = JniLongToTypePtr<JniFilterChangeCallback>( |
| + filterPtr); |
| AdblockPlus::FilterEngine::FilterChangeCallback filterCallback = |
| - std::tr1::bind(&JniFilterChangeCallback::Callback, callback, std::tr1::placeholders::_1, std::tr1::placeholders::_2); |
| + std::tr1::bind(&JniFilterChangeCallback::Callback, callback, |
| + std::tr1::placeholders::_1, std::tr1::placeholders::_2); |
| try |
| { |
| @@ -220,21 +226,26 @@ static void JNICALL JniForceUpdateCheck(JNIEnv* env, jclass clazz, jlong ptr, jl |
| CATCH_AND_THROW(env) |
| } |
| -static jobject JNICALL JniGetElementHidingSelectors(JNIEnv* env, jclass clazz, jlong ptr, jstring jDomain) |
| +static jobject JNICALL JniGetElementHidingSelectors(JNIEnv* env, jclass clazz, |
| + jlong ptr, jstring jDomain) |
| { |
| - AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); |
| + AdblockPlus::FilterEngine* engine = |
| + JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); |
| std::string domain = JniJavaToStdString(env, jDomain); |
| try |
| { |
| - std::vector<std::string> selectors = engine->GetElementHidingSelectors(domain); |
| + std::vector<std::string> selectors = engine->GetElementHidingSelectors( |
| + domain); |
| jobject list = NewJniArrayList(env); |
| - for (std::vector<std::string>::iterator it = selectors.begin(), end = selectors.end(); it != end; it++) |
| + for (std::vector<std::string>::iterator it = selectors.begin(), end = |
| + selectors.end(); it != end; it++) |
| { |
| - JniAddObjectToList(env, list, env->NewStringUTF(it->c_str())); |
| + JniAddObjectToList(env, list, |
| + *JniLocalReference<jstring>(env, env->NewStringUTF(it->c_str()))); |
| } |
| return list; |
| @@ -260,9 +271,11 @@ static jobject JNICALL JniMatches(JNIEnv* env, jclass clazz, jlong ptr, jstring |
| CATCH_THROW_AND_RETURN(env, 0) |
| } |
| -static jobject JNICALL JniMatchesMany(JNIEnv* env, jclass clazz, jlong ptr, jstring jUrl, jobject jContentType, jobjectArray jDocumentUrls) |
| +static jobject JNICALL JniMatchesMany(JNIEnv* env, jclass clazz, jlong ptr, |
| + jstring jUrl, jobject jContentType, jobjectArray jDocumentUrls) |
| { |
| - AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); |
| + AdblockPlus::FilterEngine* engine = |
| + JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); |
| std::string url = JniJavaToStdString(env, jUrl); |
| AdblockPlus::FilterEngine::ContentType contentType = |
| @@ -274,12 +287,17 @@ static jobject JNICALL JniMatchesMany(JNIEnv* env, jclass clazz, jlong ptr, jstr |
| for (jsize i = 0; i < len; i++) |
| { |
| - documentUrls.push_back(JniJavaToStdString(env, static_cast<jstring>(env->GetObjectArrayElement(jDocumentUrls, i)))); |
| + documentUrls.push_back( |
| + JniJavaToStdString(env, |
| + *JniLocalReference<jstring>(env, |
| + static_cast<jstring>(env->GetObjectArrayElement(jDocumentUrls, |
| + i))))); |
| } |
| try |
| { |
| - AdblockPlus::FilterPtr filter = engine->Matches(url, contentType, documentUrls); |
| + AdblockPlus::FilterPtr filter = engine->Matches(url, contentType, |
| + documentUrls); |
| return NewJniFilter(env, filter); |
| } |