summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSewook Seo <sewookseo@google.com>2023-02-24 06:06:22 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-02-24 06:06:22 +0000
commit0dba86df8e139973688ce8cc743f44c855477fe0 (patch)
treec8770ece805c880a8b025b7b7fca6da56becedaa
parent950dbee9fa549e20a2301f7b9894b668fdf89b74 (diff)
parent63fb7ea77cbc98d68591542625023c399d610e10 (diff)
downloadTelephony-0dba86df8e139973688ce8cc743f44c855477fe0.tar.gz
[QNS]keep last transport type of emergency ANE am: 63fb7ea77c
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/modules/Telephony/+/21533648 Change-Id: Ifacfcc1e08426ca4437467b67db7ee078a697597 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--services/QualifiedNetworksService/src/com/android/telephony/qns/AccessNetworkEvaluator.java8
-rw-r--r--services/QualifiedNetworksService/tests/src/com/android/telephony/qns/AccessNetworkEvaluatorTest.java21
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