| Index: libadblockplus-android/jni/JniFilterEngine.cpp | 
| diff --git a/libadblockplus-android/jni/JniFilterEngine.cpp b/libadblockplus-android/jni/JniFilterEngine.cpp | 
| index f9981f024922c74874f6a70c096c21cb23dc8e6e..f568279a8b26f307698e7233eb09809b376440d0 100644 | 
| --- a/libadblockplus-android/jni/JniFilterEngine.cpp | 
| +++ b/libadblockplus-android/jni/JniFilterEngine.cpp | 
| @@ -44,12 +44,31 @@ static AdblockPlus::FilterEngine::ContentType ConvertContentType(JNIEnv *env, | 
| return AdblockPlus::FilterEngine::StringToContentType(value); | 
| } | 
| -static jlong JNICALL JniCtor(JNIEnv* env, jclass clazz, jlong enginePtr) | 
| +static jlong JNICALL JniCtor(JNIEnv* env, jclass clazz, jlong jsEnginePtr, jlong isAllowedConnectionCallbackPtr) | 
| { | 
| try | 
| { | 
| - AdblockPlus::JsEnginePtr& jsEngine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(enginePtr); | 
| - return JniPtrToLong(new AdblockPlus::FilterEngine(jsEngine)); | 
| + AdblockPlus::JsEnginePtr& jsEngine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(jsEnginePtr); | 
| + AdblockPlus::FilterEnginePtr filterEngine; | 
| + | 
| + if (isAllowedConnectionCallbackPtr != 0) | 
| + { | 
| + AdblockPlus::FilterEngine::CreateParameters createParameters; | 
| + JniIsAllowedConnectionTypeCallback* callback = | 
| + JniLongToTypePtr<JniIsAllowedConnectionTypeCallback>(isAllowedConnectionCallbackPtr); | 
| + | 
| + AdblockPlus::FilterEngine::IsConnectionAllowedCallback cppCallback = | 
| + std::bind(&JniIsAllowedConnectionTypeCallback::Callback, callback, std::placeholders::_1); | 
| + createParameters.isConnectionAllowed = cppCallback; | 
| + | 
| + filterEngine = AdblockPlus::FilterEngine::Create(jsEngine, createParameters); | 
| + } | 
| + else | 
| + { | 
| + filterEngine = AdblockPlus::FilterEngine::Create(jsEngine); | 
| + } | 
| + | 
| + return JniPtrToLong(filterEngine.get()); | 
| } | 
| CATCH_THROW_AND_RETURN(env, 0) | 
| } | 
| @@ -434,9 +453,44 @@ static jstring JNICALL JniGetHostFromURL(JNIEnv* env, jclass clazz, jlong ptr, j | 
| CATCH_THROW_AND_RETURN(env, 0) | 
| } | 
| +static void JNICALL JniSetAllowedConnectionType(JNIEnv* env, jclass clazz, jlong ptr, jstring jvalue) | 
| +{ | 
| + AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); | 
| + | 
| + std::string* value = NULL; | 
| + if (jvalue != NULL) | 
| + { | 
| + std::string stdValue = JniJavaToStdString(env, jvalue); | 
| + value = &stdValue; | 
| + } | 
| + | 
| + try | 
| + { | 
| + engine->SetAllowedConnectionType(value); | 
| + } | 
| + CATCH_AND_THROW(env) | 
| +} | 
| + | 
| +static jstring JNICALL JniGetAllowedConnectionType(JNIEnv* env, jclass clazz, jlong ptr) | 
| +{ | 
| + try | 
| + { | 
| + AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); | 
| + std::unique_ptr<std::string> value = engine->GetAllowedConnectionType(); | 
| + | 
| + if (value == NULL) | 
| + { | 
| + return NULL; | 
| + } | 
| + | 
| + return JniStdStringToJava(env, *value.get()); | 
| + } | 
| + CATCH_THROW_AND_RETURN(env, 0) | 
| +} | 
| + | 
| static JNINativeMethod methods[] = | 
| { | 
| - { (char*)"ctor", (char*)"(J)J", (void*)JniCtor }, | 
| + { (char*)"ctor", (char*)"(JJ)J", (void*)JniCtor }, | 
| { (char*)"isFirstRun", (char*)"(J)Z", (void*)JniIsFirstRun }, | 
| { (char*)"getFilter", (char*)"(JLjava/lang/String;)" TYP("Filter"), (void*)JniGetFilter }, | 
| { (char*)"getListedFilters", (char*)"(J)Ljava/util/List;", (void*)JniGetListedFilters }, | 
| @@ -459,6 +513,8 @@ static JNINativeMethod methods[] = | 
| { (char*)"getPref", (char*)"(JLjava/lang/String;)" TYP("JsValue"), (void*)JniGetPref }, | 
| { (char*)"setPref", (char*)"(JLjava/lang/String;J)V", (void*)JniSetPref }, | 
| { (char*)"getHostFromURL", (char*)"(JLjava/lang/String;)Ljava/lang/String;", (void*)JniGetHostFromURL }, | 
| + { (char*)"setAllowedConnectionType", (char*)"(JLjava/lang/String;)V", (void*)JniSetAllowedConnectionType }, | 
| + { (char*)"getAllowedConnectionType", (char*)"(J)Ljava/lang/String;", (void*)JniGetAllowedConnectionType }, | 
| { (char*)"dtor", (char*)"(J)V", (void*)JniDtor } | 
| }; |