 Issue 29678590:
  Issue 6307 - Introduce external engine created callback  (Closed)
    
  
    Issue 29678590:
  Issue 6307 - Introduce external engine created callback  (Closed) 
  | Index: libadblockplus-android/src/org/adblockplus/libadblockplus/android/SingleInstanceEngineProvider.java | 
| diff --git a/libadblockplus-android/src/org/adblockplus/libadblockplus/android/SingleInstanceEngineProvider.java b/libadblockplus-android/src/org/adblockplus/libadblockplus/android/SingleInstanceEngineProvider.java | 
| index 66b346e49e6fe66ed73aa1a03f9b2e84517f228e..cbefd633f79ea7667f4476433bdeb385a550d5fe 100644 | 
| --- a/libadblockplus-android/src/org/adblockplus/libadblockplus/android/SingleInstanceEngineProvider.java | 
| +++ b/libadblockplus-android/src/org/adblockplus/libadblockplus/android/SingleInstanceEngineProvider.java | 
| @@ -23,6 +23,8 @@ import android.content.SharedPreferences; | 
| import android.net.ConnectivityManager; | 
| import android.util.Log; | 
| +import java.util.LinkedList; | 
| +import java.util.List; | 
| import java.util.Map; | 
| import java.util.concurrent.CountDownLatch; | 
| import java.util.concurrent.atomic.AtomicInteger; | 
| @@ -42,8 +44,8 @@ public class SingleInstanceEngineProvider implements AdblockEngineProvider | 
| private AdblockEngine engine; | 
| private CountDownLatch engineCreated; | 
| private Long v8IsolateProviderPtr; | 
| - private Runnable engineCreatedCallback; | 
| - private Runnable engineDisposedCallback; | 
| + private List<Runnable> engineCreatedCallbacks = new LinkedList<Runnable>(); | 
| + private List<Runnable> engineDisposedCallbacks = new LinkedList<Runnable>(); | 
| 
diegocarloslima
2018/01/26 12:30:01
I would prefer the callbacks to be interfaces inst
 | 
| /* | 
| Simple ARC management for AdblockEngine | 
| @@ -89,18 +91,38 @@ public class SingleInstanceEngineProvider implements AdblockEngineProvider | 
| return this; | 
| } | 
| - public SingleInstanceEngineProvider setEngineCreatedCallback(Runnable callback) | 
| + public SingleInstanceEngineProvider addEngineCreatedCallback(Runnable callback) | 
| { | 
| - this.engineCreatedCallback = callback; | 
| + this.engineCreatedCallbacks.add(callback); | 
| return this; | 
| } | 
| - public SingleInstanceEngineProvider setEngineDisposedCallback(Runnable callback) | 
| + public void removeEngineCreatedCallback(Runnable callback) | 
| { | 
| - this.engineDisposedCallback = callback; | 
| + this.engineCreatedCallbacks.remove(callback); | 
| + } | 
| + | 
| + public void clearEngineCreatedCallbacks() | 
| + { | 
| + this.engineCreatedCallbacks.clear(); | 
| + } | 
| + | 
| + public SingleInstanceEngineProvider addEngineDisposedCallback(Runnable callback) | 
| + { | 
| + this.engineDisposedCallbacks.add(callback); | 
| return this; | 
| } | 
| + public void removeEngineDisposedCallback(Runnable callback) | 
| + { | 
| + this.engineDisposedCallbacks.remove(callback); | 
| + } | 
| + | 
| + public void clearEngineDisposedCallbacks() | 
| + { | 
| + this.engineDisposedCallbacks.clear(); | 
| + } | 
| + | 
| private void createAdblock() | 
| { | 
| ConnectivityManager connectivityManager = | 
| @@ -139,9 +161,9 @@ public class SingleInstanceEngineProvider implements AdblockEngineProvider | 
| Log.d(TAG, "AdblockHelper engine created"); | 
| // sometimes we need to init AdblockEngine instance, eg. set user settings | 
| - if (engineCreatedCallback != null) | 
| + for (Runnable callback : engineCreatedCallbacks) | 
| { | 
| - engineCreatedCallback.run(); | 
| + callback.run(); | 
| } | 
| } | 
| @@ -241,9 +263,9 @@ public class SingleInstanceEngineProvider implements AdblockEngineProvider | 
| // sometimes we need to deinit something after AdblockEngine instance disposed | 
| // eg. release user settings | 
| - if (engineDisposedCallback != null) | 
| + for (Runnable callback : engineDisposedCallbacks) | 
| { | 
| - engineDisposedCallback.run(); | 
| + callback.run(); | 
| } | 
| } |