Remap SIP_REQUEST_CANCELLED DisconnectCause to NORMAL.
This CL prevents dialer from displaying the incorrect pop-up after a call is terminated due to CODE_SIP_REQUEST_CANCELLED. The invalid pop-up "Call terminated due to a problem with the Network" should not be shown in this case as this should be considered NORMAL call clearing so this CL remaps that disconnect code to DisconnectCause.NORMAL.
Flag: com.android.internal.telephony.flags.remap_disconnect_cause_sip_request_cancelled
Test: ImsPhoneCallTrackerTest#testSipRequestCancelled
Fixes: 351258918
Change-Id: Id15c7ac3969b001daba79af5726107597614acf1
diff --git a/flags/calling.aconfig b/flags/calling.aconfig
index 2809f79..3bce279 100644
--- a/flags/calling.aconfig
+++ b/flags/calling.aconfig
@@ -40,3 +40,14 @@
purpose: PURPOSE_BUGFIX
}
}
+
+# OWNER=grantmenke TARGET=25Q1
+flag {
+ name: "remap_disconnect_cause_sip_request_cancelled"
+ namespace: "telephony"
+ description: "Fix dialer UI bug by remapping disconnect CODE_SIP_REQUEST_CANCELLED to DisconnectCause.NORMAL"
+ bug: "351258918"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
index b2966b6..1b2aee0 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
@@ -3268,6 +3268,12 @@
int cause = DisconnectCause.ERROR_UNSPECIFIED;
int code = maybeRemapReasonCode(reasonInfo);
+
+ if (mFeatureFlags.remapDisconnectCauseSipRequestCancelled() &&
+ code == ImsReasonInfo.CODE_SIP_REQUEST_CANCELLED) {
+ return DisconnectCause.NORMAL;
+ }
+
switch (code) {
case ImsReasonInfo.CODE_SIP_ALTERNATE_EMERGENCY_CALL:
return DisconnectCause.IMS_SIP_ALTERNATE_EMERGENCY_CALL;
diff --git a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java
index a525efa..a74a408 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/imsphone/ImsPhoneCallTrackerTest.java
@@ -1477,6 +1477,17 @@
@Test
@SmallTest
+ public void testSipRequestCancelled() {
+ doReturn(true).when(mFeatureFlags).remapDisconnectCauseSipRequestCancelled();
+
+ assertEquals(DisconnectCause.NORMAL,
+ mCTUT.getDisconnectCauseFromReasonInfo(
+ new ImsReasonInfo(ImsReasonInfo.CODE_SIP_REQUEST_CANCELLED, 0),
+ Call.State.DIALING));
+ }
+
+ @Test
+ @SmallTest
public void testLowBatteryDisconnectDialing() {
assertEquals(DisconnectCause.DIAL_LOW_BATTERY, mCTUT.getDisconnectCauseFromReasonInfo(
new ImsReasonInfo(ImsReasonInfo.CODE_LOCAL_LOW_BATTERY, 0), Call.State.DIALING));