Merge "Move onDataCallDisconnected to DcInactiveState so we can indicate failureCause"
diff --git a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
index 2051919..8af800c 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DataConnection.java
@@ -2423,6 +2423,7 @@
mApnSetting != null ? (long) mApnSetting.getApnTypeBitmask() : 0L,
mApnSetting != null
? mApnSetting.canHandleType(ApnSetting.TYPE_DEFAULT) : false);
+ mDataCallSessionStats.onDataCallDisconnected(mDcFailCause);
if (mHandoverState == HANDOVER_STATE_BEING_TRANSFERRED) {
// This is from source data connection to set itself's state
setHandoverState(HANDOVER_STATE_COMPLETED);
@@ -2916,7 +2917,6 @@
TelephonyMetrics.getInstance().writeRilDataCallEvent(mPhone.getPhoneId(),
mCid, mApnSetting.getApnTypeBitmask(), RilDataCall.State.DISCONNECTED);
- mDataCallSessionStats.onDataCallDisconnected();
mVcnManager.removeVcnNetworkPolicyChangeListener(mVcnPolicyChangeListener);
diff --git a/src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java b/src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java
index 3b4fc69..1d8a1c2 100644
--- a/src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java
+++ b/src/java/com/android/internal/telephony/metrics/DataCallSessionStats.java
@@ -24,6 +24,7 @@
import android.os.SystemClock;
import android.telephony.Annotation.ApnType;
+import android.telephony.Annotation.DataFailureCause;
import android.telephony.Annotation.NetworkType;
import android.telephony.DataFailCause;
import android.telephony.ServiceState;
@@ -69,8 +70,7 @@
// deactivateDataCall hasn't been processed properly, so we save the previous atom here
// and move on to create a new atom.
if (mOngoingDataCall != null) {
- mOngoingDataCall.failureCause = DataFailCause.UNKNOWN;
- onDataCallDisconnected();
+ onDataCallDisconnected(DataFailCause.UNKNOWN);
}
mOngoingDataCall = getDefaultProto(apnTypeBitMask);
mStartTime = getTimeMillis();
@@ -96,7 +96,7 @@
@RilRadioTechnology int radioTechnology,
@ApnType int apnTypeBitmask,
@ProtocolType int protocol,
- int failureCause) {
+ @DataFailureCause int failureCause) {
// there should've been another call to initiate the atom,
// so this method is being called out of order -> no metric will be logged
if (mOngoingDataCall == null) {
@@ -161,14 +161,17 @@
mOngoingDataCall.oosAtEnd = getIsOos();
}
- /** Stores the atom when DataConnection reaches DISCONNECTED state. */
- public synchronized void onDataCallDisconnected() {
+ /** Stores the atom when DataConnection reaches DISCONNECTED state.
+ * @param failureCause failure cause as per android.telephony.DataFailCause
+ **/
+ public synchronized void onDataCallDisconnected(@DataFailureCause int failureCause) {
// there should've been another call to initiate the atom,
// so this method is being called out of order -> no atom will be saved
if (mOngoingDataCall == null) {
loge("onSetupDataCallResponse: no DataCallSession atom has been initiated.");
return;
}
+ mOngoingDataCall.failureCause = failureCause;
mOngoingDataCall.ongoing = false;
mOngoingDataCall.durationMinutes = convertMillisToMinutes(getTimeMillis() - mStartTime);
// store for the data call list event, after DataCall is disconnected and entered into