diff options
author | sangyun <sangyun@google.com> | 2023-01-13 15:46:41 +0900 |
---|---|---|
committer | sangyun <sangyun@google.com> | 2023-01-13 16:44:27 +0900 |
commit | fb1c81881fb21e2a2dd3bc4d8731aab9a6fbcd83 (patch) | |
tree | fb8dc530f6723f129096c1ebbe14adde6d3b4c5e /services/QualifiedNetworksService/src/com | |
parent | f5eb20aaf80659b9ad63c5ea9ba76bd5c02db9b8 (diff) | |
download | Telephony-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.java | 15 |
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; |