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

Commit ba2aef70 authored by Kumar Ankit's avatar Kumar Ankit
Browse files

[TelephonyAnalytics_Implementation] Changes related to method calls in...

[TelephonyAnalytics_Implementation] Changes related to method calls in CallAnalytics and SmsMmsAnalytics

- This changelist supports method invocations to various methods in
CallAnalytics and SmsAnalytics
- Methods calls have been added in required places to collect required data and pass them to the analytics classes.

Bug: 290965632
Bug: 290962945
Test: Device Test & atest
Change-Id: I40932fbf509b6818f7fc36a6553b3da6bf990f95
parent 1293620b
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ import com.android.ims.ImsException;
import com.android.ims.ImsManager;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails;
import com.android.internal.telephony.analytics.TelephonyAnalytics;
import com.android.internal.telephony.analytics.TelephonyAnalytics.SmsMmsAnalytics;
import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.telephony.uicc.IccUtils;
import com.android.internal.telephony.util.SMSDispatcherUtil;
@@ -242,6 +244,18 @@ public class ImsSmsDispatcher extends SMSDispatcher {
                        tracker.mMessageId,
                        tracker.isFromDefaultSmsApplication(mContext),
                        tracker.getInterval());
                if (mPhone != null) {
                    TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                    if (telephonyAnalytics != null) {
                        SmsMmsAnalytics smsMmsAnalytics = telephonyAnalytics.getSmsMmsAnalytics();
                        if (smsMmsAnalytics != null) {
                            smsMmsAnalytics.onOutgoingSms(
                                    true /* isOverIms */,
                                    reason);
                        }
                    }
                }

            } finally {
                Binder.restoreCallingIdentity(identity);
            }
@@ -642,6 +656,18 @@ public class ImsSmsDispatcher extends SMSDispatcher {
                    tracker.mMessageId,
                    tracker.isFromDefaultSmsApplication(mContext),
                    tracker.getInterval());
            if (mPhone != null) {
                TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                if (telephonyAnalytics != null) {
                    SmsMmsAnalytics smsMmsAnalytics = telephonyAnalytics.getSmsMmsAnalytics();
                    if (smsMmsAnalytics != null) {
                        smsMmsAnalytics.onOutgoingSms(
                                true /* isOverIms */,
                                SmsManager.RESULT_SYSTEM_ERROR
                        );
                    }
                }
            }
        }
    }

+31 −0
Original line number Diff line number Diff line
@@ -71,6 +71,8 @@ import android.util.Pair;
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.SmsConstants.MessageClass;
import com.android.internal.telephony.analytics.TelephonyAnalytics;
import com.android.internal.telephony.analytics.TelephonyAnalytics.SmsMmsAnalytics;
import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.telephony.util.NotificationChannelController;
import com.android.internal.telephony.util.TelephonyUtils;
@@ -745,6 +747,16 @@ public abstract class InboundSmsHandler extends StateMachine {
        if (result != Intents.RESULT_SMS_HANDLED && result != Activity.RESULT_OK) {
            mMetrics.writeIncomingSmsError(mPhone.getPhoneId(), is3gpp2(), smsSource, result);
            mPhone.getSmsStats().onIncomingSmsError(is3gpp2(), smsSource, result);
            if (mPhone != null) {
                TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                if (telephonyAnalytics != null) {
                    SmsMmsAnalytics smsMmsAnalytics = telephonyAnalytics.getSmsMmsAnalytics();
                    if (smsMmsAnalytics != null) {
                        smsMmsAnalytics.onIncomingSmsError(smsSource, result);
                    }
                }
            }

        }
        return result;
    }
@@ -1008,6 +1020,16 @@ public abstract class InboundSmsHandler extends StateMachine {
            logeWithLocalLog(errorMsg, tracker.getMessageId());
            mPhone.getSmsStats().onIncomingSmsError(
                    is3gpp2(), tracker.getSource(), RESULT_SMS_NULL_PDU);
            if (mPhone != null) {
                TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                if (telephonyAnalytics != null) {
                    SmsMmsAnalytics smsMmsAnalytics = telephonyAnalytics.getSmsMmsAnalytics();
                    if (smsMmsAnalytics != null) {
                        smsMmsAnalytics.onIncomingSmsError(
                                tracker.getSource(), RESULT_SMS_NULL_PDU);
                    }
                }
            }
            return false;
        }

