diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-08-12 01:09:24 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-08-12 01:09:24 +0000 |
commit | 7be6599cbdfecbe0c01438478492deb015846fa8 (patch) | |
tree | 776f6dcecff0e85f7ff5d5705d01b9fa803b4462 | |
parent | aeb7b474779b6577bd850c8743401401111123e2 (diff) | |
parent | 4075211d476e73bd67f6029a2c33b2ceb50e865e (diff) | |
download | Telephony-android12-s3-release.tar.gz |
Snap for 7633965 from 4075211d476e73bd67f6029a2c33b2ceb50e865e to sc-releaseandroid-vts-12.0_r9android-vts-12.0_r8android-vts-12.0_r7android-vts-12.0_r6android-vts-12.0_r5android-vts-12.0_r4android-vts-12.0_r3android-vts-12.0_r2android-vts-12.0_r12android-vts-12.0_r11android-vts-12.0_r10android-vts-12.0_r1android-platform-12.0.0_r1android-cts-12.0_r9android-cts-12.0_r8android-cts-12.0_r7android-cts-12.0_r6android-cts-12.0_r5android-cts-12.0_r4android-cts-12.0_r3android-cts-12.0_r2android-cts-12.0_r12android-cts-12.0_r11android-cts-12.0_r10android-cts-12.0_r1android-12.0.0_r9android-12.0.0_r8android-12.0.0_r34android-12.0.0_r33android-12.0.0_r31android-12.0.0_r30android-12.0.0_r3android-12.0.0_r25android-12.0.0_r2android-12.0.0_r11android-12.0.0_r10android-12.0.0_r1android12-tests-releaseandroid12-s5-releaseandroid12-s4-releaseandroid12-s3-releaseandroid12-s2-releaseandroid12-s1-releaseandroid12-release
Change-Id: I2156a291fa55d97f6b64587255eec8275fd8d6d8
-rw-r--r-- | res/values-te/strings.xml | 14 | ||||
-rwxr-xr-x | src/com/android/services/telephony/TelephonyConnection.java | 75 | ||||
-rw-r--r-- | tests/src/com/android/services/telephony/TelephonyConnectionTest.java | 21 |
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); |