| Index: libadblockplus-android/jni/JniFilterEngine.cpp |
| diff --git a/libadblockplus-android/jni/JniFilterEngine.cpp b/libadblockplus-android/jni/JniFilterEngine.cpp |
| index 00a96c5c27e6205fc27b39280ed77cefe04d2aaa..38009bf369bacbef8b72aeb446d624bf2b457911 100644 |
| --- a/libadblockplus-android/jni/JniFilterEngine.cpp |
| +++ b/libadblockplus-android/jni/JniFilterEngine.cpp |
| @@ -19,13 +19,13 @@ |
| #include "Utils.h" |
| #include "JniCallbacks.h" |
| -static jobject SubscriptionsToArrayList(JNIEnv* env, std::vector<AdblockPlus::SubscriptionPtr>& subscriptions) |
| +static jobject SubscriptionsToArrayList(JNIEnv* env, std::vector<AdblockPlus::Subscription>&& subscriptions) |
| { |
| jobject list = NewJniArrayList(env); |
| - for (std::vector<AdblockPlus::SubscriptionPtr>::iterator it = subscriptions.begin(), end = subscriptions.end(); it != end; it++) |
| + for (std::vector<AdblockPlus::Subscription>::iterator it = subscriptions.begin(), end = subscriptions.end(); it != end; it++) |
| { |
| - JniAddObjectToList(env, list, NewJniSubscription(env, *it)); |
| + JniAddObjectToList(env, list, NewJniSubscription(env, std::move(*it))); |
| } |
| return list; |
| @@ -98,9 +98,7 @@ static jobject JNICALL JniGetFilter(JNIEnv* env, jclass clazz, jlong ptr, jstrin |
| try |
| { |
| - AdblockPlus::FilterPtr filter = engine->GetFilter(text); |
| - |
| - return NewJniFilter(env, filter); |
| + return NewJniFilter(env, engine->GetFilter(text)); |
| } |
| CATCH_THROW_AND_RETURN(env, 0); |
| } |
| @@ -111,13 +109,13 @@ static jobject JNICALL JniGetListedFilters(JNIEnv* env, jclass clazz, jlong ptr) |
| try |
| { |
| - std::vector<AdblockPlus::FilterPtr> filters = engine->GetListedFilters(); |
| + std::vector<AdblockPlus::Filter> filters = engine->GetListedFilters(); |
| jobject list = NewJniArrayList(env); |
| - for (std::vector<AdblockPlus::FilterPtr>::iterator it = filters.begin(), end = filters.end(); it != end; it++) |
| + for (std::vector<AdblockPlus::Filter>::iterator it = filters.begin(), end = filters.end(); it != end; it++) |
| { |
| - JniAddObjectToList(env, list, *JniLocalReference<jobject>(env, NewJniFilter(env, *it))); |
| + JniAddObjectToList(env, list, *JniLocalReference<jobject>(env, NewJniFilter(env, std::move(*it)))); |
| } |
| return list; |
| @@ -132,9 +130,7 @@ static jobject JNICALL JniGetSubscription(JNIEnv* env, jclass clazz, jlong ptr, |
| try |
| { |
| - AdblockPlus::SubscriptionPtr subscription = engine->GetSubscription(url); |
| - |
| - return NewJniSubscription(env, subscription); |
| + return NewJniSubscription(env, engine->GetSubscription(url)); |
| } |
| CATCH_THROW_AND_RETURN(env, 0); |
| } |
| @@ -156,11 +152,15 @@ static void JNICALL JniSetShowNotificationCallback(JNIEnv* env, jclass clazz, |
| { |
| AdblockPlus::FilterEnginePtr& engine = |
| *JniLongToTypePtr<AdblockPlus::FilterEnginePtr>(ptr); |
| + |
| JniShowNotificationCallback* const callback = |
| JniLongToTypePtr<JniShowNotificationCallback>(callbackPtr); |
| - AdblockPlus::FilterEngine::ShowNotificationCallback showNotificationCallback = |
| - std::bind(&JniShowNotificationCallback::Callback, callback, |
| - std::placeholders::_1); |
| + |
| + auto showNotificationCallback = [callback](AdblockPlus::Notification&& notification) |
| + { |
| + callback->Callback(std::move(notification)); |
| + }; |
| + |
| try |
| { |
| engine->SetShowNotificationCallback(showNotificationCallback); |
| @@ -185,9 +185,7 @@ static jobject JNICALL JniGetListedSubscriptions(JNIEnv* env, jclass clazz, jlon |
| try |
| { |
| - std::vector<AdblockPlus::SubscriptionPtr> subscriptions = engine->GetListedSubscriptions(); |
| - |
| - return SubscriptionsToArrayList(env, subscriptions); |
| + return SubscriptionsToArrayList(env, engine->GetListedSubscriptions()); |
| } |
| CATCH_THROW_AND_RETURN(env, 0); |
| } |
| @@ -198,9 +196,7 @@ static jobject JNICALL JniFetchAvailableSubscriptions(JNIEnv* env, jclass clazz, |
| try |
| { |
| - std::vector<AdblockPlus::SubscriptionPtr> subscriptions = engine->FetchAvailableSubscriptions(); |
| - |
| - return SubscriptionsToArrayList(env, subscriptions); |
| + return SubscriptionsToArrayList(env, engine->FetchAvailableSubscriptions()); |
| } |
| CATCH_THROW_AND_RETURN(env, 0); |
| } |
| @@ -224,7 +220,8 @@ static void JNICALL JniSetUpdateAvailableCallback(JNIEnv* env, jclass clazz, |
| *JniLongToTypePtr<AdblockPlus::FilterEnginePtr>(ptr); |
| JniUpdateAvailableCallback* const callback = |
| JniLongToTypePtr<JniUpdateAvailableCallback>(callbackPtr); |
| - AdblockPlus::FilterEngine::UpdateAvailableCallback updateAvailableCallback = |
| + |
| + const AdblockPlus::FilterEngine::UpdateAvailableCallback updateAvailableCallback = |
| std::bind(&JniUpdateAvailableCallback::Callback, callback, |
| std::placeholders::_1); |
| try |
| @@ -253,9 +250,10 @@ static void JNICALL JniSetFilterChangeCallback(JNIEnv* env, jclass clazz, |
| JniFilterChangeCallback* callback = JniLongToTypePtr<JniFilterChangeCallback>( |
| filterPtr); |
| - AdblockPlus::FilterEngine::FilterChangeCallback filterCallback = |
| - std::bind(&JniFilterChangeCallback::Callback, callback, |
| - std::placeholders::_1, std::placeholders::_2); |
| + auto filterCallback = [callback](const std::string& arg, AdblockPlus::JsValue&& jsValue) |
| + { |
| + callback->Callback(arg, std::move(jsValue)); |
| + }; |
| try |
| { |
| @@ -325,9 +323,9 @@ static jobject JNICALL JniMatches(JNIEnv* env, jclass clazz, jlong ptr, jstring |
| try |
| { |
| - AdblockPlus::FilterPtr filter = engine->Matches(url, contentType, documentUrl); |
| + AdblockPlus::FilterPtr filterPtr = engine->Matches(url, contentType, documentUrl); |
| - return NewJniFilter(env, filter); |
| + return filterPtr.get() ? NewJniFilter(env, std::move(*filterPtr)) : 0; |
|
sergei
2017/05/05 13:05:14
Actually here, we could even do it easier. We coul
|
| } |
| CATCH_THROW_AND_RETURN(env, 0) |
| } |
| @@ -365,10 +363,9 @@ static jobject JNICALL JniMatchesMany(JNIEnv* env, jclass clazz, jlong ptr, |
| try |
| { |
| - AdblockPlus::FilterPtr filter = engine->Matches(url, contentType, |
| - documentUrls); |
| + AdblockPlus::FilterPtr filterPtr = engine->Matches(url, contentType, documentUrls); |
| - return NewJniFilter(env, filter); |
| + return (filterPtr.get() ? NewJniFilter(env, std::move(*filterPtr)) : 0); |
| } |
| CATCH_THROW_AND_RETURN(env, 0) |
| } |
| @@ -415,9 +412,7 @@ static jobject JNICALL JniGetPref(JNIEnv* env, jclass clazz, jlong ptr, jstring |
| try |
| { |
| - AdblockPlus::JsValuePtr value = engine->GetPref(pref); |
| - |
| - return NewJniJsValue(env, value); |
| + return NewJniJsValue(env, engine->GetPref(pref)); |
| } |
| CATCH_THROW_AND_RETURN(env, 0) |
| } |
| @@ -427,7 +422,7 @@ static void JNICALL JniSetPref(JNIEnv* env, jclass clazz, jlong ptr, jstring jPr |
| AdblockPlus::FilterEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::FilterEnginePtr>(ptr); |
| std::string pref = JniJavaToStdString(env, jPref); |
| - AdblockPlus::JsValuePtr value = JniGetJsValuePtr(jsValue); |
| + const AdblockPlus::JsValue& value = JniGetJsValue(jsValue); |
| try |
| { |