Loading src/java/com/android/internal/telephony/domainselection/EmergencyCallDomainSelectionConnection.java +16 −1 Original line number Diff line number Diff line Loading @@ -37,10 +37,12 @@ import android.telephony.Annotation.NetCapability; import android.telephony.DomainSelectionService; import android.telephony.EmergencyRegistrationResult; import android.telephony.NetworkRegistrationInfo; import android.telephony.PreciseDisconnectCause; import android.telephony.data.ApnSetting; import android.telephony.ims.ImsReasonInfo; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.CallFailCause; import com.android.internal.telephony.Phone; import com.android.internal.telephony.data.AccessNetworksManager; import com.android.internal.telephony.data.AccessNetworksManager.QualifiedNetworks; Loading Loading @@ -215,6 +217,19 @@ public class EmergencyCallDomainSelectionConnection extends DomainSelectionConne @NonNull String callId, @NonNull String number, boolean isTest, int callFailCause, @Nullable ImsReasonInfo imsReasonInfo, @Nullable EmergencyRegistrationResult emergencyRegResult) { int preciseDisconnectCause = callFailCause; switch (callFailCause) { case CallFailCause.IMS_EMERGENCY_TEMP_FAILURE: preciseDisconnectCause = PreciseDisconnectCause.EMERGENCY_TEMP_FAILURE; break; case CallFailCause.IMS_EMERGENCY_PERM_FAILURE: preciseDisconnectCause = PreciseDisconnectCause.EMERGENCY_PERM_FAILURE; break; default: break; } DomainSelectionService.SelectionAttributes.Builder builder = new DomainSelectionService.SelectionAttributes.Builder( slotId, subId, SELECTOR_TYPE_CALLING) Loading @@ -223,7 +238,7 @@ public class EmergencyCallDomainSelectionConnection extends DomainSelectionConne .setExitedFromAirplaneMode(exited) .setCallId(callId) .setAddress(Uri.fromParts(PhoneAccount.SCHEME_TEL, number, null)) .setCsDisconnectCause(callFailCause); .setCsDisconnectCause(preciseDisconnectCause); if (imsReasonInfo != null) builder.setPsDisconnectCause(imsReasonInfo); if (emergencyRegResult != null) builder.setEmergencyRegistrationResult(emergencyRegResult); Loading tests/telephonytests/src/com/android/internal/telephony/domainselection/EmergencyCallDomainSelectionConnectionTest.java +35 −0 Original line number Diff line number Diff line Loading @@ -44,12 +44,14 @@ import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.DomainSelectionService; import android.telephony.EmergencyRegistrationResult; import android.telephony.NetworkRegistrationInfo; import android.telephony.PreciseDisconnectCause; import android.telephony.data.ApnSetting; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import androidx.test.filters.SmallTest; import com.android.internal.telephony.CallFailCause; import com.android.internal.telephony.ITransportSelectorCallback; import com.android.internal.telephony.ITransportSelectorResultCallback; import com.android.internal.telephony.IWwanSelectorCallback; Loading Loading @@ -258,6 +260,39 @@ public class EmergencyCallDomainSelectionConnectionTest extends TelephonyTest { verify(mAnm).unregisterForQualifiedNetworksChanged(any()); } @Test @SmallTest public void testGetSelectionAttributesEmergencyTempOrPermFailure() { DomainSelectionService.SelectionAttributes attr = EmergencyCallDomainSelectionConnection.getSelectionAttributes( mPhone.getPhoneId(), mPhone.getSubId(), false, TELECOM_CALL_ID1, "911", false, CallFailCause.IMS_EMERGENCY_TEMP_FAILURE, null, null); assertEquals(PreciseDisconnectCause.EMERGENCY_TEMP_FAILURE, attr.getCsDisconnectCause()); attr = EmergencyCallDomainSelectionConnection.getSelectionAttributes( mPhone.getPhoneId(), mPhone.getSubId(), false, TELECOM_CALL_ID1, "911", false, CallFailCause.IMS_EMERGENCY_PERM_FAILURE, null, null); assertEquals(PreciseDisconnectCause.EMERGENCY_PERM_FAILURE, attr.getCsDisconnectCause()); attr = EmergencyCallDomainSelectionConnection.getSelectionAttributes( mPhone.getPhoneId(), mPhone.getSubId(), false, TELECOM_CALL_ID1, "911", false, CallFailCause.EMERGENCY_TEMP_FAILURE, null, null); assertEquals(PreciseDisconnectCause.EMERGENCY_TEMP_FAILURE, attr.getCsDisconnectCause()); attr = EmergencyCallDomainSelectionConnection.getSelectionAttributes( mPhone.getPhoneId(), mPhone.getSubId(), false, TELECOM_CALL_ID1, "911", false, CallFailCause.EMERGENCY_PERM_FAILURE, null, null); assertEquals(PreciseDisconnectCause.EMERGENCY_PERM_FAILURE, attr.getCsDisconnectCause()); } private IWwanSelectorCallback onWwanSelected(ITransportSelectorCallback transportCallback) throws Exception { ITransportSelectorResultCallback cb = Mockito.mock(ITransportSelectorResultCallback.class); Loading Loading
src/java/com/android/internal/telephony/domainselection/EmergencyCallDomainSelectionConnection.java +16 −1 Original line number Diff line number Diff line Loading @@ -37,10 +37,12 @@ import android.telephony.Annotation.NetCapability; import android.telephony.DomainSelectionService; import android.telephony.EmergencyRegistrationResult; import android.telephony.NetworkRegistrationInfo; import android.telephony.PreciseDisconnectCause; import android.telephony.data.ApnSetting; import android.telephony.ims.ImsReasonInfo; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.CallFailCause; import com.android.internal.telephony.Phone; import com.android.internal.telephony.data.AccessNetworksManager; import com.android.internal.telephony.data.AccessNetworksManager.QualifiedNetworks; Loading Loading @@ -215,6 +217,19 @@ public class EmergencyCallDomainSelectionConnection extends DomainSelectionConne @NonNull String callId, @NonNull String number, boolean isTest, int callFailCause, @Nullable ImsReasonInfo imsReasonInfo, @Nullable EmergencyRegistrationResult emergencyRegResult) { int preciseDisconnectCause = callFailCause; switch (callFailCause) { case CallFailCause.IMS_EMERGENCY_TEMP_FAILURE: preciseDisconnectCause = PreciseDisconnectCause.EMERGENCY_TEMP_FAILURE; break; case CallFailCause.IMS_EMERGENCY_PERM_FAILURE: preciseDisconnectCause = PreciseDisconnectCause.EMERGENCY_PERM_FAILURE; break; default: break; } DomainSelectionService.SelectionAttributes.Builder builder = new DomainSelectionService.SelectionAttributes.Builder( slotId, subId, SELECTOR_TYPE_CALLING) Loading @@ -223,7 +238,7 @@ public class EmergencyCallDomainSelectionConnection extends DomainSelectionConne .setExitedFromAirplaneMode(exited) .setCallId(callId) .setAddress(Uri.fromParts(PhoneAccount.SCHEME_TEL, number, null)) .setCsDisconnectCause(callFailCause); .setCsDisconnectCause(preciseDisconnectCause); if (imsReasonInfo != null) builder.setPsDisconnectCause(imsReasonInfo); if (emergencyRegResult != null) builder.setEmergencyRegistrationResult(emergencyRegResult); Loading
tests/telephonytests/src/com/android/internal/telephony/domainselection/EmergencyCallDomainSelectionConnectionTest.java +35 −0 Original line number Diff line number Diff line Loading @@ -44,12 +44,14 @@ import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.DomainSelectionService; import android.telephony.EmergencyRegistrationResult; import android.telephony.NetworkRegistrationInfo; import android.telephony.PreciseDisconnectCause; import android.telephony.data.ApnSetting; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import androidx.test.filters.SmallTest; import com.android.internal.telephony.CallFailCause; import com.android.internal.telephony.ITransportSelectorCallback; import com.android.internal.telephony.ITransportSelectorResultCallback; import com.android.internal.telephony.IWwanSelectorCallback; Loading Loading @@ -258,6 +260,39 @@ public class EmergencyCallDomainSelectionConnectionTest extends TelephonyTest { verify(mAnm).unregisterForQualifiedNetworksChanged(any()); } @Test @SmallTest public void testGetSelectionAttributesEmergencyTempOrPermFailure() { DomainSelectionService.SelectionAttributes attr = EmergencyCallDomainSelectionConnection.getSelectionAttributes( mPhone.getPhoneId(), mPhone.getSubId(), false, TELECOM_CALL_ID1, "911", false, CallFailCause.IMS_EMERGENCY_TEMP_FAILURE, null, null); assertEquals(PreciseDisconnectCause.EMERGENCY_TEMP_FAILURE, attr.getCsDisconnectCause()); attr = EmergencyCallDomainSelectionConnection.getSelectionAttributes( mPhone.getPhoneId(), mPhone.getSubId(), false, TELECOM_CALL_ID1, "911", false, CallFailCause.IMS_EMERGENCY_PERM_FAILURE, null, null); assertEquals(PreciseDisconnectCause.EMERGENCY_PERM_FAILURE, attr.getCsDisconnectCause()); attr = EmergencyCallDomainSelectionConnection.getSelectionAttributes( mPhone.getPhoneId(), mPhone.getSubId(), false, TELECOM_CALL_ID1, "911", false, CallFailCause.EMERGENCY_TEMP_FAILURE, null, null); assertEquals(PreciseDisconnectCause.EMERGENCY_TEMP_FAILURE, attr.getCsDisconnectCause()); attr = EmergencyCallDomainSelectionConnection.getSelectionAttributes( mPhone.getPhoneId(), mPhone.getSubId(), false, TELECOM_CALL_ID1, "911", false, CallFailCause.EMERGENCY_PERM_FAILURE, null, null); assertEquals(PreciseDisconnectCause.EMERGENCY_PERM_FAILURE, attr.getCsDisconnectCause()); } private IWwanSelectorCallback onWwanSelected(ITransportSelectorCallback transportCallback) throws Exception { ITransportSelectorResultCallback cb = Mockito.mock(ITransportSelectorResultCallback.class); Loading