Fix VoLTE to CS redialing of emergency calls
Issue: Dialing is requested to ImsPhone instead of GsmCdmaPhone.
So redialing is routed to IMS service.
Bug: 266551230
Test: atest TelephonyConnectionServiceTest
Change-Id: I0f32da08c60cbb06c7440b2d4b0aceffe631e382
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 4a89bd6..1754ea5 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -2282,7 +2282,7 @@
if (reasonInfo != null
&& reasonInfo.getCode() == ImsReasonInfo.CODE_SIP_ALTERNATE_EMERGENCY_CALL) {
- onEmergencyRedial(c, c.getPhone());
+ onEmergencyRedial(c, c.getPhone().getDefaultPhone());
return true;
}
@@ -2317,7 +2317,7 @@
if (future != null) {
future.thenAcceptAsync((result) -> {
Log.d(this, "reselectDomain-complete");
- onEmergencyRedialOnDomain(c, c.getPhone(), result);
+ onEmergencyRedialOnDomain(c, c.getPhone().getDefaultPhone(), result);
}, mDomainSelectionMainExecutor);
return true;
}
diff --git a/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java b/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
index a1d7405..e8365b0 100644
--- a/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
+++ b/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
@@ -1527,9 +1527,10 @@
int selectedDomain = DOMAIN_CS;
setupForDialForDomainSelection(mPhone0, selectedDomain, true);
+ doReturn(mPhone0).when(mImsPhone).getDefaultPhone();
TestTelephonyConnection c = setupForReDialForDomainSelection(
- mPhone0, selectedDomain, preciseDisconnectCause, disconnectCause, false);
+ mImsPhone, selectedDomain, preciseDisconnectCause, disconnectCause, false);
c.setEmergencyServiceCategory(eccCategory);
c.setAddress(TEST_ADDRESS, TelecomManager.PRESENTATION_ALLOWED);
@@ -1566,9 +1567,10 @@
int selectedDomain = DOMAIN_PS;
setupForDialForDomainSelection(mPhone0, selectedDomain, true);
+ doReturn(mPhone0).when(mImsPhone).getDefaultPhone();
TestTelephonyConnection c = setupForReDialForDomainSelection(
- mPhone0, selectedDomain, preciseDisconnectCause, disconnectCause, false);
+ mImsPhone, selectedDomain, preciseDisconnectCause, disconnectCause, false);
c.setEmergencyServiceCategory(eccCategory);
c.setAddress(TEST_ADDRESS, TelecomManager.PRESENTATION_ALLOWED);