@@ -1082,7 +1104,16 @@ public abstract class InboundSmsHandler extends StateMachine {
                format, timestamps, block, tracker.getMessageId());
        mPhone.getSmsStats().onIncomingSmsSuccess(is3gpp2(), tracker.getSource(),
                messageCount, block, tracker.getMessageId());
        if (mPhone != null) {
            TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
            if (telephonyAnalytics != null) {
                SmsMmsAnalytics smsMmsAnalytics = telephonyAnalytics.getSmsMmsAnalytics();
                if (smsMmsAnalytics != null) {
                    smsMmsAnalytics.onIncomingSmsSuccess(tracker.getSource());
                }
            }

        }
        // Always invoke SMS filters, even if the number ends up being blocked, to prevent
        // surprising bugs due to blocking numbers that happen to be used for visual voicemail SMS
        // or other carrier system messages.
+63 −0
Original line number Diff line number Diff line
@@ -86,6 +86,8 @@ import android.widget.TextView;
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails;
import com.android.internal.telephony.analytics.TelephonyAnalytics;
import com.android.internal.telephony.analytics.TelephonyAnalytics.SmsMmsAnalytics;
import com.android.internal.telephony.cdma.sms.UserData;
import com.android.internal.telephony.subscription.SubscriptionInfoInternal;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
@@ -1048,6 +1050,19 @@ public abstract class SMSDispatcher extends Handler {
                    tracker.mMessageId,
                    tracker.isFromDefaultSmsApplication(mContext),
                    tracker.getInterval());
            if (mPhone != null) {
                TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                if (telephonyAnalytics != null) {
                    SmsMmsAnalytics smsMmsAnalytics = telephonyAnalytics.getSmsMmsAnalytics();
                    if (smsMmsAnalytics != null) {
                        smsMmsAnalytics.onOutgoingSms(
                                tracker.mImsRetry > 0 /* isOverIms */,
                                SmsManager.RESULT_ERROR_NONE
                        );
                    }
                }
            }

        } else {
            if (DBG) {
                Rlog.d(TAG, "SMS send failed "
@@ -1084,6 +1099,19 @@ public abstract class SMSDispatcher extends Handler {
                        tracker.mMessageId,
                        tracker.isFromDefaultSmsApplication(mContext),
                        tracker.getInterval());
                if (mPhone != null) {
                    TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                    if (telephonyAnalytics != null) {
                        SmsMmsAnalytics smsMmsAnalytics = telephonyAnalytics.getSmsMmsAnalytics();
                        if (smsMmsAnalytics != null) {
                            smsMmsAnalytics.onOutgoingSms(
                                    tracker.mImsRetry > 0 /* isOverIms */,
                                    getNotInServiceError(ss)
                            );
                        }
                    }
                }

            } else if (error == SmsManager.RESULT_RIL_SMS_SEND_FAIL_RETRY
                    && tracker.mRetryCount < getMaxSmsRetryCount()) {
                // Retry after a delay if needed.
@@ -1107,6 +1135,19 @@ public abstract class SMSDispatcher extends Handler {
                        tracker.mMessageId,
                        tracker.isFromDefaultSmsApplication(mContext),
                        tracker.getInterval());
                if (mPhone != null) {
                    TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                    if (telephonyAnalytics != null) {
                        SmsMmsAnalytics smsMmsAnalytics = telephonyAnalytics.getSmsMmsAnalytics();
                        if (smsMmsAnalytics != null) {
                            smsMmsAnalytics.onOutgoingSms(
                                    tracker.mImsRetry > 0 /* isOverIms */,
                                    SmsManager.RESULT_RIL_SMS_SEND_FAIL_RETRY
                            );
                        }
                    }
                }

            } else {
                int errorCode = (smsResponse != null) ? smsResponse.mErrorCode : NO_ERROR_CODE;
                tracker.onFailed(mContext, error, errorCode);
@@ -1119,6 +1160,17 @@ public abstract class SMSDispatcher extends Handler {
                        tracker.mMessageId,
                        tracker.isFromDefaultSmsApplication(mContext),
                        tracker.getInterval());
                if (mPhone != null) {
                    TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                    if (telephonyAnalytics != null) {
                        SmsMmsAnalytics smsMmsAnalytics = telephonyAnalytics.getSmsMmsAnalytics();
                        if (smsMmsAnalytics != null) {
                            smsMmsAnalytics.onOutgoingSms(
                                    tracker.mImsRetry > 0 /* isOverIms */,
                                    error);
                        }
                    }
                }
            }
        }
    }
