diff options
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.java | 22 |
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; |