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(); |
} |
} |