Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5a85e80 authored by Amit Mahajan's avatar Amit Mahajan
Browse files

Use the correct apn bitmask for metrics.

Test: atest DataConnectionTest
Test: atest DcTrackerTest
Bug: 186262731
Change-Id: Ie22f08031e761eff6f11e2104ca42cf2403c98d5
parent 90e33b28
Loading
Loading
Loading
Loading
+25 −25
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ import com.android.internal.telephony.dataconnection.DcTracker.RequestNetworkTyp
import com.android.internal.telephony.metrics.DataCallSessionStats;
import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.telephony.nano.TelephonyProto.RilDataCall;
import com.android.internal.telephony.uicc.IccUtils;
import com.android.internal.util.AsyncChannel;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Protocol;
@@ -846,6 +847,10 @@ public class DataConnection extends StateMachine {
        bb.putLong(OS_ID.getLeastSignificantBits());
        bb.put((byte) osAppId.length);
        bb.put(osAppId);
        if (VDBG) {
            Rlog.d("DataConnection", "getEnterpriseOsAppId: "
                    + IccUtils.bytesToHexString(bb.array()));
        }
        return bb.array();
    }

@@ -2400,6 +2405,16 @@ public class DataConnection extends StateMachine {

    private DcDefaultState mDefaultState = new DcDefaultState();

    private int getApnTypeBitmask() {
        return isEnterpriseUse() ? ApnSetting.TYPE_ENTERPRISE :
                mApnSetting != null ? mApnSetting.getApnTypeBitmask() : 0;
    }

    private boolean canHandleDefault() {
        return !isEnterpriseUse() && mApnSetting != null
                ? mApnSetting.canHandleType(ApnSetting.TYPE_DEFAULT) : false;
    }

    /**
     * The state machine is inactive and expects a EVENT_CONNECT.
     */
@@ -2435,10 +2450,7 @@ public class DataConnection extends StateMachine {
            if (DBG) log("DcInactiveState: enter() mTag=" + mTag);
            TelephonyStatsLog.write(TelephonyStatsLog.MOBILE_CONNECTION_STATE_CHANGED,
                    TelephonyStatsLog.MOBILE_CONNECTION_STATE_CHANGED__STATE__INACTIVE,
                    mPhone.getPhoneId(), mId,
                    mApnSetting != null ? (long) mApnSetting.getApnTypeBitmask() : 0L,
                    mApnSetting != null
                        ? mApnSetting.canHandleType(ApnSetting.TYPE_DEFAULT) : false);
                    mPhone.getPhoneId(), mId, getApnTypeBitmask(), canHandleDefault());
            mDataCallSessionStats.onDataCallDisconnected(mDcFailCause);
            if (mHandoverState == HANDOVER_STATE_BEING_TRANSFERRED) {
                // This is from source data connection to set itself's state
@@ -2575,12 +2587,10 @@ public class DataConnection extends StateMachine {
    private class DcActivatingState extends State {
        @Override
        public void enter() {
            int apnTypeBitmask = mApnSetting != null ? mApnSetting.getApnTypeBitmask() : 0;
            int apnTypeBitmask = getApnTypeBitmask();
            TelephonyStatsLog.write(TelephonyStatsLog.MOBILE_CONNECTION_STATE_CHANGED,
                    TelephonyStatsLog.MOBILE_CONNECTION_STATE_CHANGED__STATE__ACTIVATING,
                    mPhone.getPhoneId(), mId, (long) apnTypeBitmask,
                    mApnSetting != null
                        ? mApnSetting.canHandleType(ApnSetting.TYPE_DEFAULT) : false);
                    mPhone.getPhoneId(), mId, apnTypeBitmask, canHandleDefault());
            setHandoverState(HANDOVER_STATE_IDLE);
            // restricted evaluation depends on network requests from apnContext. The evaluation
            // should happen once entering connecting state rather than active state because it's
@@ -2690,7 +2700,7 @@ public class DataConnection extends StateMachine {
                            }
                            int newRequestType = DcTracker.calculateNewRetryRequestType(
                                    mHandoverFailureMode, cp.mRequestType, mDcFailCause);
                            mDct.getDataThrottler().setRetryTime(mApnSetting.getApnTypeBitmask(),
                            mDct.getDataThrottler().setRetryTime(getApnTypeBitmask(),
                                    retryTime, newRequestType);

                            String str = "DcActivatingState: ERROR_DATA_SERVICE_SPECIFIC_ERROR "
@@ -2721,7 +2731,7 @@ public class DataConnection extends StateMachine {
                    retVal = HANDLED;
                    mDataCallSessionStats
                            .onSetupDataCallResponse(dataCallResponse, cp.mRilRat,
                                    mApnSetting.getApnTypeBitmask(), mApnSetting.getProtocol(),
                                    getApnTypeBitmask(), mApnSetting.getProtocol(),
                                    result.mFailCause);
                    break;
                case EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED:
@@ -2757,10 +2767,7 @@ public class DataConnection extends StateMachine {
            if (DBG) log("DcActiveState: enter dc=" + DataConnection.this);
            TelephonyStatsLog.write(TelephonyStatsLog.MOBILE_CONNECTION_STATE_CHANGED,
                    TelephonyStatsLog.MOBILE_CONNECTION_STATE_CHANGED__STATE__ACTIVE,
                    mPhone.getPhoneId(), mId,
                    mApnSetting != null ? (long) mApnSetting.getApnTypeBitmask() : 0L,
                    mApnSetting != null
                        ? mApnSetting.canHandleType(ApnSetting.TYPE_DEFAULT) : false);
                    mPhone.getPhoneId(), mId, getApnTypeBitmask(), canHandleDefault());
            // If we were retrying there maybe more than one, otherwise they'll only be one.
            notifyAllWithEvent(null, DctConstants.EVENT_DATA_SETUP_COMPLETE,
                    Phone.REASON_CONNECTED);
@@ -2900,9 +2907,8 @@ public class DataConnection extends StateMachine {
                        getHandler(), DataConnection.EVENT_LINK_CAPACITY_CHANGED, null);
            }
            notifyDataConnectionState();
            int apnBitMask = mApnSetting.getApnTypeBitmask();
            TelephonyMetrics.getInstance().writeRilDataCallEvent(mPhone.getPhoneId(),
                    mCid, apnBitMask, RilDataCall.State.CONNECTED);
                    mCid, getApnTypeBitmask(), RilDataCall.State.CONNECTED);
        }

        @Override
@@ -2930,7 +2936,7 @@ public class DataConnection extends StateMachine {
            mNetworkAgent = null;

            TelephonyMetrics.getInstance().writeRilDataCallEvent(mPhone.getPhoneId(),
                    mCid, mApnSetting.getApnTypeBitmask(), RilDataCall.State.DISCONNECTED);
                    mCid, getApnTypeBitmask(), RilDataCall.State.DISCONNECTED);

            mVcnManager.removeVcnNetworkPolicyChangeListener(mVcnPolicyChangeListener);

@@ -3328,10 +3334,7 @@ public class DataConnection extends StateMachine {
        public void enter() {
            TelephonyStatsLog.write(TelephonyStatsLog.MOBILE_CONNECTION_STATE_CHANGED,
                    TelephonyStatsLog.MOBILE_CONNECTION_STATE_CHANGED__STATE__DISCONNECTING,
                    mPhone.getPhoneId(), mId,
                    mApnSetting != null ? (long) mApnSetting.getApnTypeBitmask() : 0L,
                    mApnSetting != null
                        ? mApnSetting.canHandleType(ApnSetting.TYPE_DEFAULT) : false);
                    mPhone.getPhoneId(), mId, getApnTypeBitmask(), canHandleDefault());
            notifyDataConnectionState();
        }
        @Override
@@ -3392,10 +3395,7 @@ public class DataConnection extends StateMachine {
            TelephonyStatsLog.write(TelephonyStatsLog.MOBILE_CONNECTION_STATE_CHANGED,
                    TelephonyStatsLog
                            .MOBILE_CONNECTION_STATE_CHANGED__STATE__DISCONNECTION_ERROR_CREATING_CONNECTION,
                    mPhone.getPhoneId(), mId,
                    mApnSetting != null ? (long) mApnSetting.getApnTypeBitmask() : 0L,
                    mApnSetting != null
                        ? mApnSetting.canHandleType(ApnSetting.TYPE_DEFAULT) : false);
                    mPhone.getPhoneId(), mId, getApnTypeBitmask(), canHandleDefault());
            notifyDataConnectionState();
        }
        @Override
+2 −0
Original line number Diff line number Diff line
@@ -1208,6 +1208,8 @@ public class DcTracker extends Handler {
     * <p>
     * Assumes there is less than one {@link ApnSetting} can support the given apn type.
     */
    // TODO: for enterprise this always returns IDLE, which is ok for now since it is never called
    // for enterprise
    public DctConstants.State getState(String apnType) {
        DctConstants.State state = DctConstants.State.IDLE;
        final int apnTypeBitmask = ApnSetting.getApnTypesBitmaskFromString(apnType);