Merge "Fixed the set/getAllowedNetworkTypes debug messages"
diff --git a/src/com/android/phone/EmergencyCallbackModeExitDialog.java b/src/com/android/phone/EmergencyCallbackModeExitDialog.java
index fc0e513..6901789 100644
--- a/src/com/android/phone/EmergencyCallbackModeExitDialog.java
+++ b/src/com/android/phone/EmergencyCallbackModeExitDialog.java
@@ -43,6 +43,8 @@
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.TelephonyIntents;
+import com.android.internal.telephony.domainselection.DomainSelectionResolver;
+import com.android.internal.telephony.emergency.EmergencyStateTracker;
import java.util.HashMap;
import java.util.Map;
@@ -244,9 +246,16 @@
.setMessage(text)
.setPositiveButton(R.string.alert_dialog_yes,
new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog,int whichButton) {
+ public void onClick(DialogInterface dialog,
+ int whichButton) {
// User clicked Yes. Exit Emergency Callback Mode.
- mPhone.exitEmergencyCallbackMode();
+ if (DomainSelectionResolver.getInstance()
+ .isDomainSelectionSupported()) {
+ EmergencyStateTracker.getInstance()
+ .exitEmergencyCallbackMode();
+ } else {
+ mPhone.exitEmergencyCallbackMode();
+ }
// Show progress dialog
showDialog(EXIT_ECM_PROGRESS_DIALOG);
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 68956bd..4a89bd6 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -532,7 +532,17 @@
*/
private final TelephonyConnection.TelephonyConnectionListener mEmergencyConnectionListener =
new TelephonyConnection.TelephonyConnectionListener() {
- @Override
+ @Override
+ public void onOriginalConnectionConfigured(TelephonyConnection c) {
+ com.android.internal.telephony.Connection origConn = c.getOriginalConnection();
+ if (origConn == null) return;
+ // Update the domain in the case that it changes,for example during initial
+ // setup or when there was an srvcc or internal redial.
+ mEmergencyStateTracker.onEmergencyCallDomainUpdated(
+ origConn.getPhoneType(), c.getTelecomCallId());
+ }
+
+ @Override
public void onStateChanged(Connection connection, @Connection.ConnectionState int state) {
if (connection != null) {
TelephonyConnection c = (TelephonyConnection) connection;
diff --git a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
index 53a60af..8100e63 100644
--- a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
+++ b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
@@ -274,12 +274,6 @@
onWwanNetworkTypeSelected(mCsNetworkType);
return;
}
- } else if (getImsNetworkTypeConfiguration().isEmpty()
- || (mRequiresVoLteEnabled && !isAdvancedCallingSettingEnabled())) {
- // Emergency call over IMS is not supported.
- mCsNetworkType = UTRAN;
- onWwanNetworkTypeSelected(mCsNetworkType);
- return;
}
if (mLastTransportType == TRANSPORT_TYPE_WLAN) {
@@ -477,14 +471,6 @@
}
private void selectDomainFromInitialState() {
- if (getImsNetworkTypeConfiguration().isEmpty()
- || (mRequiresVoLteEnabled && !isAdvancedCallingSettingEnabled())) {
- // Emergency call over IMS is not supported.
- mCsNetworkType = UTRAN;
- onWwanNetworkTypeSelected(mCsNetworkType);
- return;
- }
-
boolean csInService = isCsInService();
boolean psInService = isPsInService();
@@ -613,6 +599,12 @@
* @return The list of preferred network types.
*/
private @RadioAccessNetworkType List<Integer> getNextPreferredNetworks(boolean csPreferred) {
+ if (mRequiresVoLteEnabled && !isAdvancedCallingSettingEnabled()) {
+ // Emergency call over IMS is not supported.
+ logi("getNextPreferredNetworks VoLte setting is not enabled.");
+ return generatePreferredNetworks(getCsNetworkTypeConfiguration());
+ }
+
List<Integer> preferredNetworks = new ArrayList<>();
List<Integer> domains = getDomainPreference();
@@ -791,6 +783,11 @@
EmergencyRegResult regResult = mSelectionAttributes.getEmergencyRegResult();
logi("getSelectablePsNetworkType regResult=" + regResult);
if (regResult == null) return UNKNOWN;
+ if (mRequiresVoLteEnabled && !isAdvancedCallingSettingEnabled()) {
+ // Emergency call over IMS is not supported.
+ logi("getSelectablePsNetworkType VoLte setting is not enabled.");
+ return UNKNOWN;
+ }
int accessNetwork = regResult.getAccessNetwork();
List<Integer> ratList = getImsNetworkTypeConfiguration();
diff --git a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
index 7a01004..aedfe9e 100644
--- a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
+++ b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
@@ -864,7 +864,7 @@
}
@Test
- public void testVoLteOffEpsImsNotRegisteredSelectCs() throws Exception {
+ public void testVoLteOffEpsImsNotRegisteredScanCsPreferred() throws Exception {
PersistableBundle bundle = getDefaultPersistableBundle();
bundle.putBoolean(KEY_EMERGENCY_REQUIRES_VOLTE_ENABLED_BOOL, true);
when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(bundle);
@@ -885,7 +885,7 @@
bindImsServiceUnregistered();
// Requires VoLTE enabled but VoLTE is'nt enabled.
- verifyCsDialed();
+ verifyScanCsPreferred();
}
@Test