| Index: mobile/android/thirdparty/org/adblockplus/browser/AddOnBridge.java |
| diff --git a/mobile/android/thirdparty/org/adblockplus/browser/AddOnBridge.java b/mobile/android/thirdparty/org/adblockplus/browser/AddOnBridge.java |
| index 5bd4a06150082c674bb2b850c64267094357e8cf..39304cce0d31acd5b42c5fced38e3ae46df5ede1 100644 |
| --- a/mobile/android/thirdparty/org/adblockplus/browser/AddOnBridge.java |
| +++ b/mobile/android/thirdparty/org/adblockplus/browser/AddOnBridge.java |
| @@ -42,15 +42,33 @@ public class AddOnBridge |
| private static final int QUERY_GET_FILTERS_LOADED_DELAY = 500; |
| // Handler+HandlerThread for posting delayed re-tries without interfering with |
| // other threads (e.g. the UI or Gecko thread) |
| - private static final HandlerThread HANDLER_THREAD; |
| - private static final Handler HANDLER; |
| + private static final HandlerThread PRIVATE_HANDLER_THREAD; |
| + private static final Handler PRIVATE_HANDLER; |
| + // Global handler, for e.g. UI tasks |
| + private static final HandlerThread GLOBAL_HANDLER_THREAD; |
| + private static final Handler GLOBAL_HANDLER; |
| static |
| { |
| - HANDLER_THREAD = new HandlerThread("abp-bridge"); |
| - HANDLER_THREAD.setDaemon(true); |
| - HANDLER_THREAD.start(); |
| - HANDLER = new Handler(HANDLER_THREAD.getLooper()); |
| + PRIVATE_HANDLER_THREAD = new HandlerThread("abp-private-handler"); |
| + PRIVATE_HANDLER_THREAD.setDaemon(true); |
| + PRIVATE_HANDLER_THREAD.start(); |
| + PRIVATE_HANDLER = new Handler(PRIVATE_HANDLER_THREAD.getLooper()); |
| + |
| + GLOBAL_HANDLER_THREAD = new HandlerThread("abp-global-handler"); |
| + GLOBAL_HANDLER_THREAD.setDaemon(true); |
| + GLOBAL_HANDLER_THREAD.start(); |
| + GLOBAL_HANDLER = new Handler(GLOBAL_HANDLER_THREAD.getLooper()); |
| + } |
| + |
| + public static void postToHandler(Runnable runnable) |
| + { |
| + GLOBAL_HANDLER.post(runnable); |
| + } |
| + |
| + public static void postToHandlerDelayed(Runnable runnable, long delayMillis) |
| + { |
| + GLOBAL_HANDLER.postDelayed(runnable, delayMillis); |
| } |
| public static boolean getBooleanFromJsObject(final NativeJSObject obj, final String name, |
| @@ -169,10 +187,20 @@ public class AddOnBridge |
| Log.d(TAG, "addSubscription for " + url + " (" + title + ")"); |
| final Map<String, Object> parameters = new HashMap<String, Object>(); |
| parameters.put("url", url); |
| - parameters.put("title", title); |
| + if (title != null) |
| + { |
| + parameters.put("title", title); |
| + } |
| callFunction(callback, "addSubscription", parameters); |
| } |
| + public static void queryActiveSubscriptions(final AdblockPlusApiCallback callback) |
| + { |
| + Log.d(TAG, "queryActiveSubscriptions"); |
| + final Map<String, Object> parameters = new HashMap<String, Object>(); |
| + callFunction(callback, "getActiveSubscriptions", parameters); |
| + } |
| + |
| public static void removeSubscription(final AdblockPlusApiCallback callback, |
| final String url) |
| { |
| @@ -281,7 +309,7 @@ public class AddOnBridge |
| { |
| Log.d(TAG, "Retrying: " + this.value); |
| final ChainedRequest next = this.cloneForRetry(); |
| - HANDLER.postDelayed(new Runnable() |
| + PRIVATE_HANDLER.postDelayed(new Runnable() |
| { |
| @Override |
| public void run() |