Merge cherrypicks of [15732630, 15732754, 15732755, 15732756, 15732757, 15733137, 15733138, 15732858, 15733570, 15733571, 15733572, 15733573, 15733574, 15732859, 15733575, 15733576, 15733685, 15733686] into sc-d1-release
Change-Id: Ibd3bdd7403e99f3e5271b9750f4d3352a6c8fb6b
diff --git a/src/java/com/android/internal/telephony/GsmCdmaConnection.java b/src/java/com/android/internal/telephony/GsmCdmaConnection.java
index e9ecb79..b79bdef 100644
--- a/src/java/com/android/internal/telephony/GsmCdmaConnection.java
+++ b/src/java/com/android/internal/telephony/GsmCdmaConnection.java
@@ -42,7 +42,7 @@
import com.android.telephony.Rlog;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
/**
* {@hide}
@@ -141,7 +141,10 @@
mAddress = dc.number;
setEmergencyCallInfo(mOwner);
- mForwardedNumber = new ArrayList<String>(Arrays.asList(dc.forwardedNumber));
+ String forwardedNumber = TextUtils.isEmpty(dc.forwardedNumber) ? null : dc.forwardedNumber;
+ Rlog.i(LOG_TAG, "create, forwardedNumber=" + Rlog.pii(LOG_TAG, forwardedNumber));
+ mForwardedNumber = forwardedNumber == null ? null :
+ new ArrayList<>(Collections.singletonList(dc.forwardedNumber));
mIsIncoming = dc.isMT;
mCreateTime = System.currentTimeMillis();
mCnapName = dc.name;
@@ -710,11 +713,13 @@
mOwner.getPhone().getVoiceCallSessionStats().onAudioCodecChanged(this, dc.audioQuality);
}
- ArrayList<String> forwardedNumber =
- new ArrayList<String>(Arrays.asList(dc.forwardedNumber));
- if (!equalsHandlesNulls(mForwardedNumber, forwardedNumber)) {
- if (Phone.DEBUG_PHONE) log("update: mForwardedNumber, # changed!");
- mForwardedNumber = forwardedNumber;
+ String forwardedNumber = TextUtils.isEmpty(dc.forwardedNumber) ? null : dc.forwardedNumber;
+ Rlog.i(LOG_TAG, "update: forwardedNumber=" + Rlog.pii(LOG_TAG, forwardedNumber));
+ ArrayList<String> forwardedNumbers = forwardedNumber == null ? null :
+ new ArrayList<>(Collections.singletonList(dc.forwardedNumber));
+ if (!equalsHandlesNulls(mForwardedNumber, forwardedNumbers)) {
+ if (Phone.DEBUG_PHONE) log("update: mForwardedNumber, # changed");
+ mForwardedNumber = forwardedNumbers;
changed = true;
}
diff --git a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
index 06b02c7..6ddc6fe 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
@@ -1324,7 +1324,7 @@
/**
* Clear all settings called when entering mInactiveState.
*/
- private void clearSettings() {
+ private synchronized void clearSettings() {
if (DBG) log("clearSettings");
mCreateTime = -1;
@@ -3830,7 +3830,7 @@
}
/** Doesn't print mApnList of ApnContext's which would be recursive */
- public String toStringSimple() {
+ public synchronized String toStringSimple() {
return getName() + ": State=" + getCurrentState().getName()
+ " mApnSetting=" + mApnSetting + " RefCount=" + mApnContexts.size()
+ " mCid=" + mCid + " mCreateTime=" + mCreateTime
diff --git a/tests/telephonytests/src/com/android/internal/telephony/GsmCdmaConnectionTest.java b/tests/telephonytests/src/com/android/internal/telephony/GsmCdmaConnectionTest.java
index a5d0b4d..a078642 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/GsmCdmaConnectionTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/GsmCdmaConnectionTest.java
@@ -278,4 +278,22 @@
assertEquals(new ArrayList<String>(Arrays.asList(forwardedNumber)),
connection.getForwardedNumber());
}
+
+ @Test @SmallTest
+ public void testForwardedNumberEmptyNull() {
+ mDC.state = DriverCall.State.INCOMING;
+ mDC.forwardedNumber = "";
+ connection = new GsmCdmaConnection(mPhone, mDC, mCT, 0);
+ assertNull(connection.getForwardedNumber());
+ mDC.forwardedNumber = null;
+ connection.update(mDC);
+ assertNull(connection.getForwardedNumber());
+
+ mDC.forwardedNumber = null;
+ connection = new GsmCdmaConnection(mPhone, mDC, mCT, 0);
+ assertNull(connection.getForwardedNumber());
+ mDC.forwardedNumber = "";
+ connection.update(mDC);
+ assertNull(connection.getForwardedNumber());
+ }
}