summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-08-12 01:09:24 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-08-12 01:09:24 +0000
commit7be6599cbdfecbe0c01438478492deb015846fa8 (patch)
tree776f6dcecff0e85f7ff5d5705d01b9fa803b4462
parentaeb7b474779b6577bd850c8743401401111123e2 (diff)
parent4075211d476e73bd67f6029a2c33b2ceb50e865e (diff)
downloadTelephony-android12-s3-release.tar.gz
Change-Id: I2156a291fa55d97f6b64587255eec8275fd8d6d8
-rw-r--r--res/values-te/strings.xml14
-rwxr-xr-xsrc/com/android/services/telephony/TelephonyConnection.java75
-rw-r--r--tests/src/com/android/services/telephony/TelephonyConnectionTest.java21
3 files changed, 77 insertions, 33 deletions
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index a1b32a0e0..395f0f11a 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -339,7 +339,7 @@
<string name="maintenance_enable" msgid="2646784483222342290">"నిర్వహణ ప్రారంభించబడింది"</string>
<string name="maintenance_disable" msgid="2121032601497725602">"నిర్వహణ నిలిపివేయబడింది"</string>
<string name="general_news_settings" msgid="2670499575962080411">"సాధారణ వార్తలు"</string>
- <string name="bf_news_settings" msgid="8571709425370794221">"వ్యాపార మరియు ఆర్థిక వార్తలు"</string>
+ <string name="bf_news_settings" msgid="8571709425370794221">"బిజినెస్ మరియు ఆర్థిక వార్తలు"</string>
<string name="sports_news_settings" msgid="2684364556989168438">"క్రీడల వార్తలు"</string>
<string name="entertainment_news_settings" msgid="4228527702346305543">"వినోద సంబంధ వార్తలు"</string>
<string name="enable_disable_local" msgid="7654175079979415572">"స్థానికం"</string>
@@ -378,9 +378,9 @@
<string name="enable_disable_local_weather" msgid="7734933941872511543">"స్థానిక వాతావరణం"</string>
<string name="local_weather_enable" msgid="2143929735295254729">"స్థానిక వాతావరణం ప్రారంభించబడింది"</string>
<string name="local_weather_disable" msgid="4209936355998349647">"స్థానిక వాతావరణం నిలిపివేయబడింది"</string>
- <string name="enable_disable_atr" msgid="821714821057385390">"ప్రాంతపు ట్రాఫిక్ నివేదికలు"</string>
- <string name="atr_enable" msgid="1799097759998768186">"ప్రాంతపు ట్రాఫిక్ నివేదికలు ప్రారంభించబడ్డాయి"</string>
- <string name="atr_disable" msgid="6456758173289065766">"ప్రాంతపు ట్రాఫిక్ నివేదికలు నిలిపివేయబడ్డాయి"</string>
+ <string name="enable_disable_atr" msgid="821714821057385390">"ప్రాంతపు ట్రాఫిక్ రిపోర్ట్‌లు"</string>
+ <string name="atr_enable" msgid="1799097759998768186">"ప్రాంతపు ట్రాఫిక్ రిపోర్ట్‌లు ప్రారంభించబడ్డాయి"</string>
+ <string name="atr_disable" msgid="6456758173289065766">"ప్రాంతపు ట్రాఫిక్ రిపోర్ట్‌లు నిలిపివేయబడ్డాయి"</string>
<string name="enable_disable_lafs" msgid="7448060358300805661">"స్థానిక విమానాశ్రయ విమాన షెడ్యూల్‌లు"</string>
<string name="lafs_enable" msgid="3125783406052655690">"స్థానిక విమానాశ్రయ విమాన షెడ్యూల్‌లు ప్రారంభించబడ్డాయి"</string>
<string name="lafs_disable" msgid="7326815066813851447">"స్థానిక విమానాశ్రయ విమాన షెడ్యూల్‌లు నిలిపివేయబడ్డాయి"</string>
@@ -393,9 +393,9 @@
<string name="enable_disable_retail_directory" msgid="9095153426757081972">"రీటైల్ డైరెక్టరీ"</string>
<string name="retail_directory_enable" msgid="2532176568755452171">"రీటైల్ డైరెక్టరీ ప్రారంభించబడింది"</string>
<string name="retail_directory_disable" msgid="7242451210736299193">"రీటైల్ డైరెక్టరీ నిలిపివేయబడింది"</string>
- <string name="enable_disable_advertisements" msgid="8704125663718797151">"వ్యాపార ప్రకటనలు"</string>
- <string name="advertisements_enable" msgid="8651409664217899145">"వ్యాపార ప్రకటనలు ప్రారంభించబడ్డాయి"</string>
- <string name="advertisements_disable" msgid="2999957360508271492">"వ్యాపార ప్రకటనలు నిలిపివేయబడ్డాయి"</string>
+ <string name="enable_disable_advertisements" msgid="8704125663718797151">"బిజినెస్ ప్రకటనలు"</string>
+ <string name="advertisements_enable" msgid="8651409664217899145">"బిజినెస్ ప్రకటనలు ప్రారంభించబడ్డాయి"</string>
+ <string name="advertisements_disable" msgid="2999957360508271492">"బిజినెస్ ప్రకటనలు నిలిపివేయబడ్డాయి"</string>
<string name="enable_disable_stock_quotes" msgid="631498357725951825">"స్టాక్ కోట్‌లు"</string>
<string name="stock_quotes_enable" msgid="5104318195579771947">"స్టాక్ కోట్‌లు ప్రారంభించబడ్డాయి"</string>
<string name="stock_quotes_disable" msgid="3126423481704498278">"స్టాక్ కోట్‌లు నిలిపివేయబడ్డాయి"</string>
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index abc961361..53e923ef7 100755
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -165,32 +165,7 @@ abstract class TelephonyConnection extends Connection implements Holdable, Commu
AsyncResult ar = (AsyncResult) msg.obj;
com.android.internal.telephony.Connection connection =
(com.android.internal.telephony.Connection) ar.result;
- if (connection == null) {
- setDisconnected(DisconnectCauseUtil
- .toTelecomDisconnectCause(DisconnectCause.OUT_OF_NETWORK,
- "handover failure, no connection"));
- close();
- break;
- }
- if (mOriginalConnection != null) {
- if (connection != null &&
- ((connection.getAddress() != null &&
- mOriginalConnection.getAddress() != null &&
- mOriginalConnection.getAddress().equals(connection.getAddress())) ||
- connection.getState() == mOriginalConnection.getStateBeforeHandover())) {
- Log.i(TelephonyConnection.this, "Setting original connection after"
- + " handover or redial, current original connection="
- + mOriginalConnection.toString()
- + ", new original connection="
- + connection.toString());
- setOriginalConnection(connection);
- mWasImsConnection = false;
- }
- } else {
- Log.w(TelephonyConnection.this,
- what + ": mOriginalConnection==null --"
- + " invalid state (not cleaned up)");
- }
+ onOriginalConnectionRedialed(connection);
break;
case MSG_RINGBACK_TONE:
Log.v(TelephonyConnection.this, "MSG_RINGBACK_TONE");
@@ -360,6 +335,54 @@ abstract class TelephonyConnection extends Connection implements Holdable, Commu
private final Messenger mHandlerMessenger = new Messenger(mHandler);
/**
+ * The underlying telephony Connection has been redialed on a different domain (CS or IMS).
+ * Track the new telephony Connection and set back up appropriate callbacks.
+ * @param connection The new telephony Connection associated with this TelephonyConnection.
+ */
+ @VisibleForTesting
+ public void onOriginalConnectionRedialed(
+ com.android.internal.telephony.Connection connection) {
+ if (connection == null) {
+ setDisconnected(DisconnectCauseUtil
+ .toTelecomDisconnectCause(DisconnectCause.OUT_OF_NETWORK,
+ "handover failure, no connection"));
+ close();
+ return;
+ }
+ if (mOriginalConnection != null) {
+ if ((connection.getAddress() != null
+ && mOriginalConnection.getAddress() != null
+ && mOriginalConnection.getAddress().equals(connection.getAddress()))
+ || connection.getState() == mOriginalConnection.getStateBeforeHandover()) {
+ Log.i(TelephonyConnection.this, "Setting original connection after"
+ + " handover or redial, current original connection="
+ + mOriginalConnection.toString()
+ + ", new original connection="
+ + connection.toString());
+ setOriginalConnection(connection);
+ mWasImsConnection = false;
+ if (mHangupDisconnectCause != DisconnectCause.NOT_VALID) {
+ // A hangup request was initiated during the handover process, so
+ // go ahead and initiate the hangup on the new connection.
+ try {
+ Log.i(TelephonyConnection.this, "user has tried to hangup "
+ + "during handover, retrying hangup.");
+ connection.hangup();
+ } catch (CallStateException e) {
+ // Call state exception may be thrown if the connection was
+ // already disconnected, so just log this case.
+ Log.w(TelephonyConnection.this, "hangup during "
+ + "handover or redial resulted in an exception:" + e);
+ }
+ }
+ }
+ } else {
+ Log.w(TelephonyConnection.this, " mOriginalConnection==null --"
+ + " invalid state (not cleaned up)");
+ }
+ }
+
+ /**
* Handles {@link SuppServiceNotification}s pertinent to Telephony.
* @param ssn the notification.
*/
diff --git a/tests/src/com/android/services/telephony/TelephonyConnectionTest.java b/tests/src/com/android/services/telephony/TelephonyConnectionTest.java
index c55dee760..388fd298c 100644
--- a/tests/src/com/android/services/telephony/TelephonyConnectionTest.java
+++ b/tests/src/com/android/services/telephony/TelephonyConnectionTest.java
@@ -8,11 +8,15 @@ import static junit.framework.Assert.fail;
import static junit.framework.TestCase.assertFalse;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.os.Bundle;
import android.telecom.Connection;
import android.telephony.CarrierConfigManager;
+import android.telephony.DisconnectCause;
import androidx.test.runner.AndroidJUnit4;
@@ -132,6 +136,23 @@ public class TelephonyConnectionTest {
}
@Test
+ public void testHangupAfterRedial() throws Exception {
+ TestTelephonyConnection c = new TestTelephonyConnection();
+ c.hangup(DisconnectCause.LOCAL);
+ verify(c.mMockRadioConnection).hangup();
+
+ // hangup failed because redial was in progress... The new original connection has been sent
+ // to the TelephonyConnection
+ com.android.internal.telephony.Connection newMockRadioConnection =
+ mock(com.android.internal.telephony.Connection.class);
+ doReturn("5551212").when(c.mMockRadioConnection).getAddress();
+ doReturn("5551212").when(newMockRadioConnection).getAddress();
+ doReturn(Call.State.DIALING).when(newMockRadioConnection).getState();
+ c.onOriginalConnectionRedialed(newMockRadioConnection);
+ verify(newMockRadioConnection).hangup();
+ }
+
+ @Test
public void testSetupDtmfOnly() {
TestTelephonyConnection c = new TestTelephonyConnection();
c.setIsImsConnection(true);