Merge "Reject incoming call for a normal routing emergency call" into 24D1-dev
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 0e865c5..ad75da9 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -879,7 +879,7 @@
<string name="radio_info_dl_kbps" msgid="2382922659525318726">"Largura de banda de descarga (kbps):"</string>
<string name="radio_info_ul_kbps" msgid="2102225400904799036">"Largura de banda de carga (kbps):"</string>
<string name="radio_info_phy_chan_config" msgid="608045501232211303">"Configuración da canle física:"</string>
- <string name="radio_info_cell_info_refresh_rate" msgid="670511448975997340">"Taxa de actualización da información para móbiles:"</string>
+ <string name="radio_info_cell_info_refresh_rate" msgid="670511448975997340">"Frecuencia de actualización da información para móbiles:"</string>
<string name="radio_info_cellinfo_label" msgid="8199062974670377659">"Toda a información de medición para móbiles:"</string>
<string name="radio_info_gprs_service_label" msgid="6819204246355412952">"Servizo de datos:"</string>
<string name="radio_info_roaming_label" msgid="6636932886446857120">"Itinerancia:"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 3c7398e..254a91f 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -524,7 +524,7 @@
<string name="card_title_dialing" msgid="8742182654254431781">"Терилүүдө"</string>
<string name="card_title_redialing" msgid="18130232613559964">"Кайра терүү"</string>
<string name="card_title_conf_call" msgid="901197309274457427">"Конференц-чалуу"</string>
- <string name="card_title_incoming_call" msgid="881424648458792430">"Кирүүчү чалуу"</string>
+ <string name="card_title_incoming_call" msgid="881424648458792430">"Чалып жатат"</string>
<string name="card_title_call_ended" msgid="650223980095026340">"Чалуу аяктады"</string>
<string name="card_title_on_hold" msgid="9028319436626975207">"Күтүлүүдө"</string>
<string name="card_title_hanging_up" msgid="814874106866647871">"Телефон коюлууда"</string>
@@ -770,19 +770,19 @@
<string name="sum_call_barring_enabled" msgid="5184331188926370824">"Күйүк"</string>
<string name="sum_call_barring_disabled" msgid="5699448000600153096">"Өчүк"</string>
<string name="call_barring_baoc" msgid="7400892586336429326">"Чыгуучу чалуулардын баары"</string>
- <string name="call_barring_baoc_enabled" msgid="3131509193386668182">"Чыгуучу чалуулардын баарын бөгөттөө функциясы өчүрүлсүнбү?"</string>
+ <string name="call_barring_baoc_enabled" msgid="3131509193386668182">"Чыгуучу чалуулардын баарын бөгөттөө функциясын өчүрөсүзбү?"</string>
<string name="call_barring_baoc_disabled" msgid="8534224684091141509">"Чыгуучу чалуулардын баары бөгөттөлсүнбү?"</string>
<string name="call_barring_baoic" msgid="8668125428666851665">"Эл аралык чыгуучу чалуу"</string>
- <string name="call_barring_baoic_enabled" msgid="1203758092657630123">"Эл аралык чыгуучу чалууларды бөгөттөө функциясы өчүрүлсүнбү?"</string>
+ <string name="call_barring_baoic_enabled" msgid="1203758092657630123">"Эл аралык чыгуучу чалууларды бөгөттөө функциясын өчүрөсүзбү?"</string>
<string name="call_barring_baoic_disabled" msgid="5656889339002997449">"Эл аралык чыгуучу чалуулар бөгөттөлсүнбү?"</string>
<string name="call_barring_baoicr" msgid="8566167764432343487">"Роумингдеги эл аралык чыгуучу чалуулар"</string>
- <string name="call_barring_baoicr_enabled" msgid="1615324165512798478">"Роумингдеги эларалык чыгуучу чалууларды бөгөттөө функциясы өчүрүлсүнбү?"</string>
+ <string name="call_barring_baoicr_enabled" msgid="1615324165512798478">"Роумингдеги эларалык чыгуучу чалууларды бөгөттөө функциясын өчүрөсүзбү?"</string>
<string name="call_barring_baoicr_disabled" msgid="172010175248142831">"Роумингдеги эларалык чыгуучу чалуулар бөгөттөлсүнбү?"</string>
<string name="call_barring_baic" msgid="7941393541678658566">"Кирүүчү чалуулардын баары"</string>
- <string name="call_barring_baic_enabled" msgid="4357332358020337470">"Кирүүчү чалуулардын баарын бөгөттөө функциясы өчүрүлсүнбү?"</string>
+ <string name="call_barring_baic_enabled" msgid="4357332358020337470">"Кирүүчү чалуулардын баарын бөгөттөө функциясын өчүрөсүзбү?"</string>
<string name="call_barring_baic_disabled" msgid="2355945245938240958">"Кирүүчү чалуулардын баары бөгөттөлсүнбү?"</string>
<string name="call_barring_baicr" msgid="8712249337313034226">"Роумингдеги эл аралык кирүүчү чалуу"</string>
- <string name="call_barring_baicr_enabled" msgid="64774270234828175">"Роумингдеги эл аралык кирүүчү чалууларды бөгөттөө функциясы өчүрүлсүнбү?"</string>
+ <string name="call_barring_baicr_enabled" msgid="64774270234828175">"Роумингдеги эл аралык кирүүчү чалууларды бөгөттөө функциясын өчүрөсүзбү?"</string>
<string name="call_barring_baicr_disabled" msgid="3488129262744027262">"Роумингдеги эл аралык кирүүчү чалуу бөгөттөлсүнбү?"</string>
<string name="call_barring_deactivate_all" msgid="7837931580047157328">"Баары өчүрүлсүн"</string>
<string name="call_barring_deactivate_all_description" msgid="4474119585042121604">"Чалууларга тыюу салуу функциясынын параметрлерин өчүрүү"</string>
diff --git a/src/com/android/phone/CallWaitingSwitchPreference.java b/src/com/android/phone/CallWaitingSwitchPreference.java
index 00407f3..a5bc92e 100644
--- a/src/com/android/phone/CallWaitingSwitchPreference.java
+++ b/src/com/android/phone/CallWaitingSwitchPreference.java
@@ -35,6 +35,8 @@
private int mUpdateStatus = TelephonyManager.CALL_WAITING_STATUS_UNKNOWN_ERROR;
private int mQueryStatus = TelephonyManager.CALL_WAITING_STATUS_UNKNOWN_ERROR;
private boolean mUssdMode = false;
+ private boolean mCwEnabled = false;
+ private boolean mCwClicked = false;
public CallWaitingSwitchPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
@@ -60,6 +62,7 @@
PersistableBundle bundle = configManager.getConfigForSubId(phone.getSubId());
mUssdMode = (bundle != null) ? bundle.getBoolean(
CarrierConfigManager.KEY_USE_CALL_WAITING_USSD_BOOL, false) : false;
+ mCwEnabled = false;
if (!skipReading) {
Log.d(LOG_TAG, "init getCallWaitingStatus");
@@ -101,7 +104,9 @@
@Override
protected void onClick() {
super.onClick();
- mTelephonyManager.setCallWaitingEnabled(isChecked(), mExecutor, this::updateStatusCallBack);
+ mCwEnabled = isChecked();
+ mCwClicked = true;
+ mTelephonyManager.setCallWaitingEnabled(mCwEnabled, mExecutor, this::updateStatusCallBack);
if (mTcpListener != null) {
mIsDuringUpdateProcess = true;
mTcpListener.onStarted(this, false);
@@ -145,6 +150,8 @@
if (mTcpListener != null) {
mTcpListener.onError(CallWaitingSwitchPreference.this, error);
}
+ handleCwFallbackOnError();
+ setChecked(mCwEnabled);
} else if (mQueryStatus == TelephonyManager.CALL_WAITING_STATUS_UNKNOWN_ERROR
|| (mIsDuringUpdateProcess && (
mUpdateStatus != TelephonyManager.CALL_WAITING_STATUS_ENABLED
@@ -153,14 +160,21 @@
if (mTcpListener != null) {
mTcpListener.onError(CallWaitingSwitchPreference.this, RESPONSE_ERROR);
}
+ handleCwFallbackOnError();
+ setChecked(mCwEnabled);
} else {
- if (mQueryStatus == TelephonyManager.CALL_WAITING_STATUS_ENABLED) {
- setChecked(true);
- } else {
- setChecked(false);
- }
+ mCwEnabled = mQueryStatus == TelephonyManager.CALL_WAITING_STATUS_ENABLED;
+ setChecked(mCwEnabled);
}
mIsDuringUpdateProcess = false;
+ mCwClicked = false;
+ }
+ }
+
+ private void handleCwFallbackOnError() {
+ // Recover initial state before onClick.
+ if (mCwClicked) {
+ mCwEnabled = !mCwEnabled;
}
}
}
diff --git a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
index e992de2..3fb6ae8 100644
--- a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
+++ b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
@@ -342,6 +342,15 @@
logi("requestScan-onComplete");
sendMessage(obtainMessage(MSG_NETWORK_SCAN_RESULT, regResult));
});
+ } else if ((mPreferredNetworkScanType
+ == CarrierConfigManager.ImsEmergency.SCAN_TYPE_FULL_SERVICE)
+ && (mScanType == DomainSelectionService.SCAN_TYPE_FULL_SERVICE)) {
+ mWwanSelectorCallback.onRequestEmergencyNetworkScan(
+ mLastPreferredNetworks, mScanType, true, mCancelSignal,
+ (regResult) -> {
+ logi("requestScan-onComplete");
+ sendMessage(obtainMessage(MSG_NETWORK_SCAN_RESULT, regResult));
+ });
} else {
// Continuous scan, do not start a new timer.
requestScan(false);
@@ -367,11 +376,10 @@
if (accessNetworkType != EUTRAN) return accessNetworkType;
int regState = result.getRegState();
- int domain = result.getDomain();
// Emergency is not supported with LTE, but CSFB is possible.
if ((regState == REGISTRATION_STATE_HOME || regState == REGISTRATION_STATE_ROAMING)
- && (domain == NetworkRegistrationInfo.DOMAIN_CS)) {
+ && isCsDomainOnlyAvailable(result)) {
logi("getAccessNetworkType emergency not supported but CSFB is possible");
accessNetworkType = UTRAN;
}
@@ -379,6 +387,15 @@
return accessNetworkType;
}
+ private boolean isCsDomainOnlyAvailable(EmergencyRegistrationResult result) {
+ int domain = result.getDomain();
+ if (domain == NetworkRegistrationInfo.DOMAIN_CS) return true;
+ if ((domain & NetworkRegistrationInfo.DOMAIN_CS) > 0) {
+ return (!result.isEmcBearerSupported() || !result.isVopsSupported());
+ }
+ return false;
+ }
+
@Override
public void reselectDomain(SelectionAttributes attr) {
logi("reselectDomain attr=" + attr);
diff --git a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
index 7c5a82c..4690d6e 100644
--- a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
+++ b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
@@ -1893,6 +1893,32 @@
}
@Test
+ public void testEutranVopsNotSupported() throws Exception {
+ setupForHandleScanResult();
+
+ EmergencyRegistrationResult regResult = getEmergencyRegResult(EUTRAN,
+ REGISTRATION_STATE_HOME,
+ DOMAIN_CS | DOMAIN_PS, false, true, 0, 0, "", "");
+ mResultConsumer.accept(regResult);
+ processAllMessages();
+
+ verifyCsDialed();
+ }
+
+ @Test
+ public void testEutranEmcBearerNotSupported() throws Exception {
+ setupForHandleScanResult();
+
+ EmergencyRegistrationResult regResult = getEmergencyRegResult(EUTRAN,
+ REGISTRATION_STATE_HOME,
+ DOMAIN_CS | DOMAIN_PS, true, false, 0, 0, "", "");
+ mResultConsumer.accept(regResult);
+ processAllMessages();
+
+ verifyCsDialed();
+ }
+
+ @Test
public void testEutranWithPsDomainOnly() throws Exception {
setupForHandleScanResult();
@@ -1945,8 +1971,10 @@
mResultConsumer.accept(regResult);
processAllMessages();
- verify(mWwanSelectorCallback, times(2)).onRequestEmergencyNetworkScan(
+ verify(mWwanSelectorCallback, times(1)).onRequestEmergencyNetworkScan(
any(), eq(DomainSelectionService.SCAN_TYPE_FULL_SERVICE), eq(false), any(), any());
+ verify(mWwanSelectorCallback, times(1)).onRequestEmergencyNetworkScan(
+ any(), eq(DomainSelectionService.SCAN_TYPE_FULL_SERVICE), eq(true), any(), any());
}
@Test