summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAswin Sankar <apsankar@google.com>2023-05-19 13:05:46 -0700
committerAswin Sankar <apsankar@google.com>2023-05-24 11:30:57 -0700
commit05afdc7987832db83bcfb04d99aef12d2de78b84 (patch)
tree55b6e0d9a13419325271b4b90a40926ad37f440a
parent112b347bd7056651a41f97c72bc631aceb9b4d1e (diff)
downloadIwlan-05afdc7987832db83bcfb04d99aef12d2de78b84.tar.gz
updateNetwork(): Avoid NPE for null Network object.
- On cross SIM enable or LinkProperties update, use Objects.equals() support null Network objects. - Network objects may be null if device has just booted up or Network is of ETHERNET type. Fix: 283177975, 282913671 Test: New UTs in IwlanDataServiceTest. Live test for fix. Change-Id: Ife81fd507ee32c4083e7950ed46681a21c816696 Merged-In: Ife81fd507ee32c4083e7950ed46681a21c816696
-rw-r--r--src/com/google/android/iwlan/IwlanDataService.java5
-rw-r--r--test/com/google/android/iwlan/IwlanDataServiceTest.java25
2 files changed, 28 insertions, 2 deletions
diff --git a/src/com/google/android/iwlan/IwlanDataService.java b/src/com/google/android/iwlan/IwlanDataService.java
index 239713d..0d564ab 100644
--- a/src/com/google/android/iwlan/IwlanDataService.java
+++ b/src/com/google/android/iwlan/IwlanDataService.java
@@ -81,6 +81,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.LongSummaryStatistics;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
public class IwlanDataService extends DataService {
@@ -956,14 +957,14 @@ public class IwlanDataService extends DataService {
}
private void updateNetwork(
- @NonNull Network network, @Nullable LinkProperties linkProperties) {
+ @Nullable Network network, @Nullable LinkProperties linkProperties) {
if (mIwlanDataService.isNetworkConnected(
isActiveDataOnOtherSub(getSlotIndex()),
IwlanHelper.isCrossSimCallingEnabled(mContext, getSlotIndex()))) {
getTunnelManager().updateNetwork(network, linkProperties);
}
- if (network.equals(sNetwork)) {
+ if (Objects.equals(network, sNetwork)) {
return;
}
for (Map.Entry<String, TunnelState> entry : mTunnelStateForApn.entrySet()) {
diff --git a/test/com/google/android/iwlan/IwlanDataServiceTest.java b/test/com/google/android/iwlan/IwlanDataServiceTest.java
index 6862c97..c4549df 100644
--- a/test/com/google/android/iwlan/IwlanDataServiceTest.java
+++ b/test/com/google/android/iwlan/IwlanDataServiceTest.java
@@ -17,6 +17,7 @@
package com.google.android.iwlan;
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
+import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET;
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
@@ -535,6 +536,30 @@ public class IwlanDataServiceTest {
}
@Test
+ public void testOnCrossSimCallingEnable_doNotUpdateTunnelManagerIfNoNetwork() throws Exception {
+ when(mMockImsMmTelManager.isCrossSimCallingEnabled()).thenReturn(true);
+ mIwlanDataService
+ .mIwlanDataServiceHandler
+ .obtainMessage(
+ IwlanEventListener.CROSS_SIM_CALLING_ENABLE_EVENT,
+ DEFAULT_SLOT_INDEX,
+ 0 /* unused */)
+ .sendToTarget();
+ mTestLooper.dispatchAll();
+ verify(mMockEpdgTunnelManager, never())
+ .updateNetwork(any(Network.class), any(LinkProperties.class));
+ }
+
+ @Test
+ public void testOnEthernetConnection_doNotUpdateTunnelManager() throws Exception {
+ Network newNetwork = createMockNetwork(mLinkProperties);
+ onSystemDefaultNetworkConnected(
+ newNetwork, mLinkProperties, TRANSPORT_ETHERNET, DEFAULT_SUB_INDEX);
+ verify(mMockEpdgTunnelManager, never())
+ .updateNetwork(eq(newNetwork), any(LinkProperties.class));
+ }
+
+ @Test
public void testAddDuplicateDataServiceProviderThrows() throws Exception {
when(mMockIwlanDataServiceProvider.getSlotIndex()).thenReturn(DEFAULT_SLOT_INDEX);
assertThrows(