Check domain preference when getting selectable network type
Bug: 323836387
Test: atest EmergencyCallDomainSelectorTest
Change-Id: Iee96e9063b2bb4766437a517f6c834e6a86dc05d
diff --git a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
index 4889af8..dfbadfc 100644
--- a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
+++ b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
@@ -962,6 +962,10 @@
* @return The network type of the CS network.
*/
private @RadioAccessNetworkType int getSelectableCsNetworkType() {
+ List<Integer> domains = getDomainPreference();
+ if (domains.indexOf(DOMAIN_CS) == NOT_SUPPORTED) {
+ return UNKNOWN;
+ }
EmergencyRegResult regResult = mSelectionAttributes.getEmergencyRegResult();
logi("getSelectableCsNetworkType regResult=" + regResult);
if (regResult == null) return UNKNOWN;
@@ -1008,6 +1012,10 @@
* @return The network type if the network supports emergency services over PS network.
*/
private @RadioAccessNetworkType int getSelectablePsNetworkType(boolean inService) {
+ List<Integer> domains = getDomainPreference();
+ if (domains.indexOf(DOMAIN_PS_3GPP) == NOT_SUPPORTED) {
+ return UNKNOWN;
+ }
EmergencyRegResult regResult = mSelectionAttributes.getEmergencyRegResult();
logi("getSelectablePsNetworkType regResult=" + regResult);
if (regResult == null) return UNKNOWN;
diff --git a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
index 0625b2d..987beb4 100644
--- a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
+++ b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
@@ -960,6 +960,54 @@
}
@Test
+ public void testNotSupportPsCombinedImsRegisteredSelectCs() throws Exception {
+ PersistableBundle bundle = getDefaultPersistableBundle();
+ int[] domainPreference = new int[] {
+ CarrierConfigManager.ImsEmergency.DOMAIN_CS
+ };
+ bundle.putIntArray(KEY_EMERGENCY_DOMAIN_PREFERENCE_INT_ARRAY, domainPreference);
+ when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(bundle);
+
+ createSelector(SLOT_0_SUB_ID);
+ unsolBarringInfoChanged(false);
+
+ EmergencyRegResult regResult = getEmergencyRegResult(EUTRAN, REGISTRATION_STATE_HOME,
+ NetworkRegistrationInfo.DOMAIN_CS | NetworkRegistrationInfo.DOMAIN_PS,
+ true, true, 0, 0, "", "");
+ SelectionAttributes attr = getSelectionAttributes(SLOT_0, SLOT_0_SUB_ID, regResult);
+ mDomainSelector.selectDomain(attr, mTransportSelectorCallback);
+ processAllMessages();
+
+ bindImsService();
+
+ verifyCsDialed();
+ }
+
+ @Test
+ public void testNotSupportCsCombinedImsNotRegisteredSelectPs() throws Exception {
+ PersistableBundle bundle = getDefaultPersistableBundle();
+ int[] domainPreference = new int[] {
+ CarrierConfigManager.ImsEmergency.DOMAIN_PS_3GPP
+ };
+ bundle.putIntArray(KEY_EMERGENCY_DOMAIN_PREFERENCE_INT_ARRAY, domainPreference);
+ when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(bundle);
+
+ createSelector(SLOT_0_SUB_ID);
+ unsolBarringInfoChanged(false);
+
+ EmergencyRegResult regResult = getEmergencyRegResult(EUTRAN, REGISTRATION_STATE_HOME,
+ NetworkRegistrationInfo.DOMAIN_CS | NetworkRegistrationInfo.DOMAIN_PS,
+ true, true, 0, 0, "", "");
+ SelectionAttributes attr = getSelectionAttributes(SLOT_0, SLOT_0_SUB_ID, regResult);
+ mDomainSelector.selectDomain(attr, mTransportSelectorCallback);
+ processAllMessages();
+
+ bindImsServiceUnregistered();
+
+ verifyPsDialed();
+ }
+
+ @Test
public void testDefaultEpsImsRegisteredBarredScanPsPreferred() throws Exception {
createSelector(SLOT_0_SUB_ID);
unsolBarringInfoChanged(true);