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

Commit 9896f024 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 13511273 from f8c53243 to 25Q3-release

Change-Id: I84aafabd6e15773cedf81d0b1d39ec573dc76bd8
parents d5b8246a f8c53243
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -108,4 +108,14 @@ public abstract class ConfigParser<T> {
        mVersion = version;
        Log.d(TAG, "overrideVersion: mVersion=" + mVersion);
    }

    /**
     * Overrides the config
     *
     * @param config the config that should be overrided with
     */
    public void overrideConfig(T config) {
        Log.d(TAG, "overrideConfig: overriding config to " + config);
        mConfig = config;
    }
}
+12 −0
Original line number Diff line number Diff line
@@ -249,6 +249,18 @@ public class TelephonyConfigUpdateInstallReceiver extends ConfigUpdateInstallRec
        }
    }

    /**
     * Overrides the config parser. Should be used only in tests.
     *
     * @param configParser the config parser that we have to override
     */
    public void overrideConfigParser(ConfigParser configParser) {
        Log.d(TAG, "overrideConfigParser");
        synchronized (getInstance().mConfigParserLock) {
            getInstance().mConfigParser = configParser;
        }
    }

    @Override
    public void registerCallback(@NonNull Executor executor, @NonNull Callback callback) {
        mCallbackHashMap.put(executor, callback);
+49 −0
Original line number Diff line number Diff line
@@ -35,16 +35,21 @@ import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS
import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS_TYPE__SMS_TYPE_VOICEMAIL_INDICATION;
import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS_TYPE__SMS_TYPE_WAP_PUSH;
import static com.android.internal.telephony.TelephonyStatsLog.INCOMING_SMS__SMS_TYPE__SMS_TYPE_ZERO;
import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_GENERIC_FAILURE;
import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NETWORK_ERROR;
import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NONE;
import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_ERROR;
import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_ERROR_FALLBACK;
import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_ERROR_RETRY;
import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_SUCCESS;
import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_UNKNOWN;
import static com.android.internal.telephony.TelephonyStatsLog.OUTGOING_SMS__SMS_TECH__SMS_TECH_UNKNOWN;

import android.annotation.Nullable;
import android.app.Activity;
import android.provider.Telephony.Sms.Intents;
import android.telephony.Annotation.NetworkType;
import android.telephony.AnomalyReporter;
import android.telephony.ServiceState;
import android.telephony.SmsManager;
import android.telephony.TelephonyManager;
@@ -66,6 +71,7 @@ import com.android.telephony.Rlog;

import java.util.Objects;
import java.util.Random;
import java.util.UUID;

/** Collects sms events per phone ID for the pulled atom. */
public class SmsStats {
@@ -76,6 +82,8 @@ public class SmsStats {

    /** 3GPP2 error for out of service: "Other radio interface problem" in N.S0005 Table 171 */
    private static final int NO_NETWORK_ERROR_3GPP2 = 66;
    public static final UUID NTN_OUTGOING_SMS_ERROR_ANOMALY_UUID = UUID.fromString(
            "bfd2a3d9-9f2c-4070-b9df-bdbb7f9c645a");

    private final Phone mPhone;

@@ -84,6 +92,7 @@ public class SmsStats {

    private static final Random RANDOM = new Random();


    public SmsStats(Phone phone) {
        mPhone = phone;
    }
@@ -213,6 +222,7 @@ public class SmsStats {
        proto.networkErrorCode = networkErrorCode;

        mAtomsStorage.addOutgoingSms(proto);
        reportNtnOutgoingSmsAnomaly(proto);
        CarrierRoamingSatelliteSessionStats sessionStats =
                CarrierRoamingSatelliteSessionStats.getInstance(mPhone.getSubId());
        sessionStats.onOutgoingSms(mPhone.getSubId());
@@ -428,6 +438,45 @@ public class SmsStats {
        return phone.getCarrierId();
    }

    private void reportNtnOutgoingSmsAnomaly(OutgoingSms proto) {
        if (!proto.isNtn && !proto.isNbIotNtn) {
            return;
        }

        if (proto.sendResult == OUTGOING_SMS__SEND_RESULT__SMS_SEND_RESULT_SUCCESS) {
            // Do not report anomaly if sendResult is success
            return;
        }

        if (proto.errorCode == OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NONE
                && proto.smsTech != OUTGOING_SMS__SMS_TECH__SMS_TECH_UNKNOWN) {
            // Only report anomaly for errorCode==ERROR_NONE when sms_tech is unknown.
            return;
        }

        // For NTN outgoing SMS, proto.errorCode == proto.networkErrorCode
        switch (proto.errorCode) {
            case OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NONE:
            case OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_NETWORK_ERROR:
            case OUTGOING_SMS__SEND_ERROR_CODE__SMS_SEND_ERROR_GENERIC_FAILURE:
            case SmsManager.SMS_RP_CAUSE_CONGESTION:
            case SmsManager.SMS_RP_CAUSE_PROTOCOL_ERROR:
                String message = "NTN Outgoing SMS failed";
                Rlog.d(TAG, message + " with errorCode=" + proto.errorCode
                        + " with sendResult=" + proto.sendResult + " smsTech=" + proto.smsTech);
                AnomalyReporter.reportAnomaly(generateUUID(proto.errorCode, proto.sendResult),
                        message, proto.carrierId);
        }
    }

    private UUID generateUUID(int errorCode, int sendResult) {
        long lerrorCode = errorCode;
        long lsendResult = sendResult;
        return new UUID(NTN_OUTGOING_SMS_ERROR_ANOMALY_UUID.getMostSignificantBits(),
                NTN_OUTGOING_SMS_ERROR_ANOMALY_UUID.getLeastSignificantBits()
                        + ((lsendResult << 32) + lerrorCode));
    }

    private boolean isNbIotNtn(Phone phone) {
        return SatelliteController.getInstance().isInCarrierRoamingNbIotNtn(phone);
    }
+1 −0
Original line number Diff line number Diff line
@@ -472,6 +472,7 @@ public class PointingAppController extends Handler {
        launchIntent.putExtra("needFullScreen", needFullScreenPointingUI);
        launchIntent.putExtra("isDemoMode", isDemoMode);
        launchIntent.putExtra("isEmergency", isEmergency);
        launchIntent.setFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);

        try {
            if (!mListenerForPointingUIRegistered.get()) {
+21 −1
Original line number Diff line number Diff line
@@ -60,8 +60,17 @@ public class SatelliteConfig {
    private File mSatelliteAccessConfigJsonFile;
    private SatelliteConfigData.SatelliteConfigProto mConfigData;

    public SatelliteConfig() {
        logd("SatelliteConfig: constructing from scratch");
    }

    public SatelliteConfig(@NonNull SatelliteConfig satelliteConfig) {
        logd("SatelliteConfig: constructing through deep copy of: " + satelliteConfig);
        new SatelliteConfig(satelliteConfig.mConfigData);
    }

    public SatelliteConfig(@NonNull SatelliteConfigData.SatelliteConfigProto configData) {
        logd("SatelliteConfig");
        logd("SatelliteConfig: constructing with configData: " + configData);
        mConfigData = configData;
        mVersion = mConfigData.version;
        logd("mVersion: " + mVersion);
@@ -165,6 +174,17 @@ public class SatelliteConfig {
        return null;
    }

    /**
     * Overrides the satellite max allowed data mode.
     *
     * @param maxAllowedDataMode the new max allowed data mode
     */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    public void overrideSatelliteMaxAllowedDataMode(int maxAllowedDataMode) {
        logd("overrideSatelliteMaxAllowedDataMode: " + maxAllowedDataMode);
        mCarrierRoamingMaxAllowedDataMode = maxAllowedDataMode;
    }

    /**
     * Get satellite plmns for carrier
     *
Loading