diff options
| -rw-r--r-- | services/core/java/com/android/server/vcn/Vcn.java | 12 | ||||
| -rw-r--r-- | tests/vcn/java/com/android/server/vcn/VcnTest.java | 6 |
2 files changed, 17 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/vcn/Vcn.java b/services/core/java/com/android/server/vcn/Vcn.java index cccb0968fc6a..e1747f71d5a9 100644 --- a/services/core/java/com/android/server/vcn/Vcn.java +++ b/services/core/java/com/android/server/vcn/Vcn.java @@ -396,6 +396,15 @@ public class Vcn extends Handler { continue; } + // This should never happen, by virtue of checking for the above check for + // pre-existing VcnGatewayConnections that satisfy a given request, but if state + // that affects the satsifying of requests changes, this is theoretically possible. + if (mVcnGatewayConnections.containsKey(gatewayConnectionConfig)) { + Slog.wtf(getLogTag(), "Attempted to bring up VcnGatewayConnection for config " + + "with existing VcnGatewayConnection"); + return; + } + final VcnGatewayConnection vcnGatewayConnection = mDeps.newVcnGatewayConnection( mVcnContext, @@ -467,6 +476,9 @@ public class Vcn extends Handler { } } } + + // Trigger re-evaluation of all requests; mobile data state impacts supported caps. + mVcnContext.getVcnNetworkProvider().resendAllRequests(mRequestListener); } } diff --git a/tests/vcn/java/com/android/server/vcn/VcnTest.java b/tests/vcn/java/com/android/server/vcn/VcnTest.java index 736fabdb1ac5..f681ee19ab12 100644 --- a/tests/vcn/java/com/android/server/vcn/VcnTest.java +++ b/tests/vcn/java/com/android/server/vcn/VcnTest.java @@ -388,8 +388,9 @@ public class VcnTest { final ContentObserver contentObserver = captor.getValue(); // Start VcnGatewayConnections + final NetworkRequestListener requestListener = verifyAndGetRequestListener(); mVcn.setMobileDataEnabled(startingToggleState); - triggerVcnRequestListeners(verifyAndGetRequestListener()); + triggerVcnRequestListeners(requestListener); final Map<VcnGatewayConnectionConfig, VcnGatewayConnection> gateways = mVcn.getVcnGatewayConnectionConfigMap(); @@ -411,6 +412,9 @@ public class VcnTest { } } + if (startingToggleState != endingToggleState) { + verify(mVcnNetworkProvider).resendAllRequests(requestListener); + } assertEquals(endingToggleState, mVcn.isMobileDataEnabled()); } |