aboutsummaryrefslogtreecommitdiff
path: root/shadows/framework/src/main/java/org/robolectric/shadows/ShadowConnectivityManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'shadows/framework/src/main/java/org/robolectric/shadows/ShadowConnectivityManager.java')
-rw-r--r--shadows/framework/src/main/java/org/robolectric/shadows/ShadowConnectivityManager.java22
1 files changed, 22 insertions, 0 deletions
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowConnectivityManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowConnectivityManager.java
index a994fa24f..d60c68aae 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowConnectivityManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowConnectivityManager.java
@@ -8,6 +8,7 @@ import static android.os.Build.VERSION_CODES.O;
import static org.robolectric.RuntimeEnvironment.getApiLevel;
import static org.robolectric.Shadows.shadowOf;
+import android.app.PendingIntent;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.OnNetworkActiveListener;
import android.net.LinkProperties;
@@ -40,6 +41,8 @@ public class ShadowConnectivityManager {
private final Map<Integer, NetworkInfo> networkTypeToNetworkInfo = new HashMap<>();
private HashSet<ConnectivityManager.NetworkCallback> networkCallbacks = new HashSet<>();
+ private final HashSet<PendingIntent> networkCallbackPendingIntents = new HashSet<>();
+
private final Map<Integer, Network> netIdToNetwork = new HashMap<>();
private final Map<Integer, NetworkInfo> netIdToNetworkInfo = new HashMap<>();
private Network processBoundNetwork;
@@ -84,6 +87,10 @@ public class ShadowConnectivityManager {
return networkCallbacks;
}
+ public Set<PendingIntent> getNetworkCallbackPendingIntents() {
+ return networkCallbackPendingIntents;
+ }
+
/**
* @return networks and their connectivity status which was reported with {@link
* #reportNetworkConnectivity}.
@@ -106,6 +113,11 @@ public class ShadowConnectivityManager {
networkCallbacks.add(networkCallback);
}
+ @Implementation(minSdk = M)
+ protected void registerNetworkCallback(NetworkRequest request, PendingIntent pendingIntent) {
+ networkCallbackPendingIntents.add(pendingIntent);
+ }
+
@Implementation(minSdk = LOLLIPOP)
protected void requestNetwork(
NetworkRequest request, ConnectivityManager.NetworkCallback networkCallback) {
@@ -151,6 +163,16 @@ public class ShadowConnectivityManager {
}
}
+ @Implementation(minSdk = M)
+ protected void unregisterNetworkCallback(PendingIntent pendingIntent) {
+ if (pendingIntent == null) {
+ throw new IllegalArgumentException("Invalid NetworkCallback");
+ }
+ if (networkCallbackPendingIntents.contains(pendingIntent)) {
+ networkCallbackPendingIntents.remove(pendingIntent);
+ }
+ }
+
@Implementation
protected NetworkInfo getActiveNetworkInfo() {
return activeNetworkInfo;