| OLD | NEW |
| 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-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2015 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 Loading... |
| 35 public class AddOnBridge | 35 public class AddOnBridge |
| 36 { | 36 { |
| 37 private static final String TAG = "AdblockBrowser.AddOnBridge"; | 37 private static final String TAG = "AdblockBrowser.AddOnBridge"; |
| 38 private static final String REQUEST_NAME = "AdblockPlus:Api"; | 38 private static final String REQUEST_NAME = "AdblockPlus:Api"; |
| 39 // Timeout for checking filter loading (in seconds) | 39 // Timeout for checking filter loading (in seconds) |
| 40 private static final int QUERY_GET_FILTERS_LOADED_TIMEOUT = 30; | 40 private static final int QUERY_GET_FILTERS_LOADED_TIMEOUT = 30; |
| 41 // How long to wait between retries (in milliseconds) | 41 // How long to wait between retries (in milliseconds) |
| 42 private static final int QUERY_GET_FILTERS_LOADED_DELAY = 500; | 42 private static final int QUERY_GET_FILTERS_LOADED_DELAY = 500; |
| 43 // Handler+HandlerThread for posting delayed re-tries without interfering with | 43 // Handler+HandlerThread for posting delayed re-tries without interfering with |
| 44 // other threads (e.g. the UI or Gecko thread) | 44 // other threads (e.g. the UI or Gecko thread) |
| 45 private static final HandlerThread HANDLER_THREAD; | 45 private static final HandlerThread PRIVATE_HANDLER_THREAD; |
| 46 private static final Handler HANDLER; | 46 private static final Handler PRIVATE_HANDLER; |
| 47 // Global handler, for e.g. UI tasks |
| 48 private static final HandlerThread GLOBAL_HANDLER_THREAD; |
| 49 private static final Handler GLOBAL_HANDLER; |
| 47 | 50 |
| 48 static | 51 static |
| 49 { | 52 { |
| 50 HANDLER_THREAD = new HandlerThread("abp-bridge"); | 53 PRIVATE_HANDLER_THREAD = new HandlerThread("abp-private-handler"); |
| 51 HANDLER_THREAD.setDaemon(true); | 54 PRIVATE_HANDLER_THREAD.setDaemon(true); |
| 52 HANDLER_THREAD.start(); | 55 PRIVATE_HANDLER_THREAD.start(); |
| 53 HANDLER = new Handler(HANDLER_THREAD.getLooper()); | 56 PRIVATE_HANDLER = new Handler(PRIVATE_HANDLER_THREAD.getLooper()); |
| 57 |
| 58 GLOBAL_HANDLER_THREAD = new HandlerThread("abp-global-handler"); |
| 59 GLOBAL_HANDLER_THREAD.setDaemon(true); |
| 60 GLOBAL_HANDLER_THREAD.start(); |
| 61 GLOBAL_HANDLER = new Handler(GLOBAL_HANDLER_THREAD.getLooper()); |
| 62 } |
| 63 |
| 64 public static void postToHandler(Runnable runnable) |
| 65 { |
| 66 GLOBAL_HANDLER.post(runnable); |
| 67 } |
| 68 |
| 69 public static void postToHandlerDelayed(Runnable runnable, long delayMillis) |
| 70 { |
| 71 GLOBAL_HANDLER.postDelayed(runnable, delayMillis); |
| 54 } | 72 } |
| 55 | 73 |
| 56 public static boolean getBooleanFromJsObject(final NativeJSObject obj, final S
tring name, | 74 public static boolean getBooleanFromJsObject(final NativeJSObject obj, final S
tring name, |
| 57 final boolean defaultValue) | 75 final boolean defaultValue) |
| 58 { | 76 { |
| 59 try | 77 try |
| 60 { | 78 { |
| 61 return obj.getBoolean(name); | 79 return obj.getBoolean(name); |
| 62 } | 80 } |
| 63 catch (final Exception e) | 81 catch (final Exception e) |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 parameters.put("url", url); | 180 parameters.put("url", url); |
| 163 callFunction(callback, "isSubscriptionListed", parameters); | 181 callFunction(callback, "isSubscriptionListed", parameters); |
| 164 } | 182 } |
| 165 | 183 |
| 166 public static void addSubscription(final AdblockPlusApiCallback callback, | 184 public static void addSubscription(final AdblockPlusApiCallback callback, |
| 167 final String url, final String title) | 185 final String url, final String title) |
| 168 { | 186 { |
| 169 Log.d(TAG, "addSubscription for " + url + " (" + title + ")"); | 187 Log.d(TAG, "addSubscription for " + url + " (" + title + ")"); |
| 170 final Map<String, Object> parameters = new HashMap<String, Object>(); | 188 final Map<String, Object> parameters = new HashMap<String, Object>(); |
| 171 parameters.put("url", url); | 189 parameters.put("url", url); |
| 172 parameters.put("title", title); | 190 if (title != null) |
| 191 { |
| 192 parameters.put("title", title); |
| 193 } |
| 173 callFunction(callback, "addSubscription", parameters); | 194 callFunction(callback, "addSubscription", parameters); |
| 174 } | 195 } |
| 175 | 196 |
| 197 public static void queryActiveSubscriptions(final AdblockPlusApiCallback callb
ack) |
| 198 { |
| 199 Log.d(TAG, "queryActiveSubscriptions"); |
| 200 final Map<String, Object> parameters = new HashMap<String, Object>(); |
| 201 callFunction(callback, "getActiveSubscriptions", parameters); |
| 202 } |
| 203 |
| 176 public static void removeSubscription(final AdblockPlusApiCallback callback, | 204 public static void removeSubscription(final AdblockPlusApiCallback callback, |
| 177 final String url) | 205 final String url) |
| 178 { | 206 { |
| 179 Log.d(TAG, "removeSubscription for " + url); | 207 Log.d(TAG, "removeSubscription for " + url); |
| 180 final Map<String, Object> parameters = new HashMap<String, Object>(); | 208 final Map<String, Object> parameters = new HashMap<String, Object>(); |
| 181 parameters.put("url", url); | 209 parameters.put("url", url); |
| 182 callFunction(callback, "removeSubscription", parameters); | 210 callFunction(callback, "removeSubscription", parameters); |
| 183 } | 211 } |
| 184 | 212 |
| 185 public static void queryIsLocal(final AdblockPlusApiCallback callback, | 213 public static void queryIsLocal(final AdblockPlusApiCallback callback, |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 274 private void attemptRetry() | 302 private void attemptRetry() |
| 275 { | 303 { |
| 276 if (System.currentTimeMillis() - this.creationTime > (QUERY_GET_FILTERS_LO
ADED_TIMEOUT * 1000)) | 304 if (System.currentTimeMillis() - this.creationTime > (QUERY_GET_FILTERS_LO
ADED_TIMEOUT * 1000)) |
| 277 { | 305 { |
| 278 this.invokeFailureCallback("getFiltersLoaded timeout"); | 306 this.invokeFailureCallback("getFiltersLoaded timeout"); |
| 279 } | 307 } |
| 280 else | 308 else |
| 281 { | 309 { |
| 282 Log.d(TAG, "Retrying: " + this.value); | 310 Log.d(TAG, "Retrying: " + this.value); |
| 283 final ChainedRequest next = this.cloneForRetry(); | 311 final ChainedRequest next = this.cloneForRetry(); |
| 284 HANDLER.postDelayed(new Runnable() | 312 PRIVATE_HANDLER.postDelayed(new Runnable() |
| 285 { | 313 { |
| 286 @Override | 314 @Override |
| 287 public void run() | 315 public void run() |
| 288 { | 316 { |
| 289 GeckoAppShell.sendRequestToGecko(next); | 317 GeckoAppShell.sendRequestToGecko(next); |
| 290 } | 318 } |
| 291 }, QUERY_GET_FILTERS_LOADED_DELAY); | 319 }, QUERY_GET_FILTERS_LOADED_DELAY); |
| 292 } | 320 } |
| 293 } | 321 } |
| 294 | 322 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 this.invokeSuccessCallback(jsObject); | 357 this.invokeSuccessCallback(jsObject); |
| 330 } | 358 } |
| 331 else | 359 else |
| 332 { | 360 { |
| 333 this.invokeFailureCallback(jsObject); | 361 this.invokeFailureCallback(jsObject); |
| 334 } | 362 } |
| 335 } | 363 } |
| 336 } | 364 } |
| 337 } | 365 } |
| 338 } | 366 } |
| OLD | NEW |