diff options
-rw-r--r-- | src/com/google/android/iwlan/IwlanDataService.java | 4 | ||||
-rw-r--r-- | test/com/google/android/iwlan/IwlanDataServiceTest.java | 34 |
2 files changed, 36 insertions, 2 deletions
diff --git a/src/com/google/android/iwlan/IwlanDataService.java b/src/com/google/android/iwlan/IwlanDataService.java index 9c1b549..5d9006a 100644 --- a/src/com/google/android/iwlan/IwlanDataService.java +++ b/src/com/google/android/iwlan/IwlanDataService.java @@ -1891,7 +1891,6 @@ public class IwlanDataService extends DataService { } sDefaultDataTransport = transport; - sNetwork = network; sNetworkConnected = networkConnected; if (networkConnected) { @@ -1914,7 +1913,7 @@ public class IwlanDataService extends DataService { sLinkProperties = linkProperties; for (IwlanDataServiceProvider dp : sIwlanDataServiceProviders.values()) { dp.dnsPrefetchCheck(); - dp.updateNetwork(sNetwork, linkProperties); + dp.updateNetwork(network, linkProperties); } IwlanHelper.updateCountryCodeWhenNetworkConnected(); } @@ -1927,6 +1926,7 @@ public class IwlanDataService extends DataService { dp.forceCloseTunnelsInDeactivatingState(); } } + sNetwork = network; } /** diff --git a/test/com/google/android/iwlan/IwlanDataServiceTest.java b/test/com/google/android/iwlan/IwlanDataServiceTest.java index 2f8f2c3..b7cda5b 100644 --- a/test/com/google/android/iwlan/IwlanDataServiceTest.java +++ b/test/com/google/android/iwlan/IwlanDataServiceTest.java @@ -1780,4 +1780,38 @@ public class IwlanDataServiceTest { method.setAccessible(true); return method.invoke(target, args); } + + @Test + public void testNetworkChangeDuringTunnelBringUp_closeTunnel() { + DataProfile dp = buildImsDataProfile(); + Network newNetwork1 = createMockNetwork(mLinkProperties); + onSystemDefaultNetworkConnected( + newNetwork1, mLinkProperties, TRANSPORT_WIFI, DEFAULT_SUB_INDEX); + + mSpyIwlanDataServiceProvider.setupDataCall( + AccessNetworkType.IWLAN, /* AccessNetworkType */ + dp, /* dataProfile */ + false, /* isRoaming */ + true, /* allowRoaming */ + DataService.REQUEST_REASON_NORMAL, /* DataService.REQUEST_REASON_NORMAL */ + null, /* LinkProperties */ + 1, /* pduSessionId */ + null, /* sliceInfo */ + null, /* trafficDescriptor */ + true, /* matchAllRuleAllowed */ + mMockDataServiceCallback); + mTestLooper.dispatchAll(); + + /* Check bringUpTunnel() is called. */ + verify(mMockEpdgTunnelManager, times(1)) + .bringUpTunnel( + any(TunnelSetupRequest.class), + any(IwlanTunnelCallback.class), + any(IwlanTunnelMetricsImpl.class)); + + Network newNetwork2 = createMockNetwork(mLinkProperties); + onSystemDefaultNetworkConnected( + newNetwork2, mLinkProperties, TRANSPORT_WIFI, DEFAULT_SUB_INDEX); + verify(mMockEpdgTunnelManager, times(1)).closeTunnel(any(), anyBoolean(), any(), any()); + } } |