Merge "[CS] Unregister callback as part of onUnavailable dispatch"
am: e2ba92c411
Change-Id: I14d3c0f6c606020bd1d1e756174a66ee933cb15f
This commit is contained in:
commit
477211720f
2 changed files with 11 additions and 2 deletions
|
|
@ -3449,6 +3449,10 @@ public class ConnectivityManager {
|
|||
final NetworkCallback callback;
|
||||
synchronized (sCallbacks) {
|
||||
callback = sCallbacks.get(request);
|
||||
if (message.what == CALLBACK_UNAVAIL) {
|
||||
sCallbacks.remove(request);
|
||||
callback.networkRequest = ALREADY_UNREGISTERED;
|
||||
}
|
||||
}
|
||||
if (DBG) {
|
||||
Log.d(TAG, getCallbackName(message.what) + " for network " + network);
|
||||
|
|
@ -3995,8 +3999,10 @@ public class ConnectivityManager {
|
|||
synchronized (sCallbacks) {
|
||||
Preconditions.checkArgument(networkCallback.networkRequest != null,
|
||||
"NetworkCallback was not registered");
|
||||
Preconditions.checkArgument(networkCallback.networkRequest != ALREADY_UNREGISTERED,
|
||||
"NetworkCallback was already unregistered");
|
||||
if (networkCallback.networkRequest == ALREADY_UNREGISTERED) {
|
||||
Log.d(TAG, "NetworkCallback was already unregistered");
|
||||
return;
|
||||
}
|
||||
for (Map.Entry<NetworkRequest, NetworkCallback> e : sCallbacks.entrySet()) {
|
||||
if (e.getValue() == networkCallback) {
|
||||
reqs.add(e.getKey());
|
||||
|
|
|
|||
|
|
@ -3854,6 +3854,9 @@ public class ConnectivityServiceTest {
|
|||
networkCallback.expectCallback(CallbackState.UNAVAILABLE, null);
|
||||
testFactory.waitForRequests();
|
||||
|
||||
// unregister network callback - a no-op, but should not fail
|
||||
mCm.unregisterNetworkCallback(networkCallback);
|
||||
|
||||
testFactory.unregister();
|
||||
handlerThread.quit();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue