summaryrefslogtreecommitdiff
path: root/services/QualifiedNetworksService/src/com
diff options
context:
space:
mode:
authorsangyun <sangyun@google.com>2023-01-13 15:46:41 +0900
committersangyun <sangyun@google.com>2023-01-13 16:44:27 +0900
commitfb1c81881fb21e2a2dd3bc4d8731aab9a6fbcd83 (patch)
treefb8dc530f6723f129096c1ebbe14adde6d3b4c5e /services/QualifiedNetworksService/src/com
parentf5eb20aaf80659b9ad63c5ea9ba76bd5c02db9b8 (diff)
downloadTelephony-fb1c81881fb21e2a2dd3bc4d8731aab9a6fbcd83.tar.gz
[QNS] Modified to validate IwlanAvailability when register listener
Modified to check once more if IwlanAvailabilityInfo has changed when registering the initial iwlan. Bug: 264522416 Test: atest QualifiedNetworksServiceTests Change-Id: I2a1512123f74d48f16f666be7b7e954a2979c822
Diffstat (limited to 'services/QualifiedNetworksService/src/com')
-rw-r--r--services/QualifiedNetworksService/src/com/android/telephony/qns/IwlanNetworkStatusTracker.java15
1 files changed, 12 insertions, 3 deletions
diff --git a/services/QualifiedNetworksService/src/com/android/telephony/qns/IwlanNetworkStatusTracker.java b/services/QualifiedNetworksService/src/com/android/telephony/qns/IwlanNetworkStatusTracker.java
index 1951418..8175a2a 100644
--- a/services/QualifiedNetworksService/src/com/android/telephony/qns/IwlanNetworkStatusTracker.java
+++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/IwlanNetworkStatusTracker.java
@@ -80,7 +80,8 @@ class IwlanNetworkStatusTracker {
// The current active data subscription. May not be the default data subscription.
private int mConnectedDataSub = INVALID_SUB_ID;
@VisibleForTesting SparseArray<IwlanEventHandler> mHandlerSparseArray = new SparseArray<>();
- private SparseArray<IwlanAvailabilityInfo> mLastIwlanAvailabilityInfo = new SparseArray<>();
+ @VisibleForTesting SparseArray<IwlanAvailabilityInfo> mLastIwlanAvailabilityInfo =
+ new SparseArray<>();
private CountryDetector mCountryDetector;
enum LinkProtocolType {
@@ -286,7 +287,15 @@ class IwlanNetworkStatusTracker {
mIwlanNetworkListenersArray.get(slotId).add(r);
IwlanEventHandler handler = mHandlerSparseArray.get(slotId);
if (handler != null) {
- handler.post(() -> notifyIwlanNetworkStatusToRegister(slotId, r));
+ IwlanAvailabilityInfo lastInfo = mLastIwlanAvailabilityInfo.get(slotId);
+ IwlanAvailabilityInfo newInfo = makeIwlanAvailabilityInfo(slotId);
+ if (lastInfo == null || !lastInfo.equals(newInfo)) {
+ // if the LastIwlanAvailabilityInfo is no more valid, notify to all registrants.
+ handler.post(() -> notifyIwlanNetworkStatus());
+ } else {
+ // if the LastIwlanAvailabilityInfo is valid, notify to only this registrant.
+ handler.post(() -> notifyIwlanNetworkStatusToRegister(slotId, r));
+ }
}
}
}
@@ -302,7 +311,7 @@ class IwlanNetworkStatusTracker {
boolean isCrossWfc = false;
boolean isRegistered = false;
boolean isBlockIpv6OnlyWifi = false;
- if (mQnsImsManagers.contains(slotId)) {
+ if (mQnsConfigManagers.contains(slotId)) {
isBlockIpv6OnlyWifi = mQnsConfigManagers.get(slotId).blockIpv6OnlyWifi();
}
LinkProtocolType linkProtocolType = sLinkProtocolType;