| Index: src/org/adblockplus/android/ABPEngine.java |
| diff --git a/src/org/adblockplus/android/ABPEngine.java b/src/org/adblockplus/android/ABPEngine.java |
| index 418185e0f0fcde90f0fde593af69e92c206fec8e..b99eccca8a0471183f0e550a9a8f5226e135bfc2 100644 |
| --- a/src/org/adblockplus/android/ABPEngine.java |
| +++ b/src/org/adblockplus/android/ABPEngine.java |
| @@ -17,6 +17,7 @@ |
| package org.adblockplus.android; |
| +import java.util.ArrayList; |
| import java.util.List; |
| import java.util.Locale; |
| @@ -63,10 +64,12 @@ public final class ABPEngine |
| private volatile UpdateCheckDoneCallback updateCheckDoneCallback; |
| private volatile FilterChangeCallback filterChangeCallback; |
| private volatile ShowNotificationCallback showNotificationCallback; |
| + private final boolean elemhideEnabled; |
| - private ABPEngine(final Context context) |
| + private ABPEngine(final Context context, final boolean enableElemhide) |
| { |
| this.context = context; |
| + this.elemhideEnabled = enableElemhide; |
| } |
| public static AppInfo generateAppInfo(final Context context) |
| @@ -97,7 +100,12 @@ public final class ABPEngine |
| public static ABPEngine create(final Context context, final AppInfo appInfo, final String basePath) |
| { |
| - final ABPEngine engine = new ABPEngine(context); |
| + return create(context, appInfo, basePath, false); |
| + } |
| + |
| + public static ABPEngine create(final Context context, final AppInfo appInfo, final String basePath, boolean enableElemhide) |
| + { |
| + final ABPEngine engine = new ABPEngine(context, enableElemhide); |
| engine.jsEngine = new JsEngine(appInfo); |
| engine.jsEngine.setDefaultFileSystem(basePath); |
| @@ -105,7 +113,7 @@ public final class ABPEngine |
| engine.logSystem = new AndroidLogSystem(); |
| engine.jsEngine.setLogSystem(engine.logSystem); |
| - engine.webRequest = new AndroidWebRequest(); |
| + engine.webRequest = new AndroidWebRequest(enableElemhide); |
| engine.jsEngine.setWebRequest(engine.webRequest); |
| engine.filterEngine = new FilterEngine(engine.jsEngine); |
| @@ -182,6 +190,11 @@ public final class ABPEngine |
| return this.filterEngine.isFirstRun(); |
| } |
| + public boolean isElemhideEnabled() |
| + { |
| + return this.elemhideEnabled; |
| + } |
| + |
| private static org.adblockplus.android.Subscription convertJsSubscription(final Subscription jsSubscription) |
| { |
| final org.adblockplus.android.Subscription subscription = new org.adblockplus.android.Subscription(); |
| @@ -278,6 +291,27 @@ public final class ABPEngine |
| return filter.getType() != Filter.Type.EXCEPTION; |
| } |
| + public boolean isDocumentWhitelisted(final String url, final String[] referrerChainArray) |
| + { |
| + return this.filterEngine.isDocumentWhitelisted(url, referrerChainArray); |
| + } |
| + |
| + public boolean isElemhideWhitelisted(final String url, final String[] referrerChainArray) |
| + { |
| + return this.filterEngine.isElemhideWhitelisted(url, referrerChainArray); |
| + } |
| + |
| + public List<String> getElementHidingSelectors(final String url, final String[] referrerChainArray) |
| + { |
| + if (!this.elemhideEnabled |
| + || this.isDocumentWhitelisted(url, referrerChainArray) |
| + || this.isElemhideWhitelisted(url, referrerChainArray)) |
| + { |
| + return new ArrayList<String>(); |
| + } |
| + return this.filterEngine.getElementHidingSelectors(url); |
| + } |
| + |
| public void checkForUpdates() |
| { |
| this.filterEngine.forceUpdateCheck(this.updateCheckDoneCallback); |
| @@ -291,4 +325,9 @@ public final class ABPEngine |
| Utils.updateSubscriptionStatus(this.context, sub); |
| } |
| } |
| + |
| + public FilterEngine getFilterEngine() |
| + { |
| + return this.filterEngine; |
| + } |
| } |