summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCody Kesting <ckesting@google.com>2021-06-18 02:18:22 +0000
committerCody Kesting <ckesting@google.com>2021-06-18 17:35:48 +0000
commit1dba7e09df1ddf4abad59e2508ce07d29d33f1d6 (patch)
tree3a484d890bd7ace0247357b2c05d592caaf4af1c
parentcc265a58dee1c0ec55f103e6c6ff64cd64000f53 (diff)
Update Mobile Data State on subscription changes.
This CL ensures that Vcn instances refresh their mobile data state when they receive a new TelephonySubscriptionSnapshot. A new snapshot may contain different subId -> subGroup mappings, which can affect whether a Vcn instance's subGroup has mobile data enabled or not. This in turn can change which VcnGatewayConnections are brought up by the Vcn. Bug: 191394092 Test: atest FrameworksVcnTests CtsVcnTestCases Original-Change: https://android-review.googlesource.com/1740514 Merged-In: Ib59b4ed7900a177b17ed4a6e197e271b10937f65 Change-Id: Ib59b4ed7900a177b17ed4a6e197e271b10937f65
-rw-r--r--services/core/java/com/android/server/vcn/Vcn.java4
-rw-r--r--tests/vcn/java/com/android/server/vcn/VcnTest.java21
2 files changed, 25 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/vcn/Vcn.java b/services/core/java/com/android/server/vcn/Vcn.java
index f7d61367c81e..95a06fcff734 100644
--- a/services/core/java/com/android/server/vcn/Vcn.java
+++ b/services/core/java/com/android/server/vcn/Vcn.java
@@ -453,6 +453,10 @@ public class Vcn extends Handler {
for (VcnGatewayConnection gatewayConnection : mVcnGatewayConnections.values()) {
gatewayConnection.updateSubscriptionSnapshot(mLastSnapshot);
}
+
+ // Update the mobile data state after updating the subscription snapshot as a change in
+ // subIds for a subGroup may affect the mobile data state.
+ handleMobileDataToggled();
}
private void handleMobileDataToggled() {
diff --git a/tests/vcn/java/com/android/server/vcn/VcnTest.java b/tests/vcn/java/com/android/server/vcn/VcnTest.java
index f681ee19ab12..5d2f9d748581 100644
--- a/tests/vcn/java/com/android/server/vcn/VcnTest.java
+++ b/tests/vcn/java/com/android/server/vcn/VcnTest.java
@@ -242,6 +242,27 @@ public class VcnTest {
verifyUpdateSubscriptionSnapshotNotifiesGatewayConnections(VCN_STATUS_CODE_SAFE_MODE);
}
+ @Test
+ public void testSubscriptionSnapshotUpdatesMobileDataState() {
+ final NetworkRequestListener requestListener = verifyAndGetRequestListener();
+ startVcnGatewayWithCapabilities(requestListener, TEST_CAPS[0]);
+
+ // Expect mobile data enabled from setUp()
+ assertTrue(mVcn.isMobileDataEnabled());
+
+ final TelephonySubscriptionSnapshot updatedSnapshot =
+ mock(TelephonySubscriptionSnapshot.class);
+ doReturn(TEST_SUB_IDS_IN_GROUP)
+ .when(updatedSnapshot)
+ .getAllSubIdsInGroup(eq(TEST_SUB_GROUP));
+ doReturn(false).when(mTelephonyManager).isDataEnabled();
+
+ mVcn.updateSubscriptionSnapshot(updatedSnapshot);
+ mTestLooper.dispatchAll();
+
+ assertFalse(mVcn.isMobileDataEnabled());
+ }
+
private void triggerVcnRequestListeners(NetworkRequestListener requestListener) {
for (final int[] caps : TEST_CAPS) {
startVcnGatewayWithCapabilities(requestListener, caps);