diff options
author | Sewook Seo <sewookseo@google.com> | 2023-02-15 13:37:49 +0000 |
---|---|---|
committer | Sewook Seo <sewookseo@google.com> | 2023-02-22 04:58:34 +0000 |
commit | 63fb7ea77cbc98d68591542625023c399d610e10 (patch) | |
tree | c8770ece805c880a8b025b7b7fca6da56becedaa | |
parent | 950dbee9fa549e20a2301f7b9894b668fdf89b74 (diff) | |
download | Telephony-63fb7ea77cbc98d68591542625023c399d610e10.tar.gz |
[QNS]keep last transport type of emergency ANE
Bug: 266191349
Test: atest QualifiedNetworksServiceTest
Change-Id: Ifa30ba47ed6c13eef7f022aa818691f315285906
(cherry picked from commit 04e2c0c7e8315b21761d6b0e4ab98432192fac4e)
2 files changed, 24 insertions, 5 deletions
diff --git a/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java b/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java index 6ef124d..d708f2d 100644 --- a/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java +++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java @@ -706,12 +706,13 @@ class AccessNetworkEvaluator { boolean needEvaluate = false; switch (info.getEvent()) { case DataConnectionStatusTracker.EVENT_DATA_CONNECTION_DISCONNECTED: - needEvaluate = true; - initLastNotifiedQualifiedNetwork(); if (mNetCapability == NetworkCapabilities.NET_CAPABILITY_EIMS) { // If FWK guided emergency's transport type during data connected state, notify // the transport type when the data connection is disconnected. notifyCachedTransportTypeForEmergency(); + } else { + needEvaluate = true; + initLastNotifiedQualifiedNetwork(); } break; case DataConnectionStatusTracker.EVENT_DATA_CONNECTION_CONNECTED: @@ -722,8 +723,9 @@ class AccessNetworkEvaluator { // If FWK guided emergency's transport type during data connecting state, notify // the transport type when the data connection is failed. notifyCachedTransportTypeForEmergency(); + } else { + needEvaluate = true; } - needEvaluate = true; break; } if (needEvaluate) { diff --git a/services/QualifiedNetworksService/tests/src/com/android/telephony/qns/AccessNetworkEvaluatorTest.java b/services/QualifiedNetworksService/tests/src/com/android/telephony/qns/AccessNetworkEvaluatorTest.java index 51f25c2..42a8bb2 100644 --- a/services/QualifiedNetworksService/tests/src/com/android/telephony/qns/AccessNetworkEvaluatorTest.java +++ b/services/QualifiedNetworksService/tests/src/com/android/telephony/qns/AccessNetworkEvaluatorTest.java @@ -1066,25 +1066,42 @@ public class AccessNetworkEvaluatorTest extends QnsTest { new DataConnectionStatusTracker.DataConnectionChangedInfo( EVENT_DATA_CONNECTION_DISCONNECTED, STATE_INACTIVE, AccessNetworkConstants.TRANSPORT_TYPE_INVALID)); + mLatch = new CountDownLatch(1); + waitForLastHandlerAction(mAne.mHandler); + assertTrue(mLatch.await(100, TimeUnit.MILLISECONDS)); assertTrue( mQualifiedNetworksInfo .getAccessNetworkTypes() .contains(AccessNetworkConstants.AccessNetworkType.IWLAN)); + QnsTelephonyListener.QnsTelephonyInfo info = + mMockQnsTelephonyListener.new QnsTelephonyInfo(); + info.setCellularAvailable(true); + info.setCoverage(false); + info.setDataNetworkType(TelephonyManager.NETWORK_TYPE_LTE); + info.setVoiceNetworkType(TelephonyManager.NETWORK_TYPE_LTE); + info.setDataRegState(ServiceState.STATE_IN_SERVICE); + QnsTelephonyInfoIms infoIms = + mMockQnsTelephonyListener.new QnsTelephonyInfoIms(info, true, true, false, false); + mAne.onQnsTelephonyInfoChanged(infoIms); + waitForLastHandlerAction(mAne.mHandler); when(mDataConnectionStatusTracker.isInactiveState()).thenReturn(false); mQualifiedNetworksInfo = null; mLatch = new CountDownLatch(1); - mAne.onEmergencyPreferredTransportTypeChanged(AccessNetworkConstants.TRANSPORT_TYPE_WLAN); + mAne.onEmergencyPreferredTransportTypeChanged(AccessNetworkConstants.TRANSPORT_TYPE_WWAN); assertFalse(mLatch.await(500, TimeUnit.MILLISECONDS)); assertNull(mQualifiedNetworksInfo); mAne.onDataConnectionStateChanged( new DataConnectionStatusTracker.DataConnectionChangedInfo( EVENT_DATA_CONNECTION_FAILED, STATE_INACTIVE, AccessNetworkConstants.TRANSPORT_TYPE_INVALID)); + mLatch = new CountDownLatch(1); + waitForLastHandlerAction(mAne.mHandler); + assertTrue(mLatch.await(100, TimeUnit.MILLISECONDS)); assertTrue( mQualifiedNetworksInfo .getAccessNetworkTypes() - .contains(AccessNetworkConstants.AccessNetworkType.IWLAN)); + .contains(AccessNetworkConstants.AccessNetworkType.EUTRAN)); } @Test |