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

Side by Side Diff: jni/abpEngine.cpp

Issue 5172657418928128: Determine the frame structure (Closed)
Patch Set: Use LRU caching for the referrer mappings Created Nov. 27, 2013, 12:01 p.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 <http://adblockplus.org/>, 2 * This file is part of Adblock Plus <http://adblockplus.org/>,
3 * Copyright (C) 2006-2013 Eyeo GmbH 3 * Copyright (C) 2006-2013 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 24 matching lines...) Expand all
35 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_release(JNIEnv * pEnv, jobject); 35 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_release(JNIEnv * pEnv, jobject);
36 JNIEXPORT jboolean JNICALL Java_org_adblockplus_android_ABPEngine_isFirstRun(J NIEnv *pEnv, jobject); 36 JNIEXPORT jboolean JNICALL Java_org_adblockplus_android_ABPEngine_isFirstRun(J NIEnv *pEnv, jobject);
37 JNIEXPORT jobjectArray JNICALL Java_org_adblockplus_android_ABPEngine_getListe dSubscriptions(JNIEnv *pEnv, jobject); 37 JNIEXPORT jobjectArray JNICALL Java_org_adblockplus_android_ABPEngine_getListe dSubscriptions(JNIEnv *pEnv, jobject);
38 JNIEXPORT jobjectArray JNICALL Java_org_adblockplus_android_ABPEngine_getRecom mendedSubscriptions(JNIEnv *pEnv, jobject); 38 JNIEXPORT jobjectArray JNICALL Java_org_adblockplus_android_ABPEngine_getRecom mendedSubscriptions(JNIEnv *pEnv, jobject);
39 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_addSubscription( JNIEnv *pEnv, jobject, jstring url); 39 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_addSubscription( JNIEnv *pEnv, jobject, jstring url);
40 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_removeSubscripti on(JNIEnv *pEnv, jobject, jstring url); 40 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_removeSubscripti on(JNIEnv *pEnv, jobject, jstring url);
41 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_refreshSubscript ion(JNIEnv *pEnv, jobject, jstring url); 41 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_refreshSubscript ion(JNIEnv *pEnv, jobject, jstring url);
42 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_actualizeSubscri ptionStatus(JNIEnv *pEnv, jobject, jstring url); 42 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_actualizeSubscri ptionStatus(JNIEnv *pEnv, jobject, jstring url);
43 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_setAcceptableAds Enabled(JNIEnv *pEnv, jobject, jboolean enabled); 43 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_setAcceptableAds Enabled(JNIEnv *pEnv, jobject, jboolean enabled);
44 JNIEXPORT jstring JNICALL Java_org_adblockplus_android_ABPEngine_getDocumentat ionLink( 44 JNIEXPORT jstring JNICALL Java_org_adblockplus_android_ABPEngine_getDocumentat ionLink(
45 JNIEnv *env, jobject object); 45 JNIEnv *env, jobject object);
Felix Dahlke 2013/11/27 12:19:33 This and the other changes in this file are unrela
46 JNIEXPORT jboolean JNICALL Java_org_adblockplus_android_ABPEngine_matches(JNIE nv *pEnv, jobject, jstring url, jstring contentType, jstring documentUrl); 46 JNIEXPORT jboolean JNICALL Java_org_adblockplus_android_ABPEngine_matches(
47 JNIEnv *pEnv, jobject, jstring url, jstring contentType, jobjectArray docu mentUrls);
47 JNIEXPORT jobjectArray JNICALL Java_org_adblockplus_android_ABPEngine_getSelec torsForDomain(JNIEnv *pEnv, jobject, jstring domain); 48 JNIEXPORT jobjectArray JNICALL Java_org_adblockplus_android_ABPEngine_getSelec torsForDomain(JNIEnv *pEnv, jobject, jstring domain);
48 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_checkUpdates(JNI Env *pEnv, jobject); 49 JNIEXPORT void JNICALL Java_org_adblockplus_android_ABPEngine_checkUpdates(JNI Env *pEnv, jobject);
49 }; 50 };
50 51
51 jobjectArray subscriptionsAsJavaArray(JNIEnv *pEnv, std::vector<AdblockPlus::Sub scriptionPtr> subscriptions) 52 jobjectArray subscriptionsAsJavaArray(JNIEnv *pEnv, std::vector<AdblockPlus::Sub scriptionPtr> subscriptions)
52 { 53 {
53 D(D_WARN, "subscriptionsAsJavaArray()"); 54 D(D_WARN, "subscriptionsAsJavaArray()");
54 static jclass cls = reinterpret_cast<jclass>(pEnv->NewGlobalRef(pEnv->FindClas s("org/adblockplus/android/Subscription"))); 55 static jclass cls = reinterpret_cast<jclass>(pEnv->NewGlobalRef(pEnv->FindClas s("org/adblockplus/android/Subscription")));
55 static jmethodID cid = pEnv->GetMethodID(cls, "<init>", "()V"); 56 static jmethodID cid = pEnv->GetMethodID(cls, "<init>", "()V");
56 static jfieldID ftitle = pEnv->GetFieldID(cls, "title", "Ljava/lang/String;"); 57 static jfieldID ftitle = pEnv->GetFieldID(cls, "title", "Ljava/lang/String;");
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 } 458 }
458 } 459 }
459 460
460 JNIEXPORT jstring JNICALL Java_org_adblockplus_android_ABPEngine_getDocumentatio nLink( 461 JNIEXPORT jstring JNICALL Java_org_adblockplus_android_ABPEngine_getDocumentatio nLink(
461 JNIEnv *env, jobject object) 462 JNIEnv *env, jobject object)
462 { 463 {
463 const std::string documentationLink = filterEngine->GetPref("documentation_lin k")->AsString(); 464 const std::string documentationLink = filterEngine->GetPref("documentation_lin k")->AsString();
464 return env->NewStringUTF(documentationLink.c_str()); 465 return env->NewStringUTF(documentationLink.c_str());
465 } 466 }
466 467
467 JNIEXPORT jboolean JNICALL Java_org_adblockplus_android_ABPEngine_matches(JNIEnv *pEnv, jobject, jstring url, jstring contentType, jstring documentUrl) 468 JNIEXPORT jboolean JNICALL Java_org_adblockplus_android_ABPEngine_matches(
469 JNIEnv *pEnv, jobject, jstring url, jstring contentType, jobjectArray document Urls)
468 { 470 {
469 try 471 try
470 { 472 {
471 const std::string surl = GetString(pEnv, url); 473 const std::string surl = GetString(pEnv, url);
472 const std::string stype = GetString(pEnv, contentType); 474 const std::string stype = GetString(pEnv, contentType);
473 const std::string sdoc = GetString(pEnv, documentUrl); 475 const int documentUrlsLength = pEnv->GetArrayLength(documentUrls);
476 std::vector<std::string> sdocumentUrls;
477 for(int i = 0; i < documentUrlsLength; i++)
478 {
479 jstring documentUrl = static_cast<jstring>(pEnv->GetObjectArrayElement(do cumentUrls, i));
480 sdocumentUrls.push_back(GetString(pEnv, documentUrl));
481 }
474 482
475 AdblockPlus::FilterPtr filter = filterEngine->Matches(surl, stype, sdoc); 483 AdblockPlus::FilterPtr filter = filterEngine->Matches(surl, stype, sdocument Urls);
476 484
477 if (! filter) 485 if (! filter)
478 return JNI_FALSE; 486 return JNI_FALSE;
479 487
480 // hack: if there is no referrer block only if filter is domain-specific 488 // hack: if there is no referrer, block only if filter is domain-specific
481 // (to re-enable in-app ads blocking, proposed on 12.11.2012 Monday meeting) 489 // (to re-enable in-app ads blocking, proposed on 12.11.2012 Monday meeting)
482 // documentUrl contains the referrer (Android application special case) 490 // (documentUrls contains the referrers on Android)
483 if (sdoc.empty() && (filter->GetProperty("text")->AsString()).find("||") != std::string::npos) 491 if (!sdocumentUrls.size() &&
492 (filter->GetProperty("text")->AsString()).find("||") != std::string::npo s)
484 return JNI_FALSE; 493 return JNI_FALSE;
485 494
486 return filter->GetType() == AdblockPlus::Filter::TYPE_EXCEPTION ? JNI_FALSE : JNI_TRUE; 495 return filter->GetType() == AdblockPlus::Filter::TYPE_EXCEPTION ? JNI_FALSE : JNI_TRUE;
487 } 496 }
488 catch (const std::exception& e) 497 catch (const std::exception& e)
489 { 498 {
490 ThrowJavaException(pEnv, e); 499 ThrowJavaException(pEnv, e);
491 } 500 }
492 catch (...) 501 catch (...)
493 { 502 {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 } 549 }
541 catch (const std::exception& e) 550 catch (const std::exception& e)
542 { 551 {
543 ThrowJavaException(pEnv, e); 552 ThrowJavaException(pEnv, e);
544 } 553 }
545 catch (...) 554 catch (...)
546 { 555 {
547 ThrowJavaException(pEnv); 556 ThrowJavaException(pEnv);
548 } 557 }
549 } 558 }
OLDNEW
« no previous file with comments | « no previous file | src/org/adblockplus/android/ABPEngine.java » ('j') | src/org/adblockplus/android/ABPEngine.java » ('J')

Powered by Google App Engine
This is Rietveld