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

Commit e8aff467 authored by Brad Ebinger's avatar Brad Ebinger
Browse files

Provide the user ID when running IMS related CTS tests

1) Ensure that when we override the package name for ImsService
related CTS tests, we also override the user that is used to bind.
2) Fix crashes related to using telephony when the TELEPHONY_CALLING
feature is disabled, but SMS is still allowed.

Flag: com.android.internal.telephony.flags.ims_resolver_user_aware
Bug: 371272669
Test: atest CtsTelephonyTestCases
Change-Id: Ied930b02e2802aa2013001f25556e5b368e40b42
parent 62cc25a4
Loading
Loading
Loading
Loading
+0 −7
Original line number Original line Diff line number Diff line
@@ -42,7 +42,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.database.SQLException;
import android.database.SQLException;
import android.hardware.radio.modem.ImeiInfo;
import android.hardware.radio.modem.ImeiInfo;
import android.net.Uri;
import android.net.Uri;
@@ -470,12 +469,6 @@ public class GsmCdmaPhone extends Phone {
        }
        }
    };
    };


    private boolean hasCalling() {
        if (!TelephonyCapabilities.minimalTelephonyCdmCheck(mFeatureFlags)) return true;
        return mContext.getPackageManager().hasSystemFeature(
            PackageManager.FEATURE_TELEPHONY_CALLING);
    }

    private void initOnce(CommandsInterface ci) {
    private void initOnce(CommandsInterface ci) {
        if (ci instanceof SimulatedRadioControl) {
        if (ci instanceof SimulatedRadioControl) {
            mSimulatedRadioControl = (SimulatedRadioControl) ci;
            mSimulatedRadioControl = (SimulatedRadioControl) ci;
+10 −4
Original line number Original line Diff line number Diff line
@@ -48,6 +48,7 @@ import android.util.Log;


import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo;
import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo;
import com.android.internal.telephony.emergency.EmergencyNumberTracker;
import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo;
import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo;
import com.android.internal.telephony.uicc.IccConstants;
import com.android.internal.telephony.uicc.IccConstants;
@@ -1511,8 +1512,7 @@ public class IccSmsInterfaceManager {
    @VisibleForTesting
    @VisibleForTesting
    public void notifyIfOutgoingEmergencySms(String destAddr) {
    public void notifyIfOutgoingEmergencySms(String destAddr) {
        Phone[] allPhones = mPhoneFactoryProxy.getPhones();
        Phone[] allPhones = mPhoneFactoryProxy.getPhones();
        EmergencyNumber emergencyNumber = mPhone.getEmergencyNumberTracker().getEmergencyNumber(
        EmergencyNumber emergencyNumber = getEmergencyNumber(mPhone, destAddr);
                destAddr);
        if (emergencyNumber != null) {
        if (emergencyNumber != null) {
            mPhone.notifyOutgoingEmergencySms(emergencyNumber);
            mPhone.notifyOutgoingEmergencySms(emergencyNumber);
        } else if (allPhones.length > 1) {
        } else if (allPhones.length > 1) {
@@ -1522,8 +1522,7 @@ public class IccSmsInterfaceManager {
                if (phone.getPhoneId() == mPhone.getPhoneId()) {
                if (phone.getPhoneId() == mPhone.getPhoneId()) {
                    continue;
                    continue;
                }
                }
                emergencyNumber = phone.getEmergencyNumberTracker()
                emergencyNumber = getEmergencyNumber(phone, destAddr);
                        .getEmergencyNumber(destAddr);
                if (emergencyNumber != null) {
                if (emergencyNumber != null) {
                    mPhone.notifyOutgoingEmergencySms(emergencyNumber);
                    mPhone.notifyOutgoingEmergencySms(emergencyNumber);
                    break;
                    break;
@@ -1532,6 +1531,13 @@ public class IccSmsInterfaceManager {
        }
        }
    }
    }


    private EmergencyNumber getEmergencyNumber(Phone phone, String number) {
        if (!phone.hasCalling()) return null;
        EmergencyNumberTracker tracker = phone.getEmergencyNumberTracker();
        if (tracker == null) return null;
        return tracker.getEmergencyNumber(number);
    }

    private void returnUnspecifiedFailure(PendingIntent pi) {
    private void returnUnspecifiedFailure(PendingIntent pi) {
        if (pi != null) {
        if (pi != null) {
            try {
            try {
+12 −8
Original line number Original line Diff line number Diff line
@@ -772,8 +772,7 @@ public abstract class InboundSmsHandler extends StateMachine {
        if (result != Intents.RESULT_SMS_HANDLED && result != Activity.RESULT_OK) {
        if (result != Intents.RESULT_SMS_HANDLED && result != Activity.RESULT_OK) {
            mMetrics.writeIncomingSmsError(mPhone.getPhoneId(), is3gpp2(), smsSource, result);
            mMetrics.writeIncomingSmsError(mPhone.getPhoneId(), is3gpp2(), smsSource, result);
            mPhone.getSmsStats().onIncomingSmsError(is3gpp2(), smsSource, result,
            mPhone.getSmsStats().onIncomingSmsError(is3gpp2(), smsSource, result,
                    TelephonyManager.from(mContext)
                    isEmergencyNumber(smsb.getOriginatingAddress()));
                            .isEmergencyNumber(smsb.getOriginatingAddress()));
            if (mPhone != null) {
            if (mPhone != null) {
                TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                if (telephonyAnalytics != null) {
                if (telephonyAnalytics != null) {
@@ -1052,7 +1051,7 @@ public abstract class InboundSmsHandler extends StateMachine {
            logeWithLocalLog(errorMsg, tracker.getMessageId());
            logeWithLocalLog(errorMsg, tracker.getMessageId());
            mPhone.getSmsStats().onIncomingSmsError(
            mPhone.getSmsStats().onIncomingSmsError(
                    is3gpp2(), tracker.getSource(), RESULT_SMS_NULL_PDU,
                    is3gpp2(), tracker.getSource(), RESULT_SMS_NULL_PDU,
                    TelephonyManager.from(mContext).isEmergencyNumber(tracker.getAddress()));
                    isEmergencyNumber(tracker.getAddress()));
            if (mPhone != null) {
            if (mPhone != null) {
                TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                TelephonyAnalytics telephonyAnalytics = mPhone.getTelephonyAnalytics();
                if (telephonyAnalytics != null) {
                if (telephonyAnalytics != null) {
@@ -1082,8 +1081,7 @@ public abstract class InboundSmsHandler extends StateMachine {
                                tracker.getMessageId());
                                tracker.getMessageId());
                        mPhone.getSmsStats().onIncomingSmsWapPush(tracker.getSource(),
                        mPhone.getSmsStats().onIncomingSmsWapPush(tracker.getSource(),
                                messageCount, RESULT_SMS_NULL_MESSAGE, tracker.getMessageId(),
                                messageCount, RESULT_SMS_NULL_MESSAGE, tracker.getMessageId(),
                                TelephonyManager.from(mContext)
                                isEmergencyNumber(tracker.getAddress()));
                                        .isEmergencyNumber(tracker.getAddress()));
                        return false;
                        return false;
                    }
                    }
                }
                }
@@ -1118,8 +1116,7 @@ public abstract class InboundSmsHandler extends StateMachine {
            mMetrics.writeIncomingWapPush(mPhone.getPhoneId(), tracker.getSource(),
            mMetrics.writeIncomingWapPush(mPhone.getPhoneId(), tracker.getSource(),
                    format, timestamps, wapPushResult, tracker.getMessageId());
                    format, timestamps, wapPushResult, tracker.getMessageId());
            mPhone.getSmsStats().onIncomingSmsWapPush(tracker.getSource(), messageCount,
            mPhone.getSmsStats().onIncomingSmsWapPush(tracker.getSource(), messageCount,
                    result, tracker.getMessageId(), TelephonyManager.from(mContext)
                    result, tracker.getMessageId(), isEmergencyNumber(tracker.getAddress()));
                            .isEmergencyNumber(tracker.getAddress()));
            // result is Activity.RESULT_OK if an ordered broadcast was sent
            // result is Activity.RESULT_OK if an ordered broadcast was sent
            if (result == Activity.RESULT_OK) {
            if (result == Activity.RESULT_OK) {
                return true;
                return true;
@@ -1140,7 +1137,7 @@ public abstract class InboundSmsHandler extends StateMachine {
                format, timestamps, block, tracker.getMessageId());
                format, timestamps, block, tracker.getMessageId());
        mPhone.getSmsStats().onIncomingSmsSuccess(is3gpp2(), tracker.getSource(),
        mPhone.getSmsStats().onIncomingSmsSuccess(is3gpp2(), tracker.getSource(),
                messageCount, block, tracker.getMessageId(),
                messageCount, block, tracker.getMessageId(),
                TelephonyManager.from(mContext).isEmergencyNumber(tracker.getAddress()));
                isEmergencyNumber(tracker.getAddress()));
        CarrierRoamingSatelliteSessionStats sessionStats =
        CarrierRoamingSatelliteSessionStats sessionStats =
                CarrierRoamingSatelliteSessionStats.getInstance(mPhone.getSubId());
                CarrierRoamingSatelliteSessionStats.getInstance(mPhone.getSubId());
        sessionStats.onIncomingSms(mPhone.getSubId());
        sessionStats.onIncomingSms(mPhone.getSubId());
@@ -1178,6 +1175,13 @@ public abstract class InboundSmsHandler extends StateMachine {
        return true;
        return true;
    }
    }


    private boolean isEmergencyNumber(String number) {
        if (!mPhone.hasCalling()) return false;
        TelephonyManager manager = TelephonyManager.from(mContext);
        if (manager == null) return false;
        return manager.isEmergencyNumber(number);
    }

    /**
    /**
     * Processes the message part while the credential-encrypted storage is still locked.
     * Processes the message part while the credential-encrypted storage is still locked.
     *
     *
+8 −1
Original line number Original line Diff line number Diff line
@@ -660,7 +660,7 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        mSmsStorageMonitor = mTelephonyComponentFactory.inject(SmsStorageMonitor.class.getName())
        mSmsStorageMonitor = mTelephonyComponentFactory.inject(SmsStorageMonitor.class.getName())
                .makeSmsStorageMonitor(this, mFeatureFlags);
                .makeSmsStorageMonitor(this, mFeatureFlags);
        mSmsUsageMonitor = mTelephonyComponentFactory.inject(SmsUsageMonitor.class.getName())
        mSmsUsageMonitor = mTelephonyComponentFactory.inject(SmsUsageMonitor.class.getName())
                .makeSmsUsageMonitor(context);
                .makeSmsUsageMonitor(context, mFeatureFlags);
        mUiccController = UiccController.getInstance();
        mUiccController = UiccController.getInstance();
        mUiccController.registerForIccChanged(this, EVENT_ICC_CHANGED, null);
        mUiccController.registerForIccChanged(this, EVENT_ICC_CHANGED, null);
        mSimActivationTracker = mTelephonyComponentFactory
        mSimActivationTracker = mTelephonyComponentFactory
@@ -1965,6 +1965,13 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
                .contains(TelephonyManager.RADIO_POWER_REASON_THERMAL);
                .contains(TelephonyManager.RADIO_POWER_REASON_THERMAL);
    }
    }


    /**
     * @return true if this device supports calling, false otherwise.
     */
    public boolean hasCalling() {
        return TelephonyCapabilities.supportsTelephonyCalling(mFeatureFlags, mContext);
    }

    /**
    /**
     * Retrieves the EmergencyNumberTracker of the phone instance.
     * Retrieves the EmergencyNumberTracker of the phone instance.
     */
     */
+1 −1
Original line number Original line Diff line number Diff line
@@ -2120,7 +2120,7 @@ public abstract class SMSDispatcher extends Handler {
            }
            }
        }
        }


        if (mTelephonyManager.isEmergencyNumber(trackers[0].mDestAddress)) {
        if (mPhone.hasCalling() && mTelephonyManager.isEmergencyNumber(trackers[0].mDestAddress)) {
            new AsyncEmergencyContactNotifier(mContext).execute();
            new AsyncEmergencyContactNotifier(mContext).execute();
        }
        }
    }
    }
Loading