@@ -2335,6 +2387,17 @@ public abstract class SMSDispatcher extends Handler {
                    trackers[0].mMessageId,
                    trackers[0].isFromDefaultSmsApplication(mContext),
                    trackers[0].getInterval());
            if (mPhone != null) {
                TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                if (telephonyAnalytics != null) {
                    SmsMmsAnalytics smsMmsAnalytics = telephonyAnalytics.getSmsMmsAnalytics();
                    if (smsMmsAnalytics != null) {
                        smsMmsAnalytics.onOutgoingSms(
                                isIms(),
                                error);
                    }
                }
            }
        }
    }

+10 −0
Original line number Diff line number Diff line
@@ -31,6 +31,8 @@ import android.os.UserManager;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;

import com.android.internal.telephony.analytics.TelephonyAnalytics;
import com.android.internal.telephony.analytics.TelephonyAnalytics.SmsMmsAnalytics;
import com.android.internal.telephony.cdma.CdmaInboundSmsHandler;
import com.android.internal.telephony.gsm.GsmInboundSmsHandler;
import com.android.internal.telephony.metrics.TelephonyMetrics;
@@ -242,6 +244,14 @@ public class SmsBroadcastUndelivered {
                    if (phone != null) {
                        phone.getSmsStats().onDroppedIncomingMultipartSms(message.mIs3gpp2, rows,
                                message.mMessageCount);
                        TelephonyAnalytics telephonyAnalytics = phone.getTelephonyAnalytics();
                        if (telephonyAnalytics != null) {
                            SmsMmsAnalytics smsMmsAnalytics =
                                    telephonyAnalytics.getSmsMmsAnalytics();
                            if (smsMmsAnalytics != null) {
                                smsMmsAnalytics.onDroppedIncomingMultipartSms();
                            }
                        }
                    }
                }
            }
+27 −0
Original line number Diff line number Diff line
@@ -66,6 +66,8 @@ import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.ServiceStateTracker;
import com.android.internal.telephony.analytics.TelephonyAnalytics;
import com.android.internal.telephony.analytics.TelephonyAnalytics.CallAnalytics;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.imsphone.ImsPhoneConnection;
import com.android.internal.telephony.nano.PersistAtomsProto.VoiceCallSession;
@@ -211,6 +213,19 @@ public class VoiceCallSessionStats {
                    proto.disconnectExtraCode = conn.getPreciseDisconnectCause();
                    proto.disconnectExtraMessage = conn.getVendorDisconnectCause();
                    proto.callDuration = classifyCallDuration(conn.getDurationMillis());
                    if (mPhone != null) {
                        TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                        if (telephonyAnalytics != null) {
                            CallAnalytics callAnalytics = telephonyAnalytics.getCallAnalytics();
                            if (callAnalytics != null) {
                                callAnalytics.onCallTerminated(proto.isEmergency,
                                        false /* isOverIms */,
                                        getVoiceRatWithVoNRFix(mPhone, mPhone.getServiceState(),
                                                proto.bearerAtEnd),
                                        proto.simSlotIndex, proto.disconnectReasonCode);
                            }
                        }
                    }
                    finishCall(id);
                }
            }
@@ -640,6 +655,18 @@ public class VoiceCallSessionStats {
        proto.disconnectExtraCode = reasonInfo.mExtraCode;
        proto.disconnectExtraMessage = ImsStats.filterExtraMessage(reasonInfo.mExtraMessage);
        proto.callDuration = classifyCallDuration(durationMillis);
        if (mPhone != null) {
            TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
            if (telephonyAnalytics != null) {
                CallAnalytics callAnalytics = telephonyAnalytics.getCallAnalytics();
                if (callAnalytics != null) {
                    callAnalytics.onCallTerminated(proto.isEmergency, true /* isOverIms */ ,
                            getVoiceRatWithVoNRFix(
                                    mPhone, mPhone.getServiceState(), proto.bearerAtEnd),
                            proto.simSlotIndex, proto.disconnectReasonCode);
                }
            }
        }
        finishCall(id);
    }

Loading