diff options
author | Jordan Liu <jminjie@google.com> | 2019-07-03 14:37:49 -0700 |
---|---|---|
committer | Jordan Liu <jminjie@google.com> | 2019-07-09 21:40:14 +0000 |
commit | c610e30f55844dccf509eab701e372bba7125550 (patch) | |
tree | a816a715436bc2580d190ac2a212bcc21051e552 | |
parent | df0177f979a4f5ca82f302bc00aab03f417432b8 (diff) | |
download | telephony-c610e30f55844dccf509eab701e372bba7125550.tar.gz |
Remove mCallQualityMetrics[callId] after call
Since the callId may be reused for future calls, we remove the
CallQualityMetrics object and save it in the history (for debugging
purposes)
Bug: 134179966
Test: manual
Change-Id: Ifeac02e0866ffe28c11f9472d9e0ba3f94ed4c2b
-rw-r--r-- | src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java index c2cf4be6e8..9fbef9c583 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 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { 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 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { 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 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { 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 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { pw.println(" mVtDataUsageSnapshot=" + mVtDataUsageSnapshot); pw.println(" mVtDataUsageUidSnapshot=" + mVtDataUsageUidSnapshot); pw.println(" mCallQualityMetrics=" + mCallQualityMetrics); + pw.println(" mCallQualityMetricsHistory=" + mCallQualityMetricsHistory); pw.flush(); pw.println("++++++++++++++++++++++++++++++++"); @@ -4125,10 +4131,10 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { 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(); } } |