Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: libadblockplus-android/jni/JniFilterEngine.cpp

Issue 29379647: Issue 4948 - add possibility to not send data depending on connection properties (Closed)
Patch Set: Created March 10, 2017, 6:40 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2016 Eyeo GmbH 3 * Copyright (C) 2006-2016 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 26 matching lines...) Expand all
37 JniLocalReference<jclass> contentTypeClass(env, 37 JniLocalReference<jclass> contentTypeClass(env,
38 env->GetObjectClass(jContentType)); 38 env->GetObjectClass(jContentType));
39 jmethodID nameMethod = env->GetMethodID(*contentTypeClass, "name", 39 jmethodID nameMethod = env->GetMethodID(*contentTypeClass, "name",
40 "()Ljava/lang/String;"); 40 "()Ljava/lang/String;");
41 JniLocalReference<jstring> jValue(env, 41 JniLocalReference<jstring> jValue(env,
42 (jstring) env->CallObjectMethod(jContentType, nameMethod)); 42 (jstring) env->CallObjectMethod(jContentType, nameMethod));
43 const std::string value = JniJavaToStdString(env, *jValue); 43 const std::string value = JniJavaToStdString(env, *jValue);
44 return AdblockPlus::FilterEngine::StringToContentType(value); 44 return AdblockPlus::FilterEngine::StringToContentType(value);
45 } 45 }
46 46
47 static jlong JNICALL JniCtor(JNIEnv* env, jclass clazz, jlong enginePtr) 47 static jlong JNICALL JniCtor(JNIEnv* env, jclass clazz, jlong jsEnginePtr, jlong isAllowedConnectionCallbackPtr)
48 { 48 {
49 try 49 try
50 { 50 {
51 AdblockPlus::JsEnginePtr& jsEngine = *JniLongToTypePtr<AdblockPlus::JsEngine Ptr>(enginePtr); 51 AdblockPlus::JsEnginePtr& jsEngine = *JniLongToTypePtr<AdblockPlus::JsEngine Ptr>(jsEnginePtr);
52 return JniPtrToLong(new AdblockPlus::FilterEngine(jsEngine)); 52 AdblockPlus::FilterEnginePtr filterEnginePtr = NULL;
sergei 2017/03/15 10:01:38 smart pointer is already initialized to nullptr, s
sergei 2017/03/15 10:01:38 I would just call the variable as filterEngine, wi
anton 2017/03/15 10:13:52 Acknowledged.
53
54 if (isAllowedConnectionCallbackPtr != 0)
55 {
56 AdblockPlus::FilterEngine::CreateParameters createParameters;
57 JniIsAllowedConnectionTypeCallback* callback =
58 JniLongToTypePtr<JniIsAllowedConnectionTypeCallback>(isAllowedConnection CallbackPtr);
59
60 AdblockPlus::FilterEngine::IsConnectionAllowedCallback cppCallback =
61 std::bind(&JniIsAllowedConnectionTypeCallback::Callback, callback, std:: placeholders::_1);
62 createParameters.isConnectionAllowed = cppCallback;
63
64 filterEnginePtr = AdblockPlus::FilterEngine::Create(jsEngine, createParame ters); // here (1) - create engine sync
65 }
66 else
67 {
68 filterEnginePtr = AdblockPlus::FilterEngine::Create(jsEngine);
69 }
70
71 return JniPtrToLong(filterEnginePtr.get());
anton 2017/03/10 06:50:40 for some (unknown) reason new static methods (inst
sergei 2017/03/15 10:01:38 TL;DR: Actually here is a bug, but my vote is to a
anton 2017/03/15 10:13:52 Acknowledged.
53 } 72 }
54 CATCH_THROW_AND_RETURN(env, 0) 73 CATCH_THROW_AND_RETURN(env, 0)
55 } 74 }
56 75
57 static void JNICALL JniDtor(JNIEnv* env, jclass clazz, jlong ptr) 76 static void JNICALL JniDtor(JNIEnv* env, jclass clazz, jlong ptr)
58 { 77 {
59 delete JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); 78 delete JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr);
60 } 79 }
61 80
62 static jboolean JNICALL JniIsFirstRun(JNIEnv* env, jclass clazz, jlong ptr) 81 static jboolean JNICALL JniIsFirstRun(JNIEnv* env, jclass clazz, jlong ptr)
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 std::string url = JniJavaToStdString(env, jurl); 446 std::string url = JniJavaToStdString(env, jurl);
428 try 447 try
429 { 448 {
430 std::string host = engine->GetHostFromURL(url); 449 std::string host = engine->GetHostFromURL(url);
431 450
432 return JniStdStringToJava(env, host); 451 return JniStdStringToJava(env, host);
433 } 452 }
434 CATCH_THROW_AND_RETURN(env, 0) 453 CATCH_THROW_AND_RETURN(env, 0)
435 } 454 }
436 455
456 static void JNICALL JniSetAllowedConnectionType(JNIEnv* env, jclass clazz, jlong ptr, jstring jvalue)
457 {
458 AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine >(ptr);
459
460 std::string* value = NULL;
461 if (jvalue != NULL)
462 {
463 std::string stdValue = JniJavaToStdString(env, jvalue);
464 value = &stdValue;
465 }
466
467 try
468 {
469 engine->SetAllowedConnectionType(value);
470 }
471 CATCH_AND_THROW(env)
472 }
473
474
475 static jstring JNICALL JniGetAllowedConnectionType(JNIEnv* env, jclass clazz, jl ong ptr)
476 {
477 try
478 {
479 AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngi ne>(ptr);
480 std::unique_ptr<std::string> value = engine->GetAllowedConnectionType();
481
482 if (value == NULL)
483 {
484 return NULL;
485 }
486
487 return JniStdStringToJava(env, *value.get());
488 }
489 CATCH_THROW_AND_RETURN(env, 0)
490 }
491
437 static JNINativeMethod methods[] = 492 static JNINativeMethod methods[] =
438 { 493 {
439 { (char*)"ctor", (char*)"(J)J", (void*)JniCtor }, 494 { (char*)"ctor", (char*)"(JJ)J", (void*)JniCtor },
440 { (char*)"isFirstRun", (char*)"(J)Z", (void*)JniIsFirstRun }, 495 { (char*)"isFirstRun", (char*)"(J)Z", (void*)JniIsFirstRun },
441 { (char*)"getFilter", (char*)"(JLjava/lang/String;)" TYP("Filter"), (void*)Jni GetFilter }, 496 { (char*)"getFilter", (char*)"(JLjava/lang/String;)" TYP("Filter"), (void*)Jni GetFilter },
442 { (char*)"getListedFilters", (char*)"(J)Ljava/util/List;", (void*)JniGetListed Filters }, 497 { (char*)"getListedFilters", (char*)"(J)Ljava/util/List;", (void*)JniGetListed Filters },
443 { (char*)"getSubscription", (char*)"(JLjava/lang/String;)" TYP("Subscription") , (void*)JniGetSubscription }, 498 { (char*)"getSubscription", (char*)"(JLjava/lang/String;)" TYP("Subscription") , (void*)JniGetSubscription },
444 { (char*)"showNextNotification", (char*)"(JLjava/lang/String;)V", (void*)JniSh owNextNotification }, 499 { (char*)"showNextNotification", (char*)"(JLjava/lang/String;)V", (void*)JniSh owNextNotification },
445 { (char*)"setShowNotificationCallback", (char*)"(JJ)V", (void*)JniSetShowNotif icationCallback }, 500 { (char*)"setShowNotificationCallback", (char*)"(JJ)V", (void*)JniSetShowNotif icationCallback },
446 { (char*)"removeShowNotificationCallback", (char*)"(J)V", (void*)JniRemoveShow NotificationCallback }, 501 { (char*)"removeShowNotificationCallback", (char*)"(J)V", (void*)JniRemoveShow NotificationCallback },
447 { (char*)"getListedSubscriptions", (char*)"(J)Ljava/util/List;", (void*)JniGet ListedSubscriptions }, 502 { (char*)"getListedSubscriptions", (char*)"(J)Ljava/util/List;", (void*)JniGet ListedSubscriptions },
448 { (char*)"fetchAvailableSubscriptions", (char*)"(J)Ljava/util/List;", (void*)J niFetchAvailableSubscriptions }, 503 { (char*)"fetchAvailableSubscriptions", (char*)"(J)Ljava/util/List;", (void*)J niFetchAvailableSubscriptions },
449 { (char*)"setUpdateAvailableCallback", (char*)"(JJ)V", (void*)JniSetUpdateAvai lableCallback }, 504 { (char*)"setUpdateAvailableCallback", (char*)"(JJ)V", (void*)JniSetUpdateAvai lableCallback },
450 { (char*)"removeUpdateAvailableCallback", (char*)"(J)V", (void*)JniRemoveUpdat eAvailableCallback }, 505 { (char*)"removeUpdateAvailableCallback", (char*)"(J)V", (void*)JniRemoveUpdat eAvailableCallback },
451 { (char*)"setFilterChangeCallback", (char*)"(JJ)V", (void*)JniSetFilterChangeC allback }, 506 { (char*)"setFilterChangeCallback", (char*)"(JJ)V", (void*)JniSetFilterChangeC allback },
452 { (char*)"removeFilterChangeCallback", (char*)"(J)V", (void*)JniRemoveFilterCh angeCallback }, 507 { (char*)"removeFilterChangeCallback", (char*)"(J)V", (void*)JniRemoveFilterCh angeCallback },
453 { (char*)"forceUpdateCheck", (char*)"(JJ)V", (void*)JniForceUpdateCheck }, 508 { (char*)"forceUpdateCheck", (char*)"(JJ)V", (void*)JniForceUpdateCheck },
454 { (char*)"getElementHidingSelectors", (char*)"(JLjava/lang/String;)Ljava/util/ List;", (void*)JniGetElementHidingSelectors }, 509 { (char*)"getElementHidingSelectors", (char*)"(JLjava/lang/String;)Ljava/util/ List;", (void*)JniGetElementHidingSelectors },
455 { (char*)"matches", (char*)"(JLjava/lang/String;" TYP("FilterEngine$ContentTyp e") "Ljava/lang/String;)" TYP("Filter"), (void*)JniMatches }, 510 { (char*)"matches", (char*)"(JLjava/lang/String;" TYP("FilterEngine$ContentTyp e") "Ljava/lang/String;)" TYP("Filter"), (void*)JniMatches },
456 { (char*)"matches", (char*)"(JLjava/lang/String;" TYP("FilterEngine$ContentTyp e") "[Ljava/lang/String;)" TYP("Filter"), (void*)JniMatchesMany }, 511 { (char*)"matches", (char*)"(JLjava/lang/String;" TYP("FilterEngine$ContentTyp e") "[Ljava/lang/String;)" TYP("Filter"), (void*)JniMatchesMany },
457 { (char*)"isDocumentWhitelisted", (char*)"(JLjava/lang/String;[Ljava/lang/Stri ng;)Z", (void*)JniIsDocumentWhitelisted }, 512 { (char*)"isDocumentWhitelisted", (char*)"(JLjava/lang/String;[Ljava/lang/Stri ng;)Z", (void*)JniIsDocumentWhitelisted },
458 { (char*)"isElemhideWhitelisted", (char*)"(JLjava/lang/String;[Ljava/lang/Stri ng;)Z", (void*)JniIsElemhideWhitelisted }, 513 { (char*)"isElemhideWhitelisted", (char*)"(JLjava/lang/String;[Ljava/lang/Stri ng;)Z", (void*)JniIsElemhideWhitelisted },
459 { (char*)"getPref", (char*)"(JLjava/lang/String;)" TYP("JsValue"), (void*)JniG etPref }, 514 { (char*)"getPref", (char*)"(JLjava/lang/String;)" TYP("JsValue"), (void*)JniG etPref },
460 { (char*)"setPref", (char*)"(JLjava/lang/String;J)V", (void*)JniSetPref }, 515 { (char*)"setPref", (char*)"(JLjava/lang/String;J)V", (void*)JniSetPref },
461 { (char*)"getHostFromURL", (char*)"(JLjava/lang/String;)Ljava/lang/String;", ( void*)JniGetHostFromURL }, 516 { (char*)"getHostFromURL", (char*)"(JLjava/lang/String;)Ljava/lang/String;", ( void*)JniGetHostFromURL },
517 { (char*)"setAllowedConnectionType", (char*)"(JLjava/lang/String;)V", (void*)J niSetAllowedConnectionType },
518 { (char*)"getAllowedConnectionType", (char*)"(J)Ljava/lang/String;", (void*)Jn iGetAllowedConnectionType },
462 { (char*)"dtor", (char*)"(J)V", (void*)JniDtor } 519 { (char*)"dtor", (char*)"(J)V", (void*)JniDtor }
463 }; 520 };
464 521
465 extern "C" JNIEXPORT void JNICALL Java_org_adblockplus_libadblockplus_FilterEngi ne_registerNatives(JNIEnv *env, jclass clazz) 522 extern "C" JNIEXPORT void JNICALL Java_org_adblockplus_libadblockplus_FilterEngi ne_registerNatives(JNIEnv *env, jclass clazz)
466 { 523 {
467 env->RegisterNatives(clazz, methods, sizeof(methods) / sizeof(methods[0])); 524 env->RegisterNatives(clazz, methods, sizeof(methods) / sizeof(methods[0]));
468 } 525 }
OLDNEW

Powered by Google App Engine
This is Rietveld