Merge cherrypicks of [8558068, 8558825, 8558826, 8558827, 8557109, 8558018, 8558886, 8558887, 8558888, 8558889, 8558071, 8558072, 8556231] into qt-release
Change-Id: Ie56006124d1d4821e3befc49b474ac684fae993d
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
index c2cf4be..9fbef9c 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
@@ -156,7 +156,8 @@
private TelephonyMetrics mMetrics;
private final Map<String, CallQualityMetrics> mCallQualityMetrics = new ConcurrentHashMap<>();
- private final ConcurrentLinkedQueue<String> mLeastRecentCallId = new ConcurrentLinkedQueue<>();
+ private final ConcurrentLinkedQueue<CallQualityMetrics> mCallQualityMetricsHistory =
+ new ConcurrentLinkedQueue<>();
private boolean mCarrierConfigLoaded = false;
private final MmTelFeatureListener mMmTelFeatureListener = new MmTelFeatureListener();
@@ -2354,6 +2355,11 @@
mMetrics.writeOnImsCallTerminated(mPhone.getPhoneId(), imsCall.getCallSession(),
reasonInfo, mCallQualityMetrics.get(callId), conn.getEmergencyNumberInfo(),
getNetworkCountryIso());
+ // Remove info for the callId from the current calls and add it to the history
+ CallQualityMetrics lastCallMetrics = mCallQualityMetrics.remove(callId);
+ if (lastCallMetrics != null) {
+ mCallQualityMetricsHistory.add(lastCallMetrics);
+ }
pruneCallQualityMetricsHistory();
mPhone.notifyImsReason(reasonInfo);
@@ -2987,7 +2993,6 @@
CallQualityMetrics cqm = mCallQualityMetrics.get(callId);
if (cqm == null) {
cqm = new CallQualityMetrics(mPhone);
- mLeastRecentCallId.add(callId);
}
cqm.saveCallQuality(callQuality);
mCallQualityMetrics.put(callId, cqm);
@@ -3549,6 +3554,7 @@
pw.println(" mVtDataUsageSnapshot=" + mVtDataUsageSnapshot);
pw.println(" mVtDataUsageUidSnapshot=" + mVtDataUsageUidSnapshot);
pw.println(" mCallQualityMetrics=" + mCallQualityMetrics);
+ pw.println(" mCallQualityMetricsHistory=" + mCallQualityMetricsHistory);
pw.flush();
pw.println("++++++++++++++++++++++++++++++++");
@@ -4125,10 +4131,10 @@
mIsDataEnabled = isDataEnabled;
}
- // Removes old call quality metrics if mCallQualityMetrics exceeds its max size
+ // Removes old call quality metrics if mCallQualityMetricsHistory exceeds its max size
private void pruneCallQualityMetricsHistory() {
- if (mCallQualityMetrics.size() > MAX_CALL_QUALITY_HISTORY) {
- mCallQualityMetrics.remove(mLeastRecentCallId.poll());
+ if (mCallQualityMetricsHistory.size() > MAX_CALL_QUALITY_HISTORY) {
+ mCallQualityMetricsHistory.poll();
}
}