Do not shut down IwlanDataServiceHandler in deInitNetworkCallback am: b677bb7184
Original change: https://android-review.googlesource.com/c/platform/packages/services/Iwlan/+/2241060
Change-Id: I14da07ddf1c658e64fed0a5f7f73cb6e228a1cd9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/google/android/iwlan/IwlanDataService.java b/src/com/google/android/iwlan/IwlanDataService.java
index 89604aa..a251bd6 100644
--- a/src/com/google/android/iwlan/IwlanDataService.java
+++ b/src/com/google/android/iwlan/IwlanDataService.java
@@ -1650,11 +1650,6 @@
mContext.getSystemService(ConnectivityManager.class);
connectivityManager.unregisterNetworkCallback(mNetworkMonitorCallback);
mNetworkMonitorCallback = null;
- if (mIwlanDataServiceHandlerThread != null) {
- mIwlanDataServiceHandlerThread.quit();
- mIwlanDataServiceHandlerThread = null;
- }
- mIwlanDataServiceHandler = null;
}
@VisibleForTesting
diff --git a/test/com/google/android/iwlan/IwlanDataServiceTest.java b/test/com/google/android/iwlan/IwlanDataServiceTest.java
index 3a7e0af..0729fc7 100644
--- a/test/com/google/android/iwlan/IwlanDataServiceTest.java
+++ b/test/com/google/android/iwlan/IwlanDataServiceTest.java
@@ -280,7 +280,6 @@
mIwlanDataService.removeDataServiceProvider(mMockIwlanDataServiceProvider);
mTestLooper.dispatchAll();
verify(mIwlanDataService, times(1)).deinitNetworkCallback();
- assertEquals(mIwlanDataService.mIwlanDataServiceHandler, null);
mIwlanDataService.onCreateDataServiceProvider(DEFAULT_SLOT_INDEX);
mTestLooper.dispatchAll();
}
@@ -895,6 +894,28 @@
assertEquals(finalUpStats.getMax(), tunnelUpStats.getMax(), 100);
}
+ @Test
+ public void testIwlanDataServiceHandlerOnUnbind() {
+ DataProfile dp = buildDataProfile();
+ doReturn(mMockEpdgTunnelManager).when(mSpyIwlanDataServiceProvider).getTunnelManager();
+ mSpyIwlanDataServiceProvider.setTunnelState(
+ dp, mMockDataServiceCallback, TunnelState.TUNNEL_UP, null, false, 1);
+
+ // Simulate IwlanDataService.onUnbind() which force close all tunnels
+ mSpyIwlanDataServiceProvider.forceCloseTunnels();
+ // Simulate DataService.onUnbind() which remove all IwlanDataServiceProviders
+ mSpyIwlanDataServiceProvider.close();
+ mTestLooper.dispatchAll();
+
+ verify(mMockEpdgTunnelManager, atLeastOnce()).closeTunnel(eq(TEST_APN_NAME), eq(true));
+ assertNotNull(mIwlanDataService.mIwlanDataServiceHandler);
+ // Should not raise NullPointerException
+ mSpyIwlanDataServiceProvider
+ .getIwlanTunnelCallback()
+ .onClosed(TEST_APN_NAME, new IwlanError(IwlanError.NO_ERROR));
+ mTestLooper.dispatchAll();
+ }
+
private void mockTunnelSetupFail(DataProfile dp) {
mSpyIwlanDataServiceProvider.setupDataCall(
AccessNetworkType.IWLAN, /* AccessNetworkType */