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

Commit 8f3a62d1 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 13525848 from bfe3ada6 to 25Q3-release

Change-Id: I82273e1064c088a42a73e7037247fe1030e07c6d
parents 4c47f34d bfe3ada6
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -142,3 +142,11 @@ flag {
    description: "This flag reset the cache if the sim phonebook is empty"
    bug:"404094844"
}

# OWNER=arunvoddu TARGET=25Q4
flag {
    name: "cat_service_creation_fix"
    namespace: "telephony"
    description: "This flag reset the cache if the sim phonebook is empty"
    bug:"417398404"
}
 No newline at end of file
+37 −18
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.internal.telephony.cat;
import static com.android.internal.telephony.cat.CatCmdMessage.SetupEventListConstants.IDLE_SCREEN_AVAILABLE_EVENT;
import static com.android.internal.telephony.cat.CatCmdMessage.SetupEventListConstants.LANGUAGE_SELECTION_EVENT;
import static com.android.internal.telephony.cat.CatCmdMessage.SetupEventListConstants.USER_ACTIVITY_EVENT;
import static com.android.internal.telephony.uicc.IccCardApplicationStatus.AppType.APPTYPE_UNKNOWN;

import android.app.Activity;
import android.app.ActivityManager;
@@ -52,6 +53,7 @@ import com.android.internal.telephony.ProxyController;
import com.android.internal.telephony.SmsController;
import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.flags.FeatureFlagsImpl;
import com.android.internal.telephony.flags.Flags;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
import com.android.internal.telephony.uicc.IccCardStatus.CardState;
import com.android.internal.telephony.uicc.IccFileHandler;
@@ -218,6 +220,34 @@ public class CatService extends Handler implements AppInterface {
        mContext.registerReceiver(mSmsBroadcastReceiver, new IntentFilter(SMS_SENT_ACTION));
    }

    private static UiccCardApplication getValidUiccApplication(UiccProfile uiccProfile) {
        UiccCardApplication ca = null;
        if (uiccProfile != null) {
            /* Since Cat is not tied to any application, but rather is Uicc application
             * in itself - just get first FileHandler and IccRecords object
             */
            ca = uiccProfile.getApplicationIndex(0);

            /**
             * Case where the SIMs reporting "UNKNOWN" application type.
             * If an "UNKNOWN" application is detected, its file handler won't be initialized
             * correctly.
             * To avoid issues, always use the file handler from a known, valid SIM application.
             */
            if (Flags.catServiceCreationFix() && ca.getType() == APPTYPE_UNKNOWN
                    && uiccProfile.getNumApplications() > 1) {
                for (int i = 1; i < uiccProfile.getNumApplications(); i++) {
                    UiccCardApplication tmpCa = uiccProfile.getApplicationIndex(i);
                    if (tmpCa.getType() != APPTYPE_UNKNOWN) {
                        ca = tmpCa;
                        break;
                    }
                }
            }
        }
        return ca;
    }

    /**
     * Used for instantiating the Service from the Card.
     *
@@ -238,16 +268,11 @@ public class CatService extends Handler implements AppInterface {
        UiccCardApplication ca = null;
        IccFileHandler fh = null;
        IccRecords ir = null;
        if (uiccProfile != null) {
            /* Since Cat is not tied to any application, but rather is Uicc application
             * in itself - just get first FileHandler and IccRecords object
             */
            ca = uiccProfile.getApplicationIndex(0);
        ca = getValidUiccApplication(uiccProfile);
        if (ca != null) {
            fh = ca.getIccFileHandler();
            ir = ca.getIccRecords();
        }
        }

        synchronized (sInstanceLock) {
            if (sInstance == null) {
@@ -1302,16 +1327,10 @@ public class CatService extends Handler implements AppInterface {
            Context context, UiccProfile uiccProfile) {
        UiccCardApplication ca = null;
        IccRecords ir = null;

        if (uiccProfile != null) {
            /* Since Cat is not tied to any application, but rather is Uicc application
             * in itself - just get first FileHandler and IccRecords object
             */
            ca = uiccProfile.getApplicationIndex(0);
        ca = getValidUiccApplication(uiccProfile);
        if (ca != null) {
            ir = ca.getIccRecords();
        }
        }

        synchronized (sInstanceLock) {
            if ((ir != null) && (mIccRecords != ir)) {
+142 −126
Original line number Diff line number Diff line
@@ -369,11 +369,6 @@ public class SatelliteController extends Handler {
    private final CommandsInterface mCi;
    private ContentResolver mContentResolver;
    private final DeviceStateMonitor mDSM;
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected final Object mSatellitePhoneLock = new Object();
    @GuardedBy("mSatellitePhoneLock")
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected Phone mSatellitePhone = null;
    private SatelliteOptimizedApplicationsTracker mSatelliteOptimizedApplicationsTracker;

    /** All the atomic variables are declared here. */
@@ -448,6 +443,31 @@ public class SatelliteController extends Handler {
            SubscriptionManager.INVALID_SUBSCRIPTION_ID);
    protected AtomicInteger mResultReceiverTotalCount = new AtomicInteger(0);

    /** All the variables that require lock are declared here. */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected final Object mSatellitePhoneLock = new Object();
    @GuardedBy("mSatellitePhoneLock")
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected Phone mSatellitePhone = null;
    private final Object mSatelliteCapabilitiesLock = new Object();
    @GuardedBy("mSatelliteCapabilitiesLock")
    private SatelliteCapabilities mSatelliteCapabilities;
    private final Object mNtnSignalsStrengthLock = new Object();
    @GuardedBy("mNtnSignalsStrengthLock")
    private NtnSignalStrength mNtnSignalStrength =
            new NtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE);
    @NonNull private final Object mCarrierConfigArrayLock = new Object();
    @GuardedBy("mCarrierConfigArrayLock")
    @NonNull private final SparseArray<PersistableBundle> mCarrierConfigArray = new SparseArray<>();
    private final Object mCarrierRoamingNtnAllSatellitePlmnSetLock = new Object();
    @GuardedBy("mCarrierRoamingNtnAllSatellitePlmnSetLock")
    private Set<String> mCarrierRoamingNtnAllSatellitePlmnSet = null;
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected final Object mSatelliteAccessConfigLock = new Object();
    @GuardedBy("mSatelliteAccessConfigLock")
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected List<Integer> mCurrentLocationTagIds = new ArrayList();

    private final Object mSatelliteEnabledRequestLock = new Object();
    /* This variable is used to store the first enable request that framework has received in the
     * current session.
@@ -546,24 +566,14 @@ public class SatelliteController extends Handler {
            mSatModeCapabilitiesForCarrierRoaming = new ConcurrentHashMap<>();


    private final Object mSatelliteCapabilitiesLock = new Object();
    @GuardedBy("mSatelliteCapabilitiesLock")
    private SatelliteCapabilities mSatelliteCapabilities;
    private final Object mNtnSignalsStrengthLock = new Object();
    @GuardedBy("mNtnSignalsStrengthLock")
    private NtnSignalStrength mNtnSignalStrength =
            new NtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE);
    @NonNull private final Object mSupportedSatelliteServicesLock = new Object();
    @NonNull private final List<String> mSatellitePlmnListFromOverlayConfig;
    @NonNull private final CarrierConfigManager mCarrierConfigManager;
    @NonNull private final CarrierConfigManager.CarrierConfigChangeListener
            mCarrierConfigChangeListener;
    @NonNull private final ConfigProviderAdaptor.Callback mConfigDataUpdatedCallback;
    @NonNull private final Object mCarrierConfigArrayLock = new Object();
    @NonNull
    private final SubscriptionManager.OnSubscriptionsChangedListener mSubscriptionsChangedListener;
    @GuardedBy("mCarrierConfigArrayLock")
    @NonNull private final SparseArray<PersistableBundle> mCarrierConfigArray = new SparseArray<>();

    /** Key: Subscription ID, value: set of restriction reasons for satellite communication.*/
    @NonNull private final ConcurrentHashMap<Integer, Set<Integer>>
@@ -691,10 +701,6 @@ public class SatelliteController extends Handler {
    private String mSatelliteGatewayServicePackageName = "";
    private String mOverriddenSatelliteGatewayServicePackageName = "";

    private final Object mCarrierRoamingNtnAllSatellitePlmnSetLock = new Object();
    @GuardedBy("mCarrierRoamingNtnAllSatellitePlmnSetLock")
    private Set<String> mCarrierRoamingNtnAllSatellitePlmnSet = null;

    // Data Plan types at entitlement for the plmn allowed
    public static final int SATELLITE_DATA_PLAN_METERED = 0;
    public static final int SATELLITE_DATA_PLAN_UNMETERED = 1;
@@ -757,12 +763,6 @@ public class SatelliteController extends Handler {
    // device.
    private List<DeviceState> mDeviceStates = new ArrayList();

    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected final Object mSatelliteAccessConfigLock = new Object();
    @GuardedBy("mSatelliteAccessConfigLock")
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected List<Integer> mCurrentLocationTagIds = new ArrayList();

    @Nullable
    private AlarmManager mAlarmManager;
    @NonNull
@@ -884,9 +884,7 @@ public class SatelliteController extends Handler {
        mContext = context;
        mFeatureFlags = featureFlags;
        Phone phone = SatelliteServiceUtils.getPhone();
        synchronized (mSatellitePhoneLock) {
            mSatellitePhone = phone;
        }
        setSatellitePhone(phone);
        mCi = phone.mCi;
        mDSM = phone.getDeviceStateMonitor();
        // Create the SatelliteModemInterface singleton, which is used to manage connections
@@ -975,11 +973,8 @@ public class SatelliteController extends Handler {
            try {
                setNtnSmsSupportedByMessagesAppCache(mSharedPreferences.getBoolean(
                        NTN_SMS_SUPPORTED_BY_MESSAGES_APP_KEY, false));

                synchronized (mCarrierRoamingNtnAllSatellitePlmnSetLock) {
                    mCarrierRoamingNtnAllSatellitePlmnSet = mSharedPreferences.getStringSet(
                            CARRIER_ROAMING_NTN_ALL_SATELLITE_PLMN_SET_KEY, new HashSet<>());
                }
                setCarrierRoamingNtnAllSatellitePlmnSet(mSharedPreferences.getStringSet(
                        CARRIER_ROAMING_NTN_ALL_SATELLITE_PLMN_SET_KEY, new HashSet<>()));
            } catch (Exception ex) {
                plogd("SatelliteController constructor: "
                        + "cannot get default shared preferences. e" + ex);
@@ -1753,10 +1748,7 @@ public class SatelliteController extends Handler {
                    } else {
                        SatelliteCapabilities capabilities = (SatelliteCapabilities) ar.result;
                        mNeedsSatellitePointing.set(capabilities.isPointingRequired());

                        synchronized (mSatelliteCapabilitiesLock) {
                            mSatelliteCapabilities = capabilities;
                        }
                        setSatelliteCapabilities(capabilities);
                        overrideSatelliteCapabilitiesIfApplicable();
                        if (DBG) plogd("getSatelliteCapabilities: " + getSatelliteCapabilities());
                        bundle.putParcelable(SatelliteManager.KEY_SATELLITE_CAPABILITIES,
@@ -1922,30 +1914,24 @@ public class SatelliteController extends Handler {
                ResultReceiver result = (ResultReceiver) request.argument;
                int errorCode =  SatelliteServiceUtils.getSatelliteError(ar,
                        "requestNtnSignalStrength");

                if (errorCode == SATELLITE_RESULT_SUCCESS) {
                    NtnSignalStrength ntnSignalStrength = (NtnSignalStrength) ar.result;
                    if (ntnSignalStrength != null) {
                        synchronized (mNtnSignalsStrengthLock) {
                            mNtnSignalStrength = ntnSignalStrength;
                        }
                        setNtnSignalStrength(ntnSignalStrength);
                        Bundle bundle = new Bundle();
                        bundle.putParcelable(KEY_NTN_SIGNAL_STRENGTH, ntnSignalStrength);
                        result.send(SATELLITE_RESULT_SUCCESS, bundle);
                    } else {
                        synchronized (mNtnSignalsStrengthLock) {
                            if (mNtnSignalStrength.getLevel() != NTN_SIGNAL_STRENGTH_NONE) {
                                mNtnSignalStrength = new NtnSignalStrength(
                                        NTN_SIGNAL_STRENGTH_NONE);
                            }
                        if (getNtnSignalStrength().getLevel() != NTN_SIGNAL_STRENGTH_NONE) {
                            setNtnSignalStrength(new NtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE));
                        }
                        ploge("EVENT_REQUEST_NTN_SIGNAL_STRENGTH_DONE: ntnSignalStrength is null");
                        result.send(SatelliteManager.SATELLITE_RESULT_REQUEST_FAILED, null);
                    }
                } else {
                    synchronized (mNtnSignalsStrengthLock) {
                        if (mNtnSignalStrength.getLevel() != NTN_SIGNAL_STRENGTH_NONE) {
                            mNtnSignalStrength = new NtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE);
                        }
                    if (getNtnSignalStrength().getLevel() != NTN_SIGNAL_STRENGTH_NONE) {
                        setNtnSignalStrength(new NtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE));
                    }
                    result.send(errorCode, null);
                }
@@ -2036,7 +2022,7 @@ public class SatelliteController extends Handler {
            }

            case EVENT_NOTIFY_NTN_ELIGIBILITY_HYSTERESIS_TIMED_OUT: {
                boolean eligible = isCarrierRoamingNtnEligible(mSatellitePhone);
                boolean eligible = isCarrierRoamingNtnEligible(getSatellitePhone());
                plogd("EVENT_NOTIFY_NTN_ELIGIBILITY_HYSTERESIS_TIMED_OUT:"
                        + " isCarrierRoamingNtnEligible=" + eligible);
                updateLastNotifiedNtnEligibilityAndNotify(eligible);
@@ -3795,14 +3781,13 @@ public class SatelliteController extends Handler {

        /* In case cache is available, it is not needed to request non-terrestrial signal strength
        to modem */
        synchronized (mNtnSignalsStrengthLock) {
            if (mNtnSignalStrength.getLevel() != NTN_SIGNAL_STRENGTH_NONE) {
        NtnSignalStrength ntnSignalStrength = getNtnSignalStrength();
        if (ntnSignalStrength.getLevel() != NTN_SIGNAL_STRENGTH_NONE) {
            Bundle bundle = new Bundle();
                bundle.putParcelable(KEY_NTN_SIGNAL_STRENGTH, mNtnSignalStrength);
            bundle.putParcelable(KEY_NTN_SIGNAL_STRENGTH, ntnSignalStrength);
            result.send(SATELLITE_RESULT_SUCCESS, bundle);
            return;
        }
        }

        Phone phone = SatelliteServiceUtils.getPhone();
        sendRequestAsync(CMD_REQUEST_NTN_SIGNAL_STRENGTH, result, phone);
@@ -3829,15 +3814,14 @@ public class SatelliteController extends Handler {
        int error = evaluateOemSatelliteRequestAllowed(false);
        if (error == SATELLITE_RESULT_SUCCESS) {
            mNtnSignalStrengthChangedListeners.put(callback.asBinder(), callback);
            synchronized (mNtnSignalsStrengthLock) {
            NtnSignalStrength ntnSignalStrength = getNtnSignalStrength();
            try {
                    callback.onNtnSignalStrengthChanged(mNtnSignalStrength);
                    plogd("registerForNtnSignalStrengthChanged: " + mNtnSignalStrength);
                callback.onNtnSignalStrengthChanged(ntnSignalStrength);
                plogd("registerForNtnSignalStrengthChanged: " + ntnSignalStrength);
            } catch (RemoteException ex) {
                ploge("registerForNtnSignalStrengthChanged: RemoteException ex="
                        + ex);
            }
            }
        } else {
            throw new RemoteException(new IllegalStateException("registration fails: " + error));
        }
@@ -3987,9 +3971,7 @@ public class SatelliteController extends Handler {
                + provisioned);
        mIsSatelliteSupported = null;
        mIsSatelliteEnabled = null;
        synchronized (mSatelliteCapabilitiesLock) {
            mSatelliteCapabilities = null;
        }
        setSatelliteCapabilities(null);
        mSatelliteModemInterface.setSatelliteServicePackageName(servicePackageName);
        return true;
    }
@@ -5394,7 +5376,7 @@ public class SatelliteController extends Handler {
            handleEntireProvisionMetricReport();
        }
        selectBindingSatelliteSubscription(false);
        evaluateCarrierRoamingNtnEligibilityChange();
        handleCarrierRoamingNtnAvailableServicesChanged();
    }

    private void updateCachedDeviceProvisionStatus() {
@@ -5467,11 +5449,9 @@ public class SatelliteController extends Handler {
        }
    }

    private void handleEventNtnSignalStrengthChanged(NtnSignalStrength ntnSignalStrength) {
    private void handleEventNtnSignalStrengthChanged(@NonNull NtnSignalStrength ntnSignalStrength) {
        logd("handleEventNtnSignalStrengthChanged: ntnSignalStrength=" + ntnSignalStrength);
        synchronized (mNtnSignalsStrengthLock) {
            mNtnSignalStrength = ntnSignalStrength;
        }
        setNtnSignalStrength(ntnSignalStrength);
        mSessionMetricsStats.updateMaxNtnSignalStrengthLevel(ntnSignalStrength.getLevel());

        List<INtnSignalStrengthCallback> deadCallersList = new ArrayList<>();
@@ -5491,9 +5471,7 @@ public class SatelliteController extends Handler {
    private void handleEventSatelliteCapabilitiesChanged(SatelliteCapabilities capabilities) {
        plogd("handleEventSatelliteCapabilitiesChanged()");

        synchronized (mSatelliteCapabilitiesLock) {
            mSatelliteCapabilities = capabilities;
        }
        setSatelliteCapabilities(capabilities);
        overrideSatelliteCapabilitiesIfApplicable();

        SatelliteCapabilities satelliteCapabilities = getSatelliteCapabilities();
@@ -5889,11 +5867,15 @@ public class SatelliteController extends Handler {
                plogd("persistCarrierRoamingNtnAllSatellitePlmnSet: ex=" + ex);
            }

            setCarrierRoamingNtnAllSatellitePlmnSet(allSatellitePlmnSet);
        }
    }

    private void setCarrierRoamingNtnAllSatellitePlmnSet(Set<String> allSatellitePlmnSet) {
        synchronized (mCarrierRoamingNtnAllSatellitePlmnSetLock) {
            mCarrierRoamingNtnAllSatellitePlmnSet = allSatellitePlmnSet;
        }
    }
    }

    private Set<String> getCarrierRoamingNtnAllSatellitePlmnSetFromStorage() {
        synchronized (mCarrierRoamingNtnAllSatellitePlmnSetLock) {
@@ -5918,12 +5900,9 @@ public class SatelliteController extends Handler {
                plogd("getCarrierRoamingNtnAllSatellitePlmnSetFromStorage: ex=" + ex);
            }

            synchronized (mCarrierRoamingNtnAllSatellitePlmnSetLock) {
                mCarrierRoamingNtnAllSatellitePlmnSet = allSatellitePlmnSet;
                plogd("getCarrierRoamingNtnAllSatellitePlmnSetFromStorage: "
                        + mCarrierRoamingNtnAllSatellitePlmnSet);
                return mCarrierRoamingNtnAllSatellitePlmnSet;
            }
            setCarrierRoamingNtnAllSatellitePlmnSet(allSatellitePlmnSet);
            plogd("getCarrierRoamingNtnAllSatellitePlmnSetFromStorage: " + allSatellitePlmnSet);
            return allSatellitePlmnSet;
        }
    }

@@ -6983,7 +6962,6 @@ public class SatelliteController extends Handler {
        }

        int selectedSatelliteSubId = getSelectedSatelliteSubId();
        synchronized (mSatellitePhoneLock) {
        plogd("notifyNtnEligibility: phoneId=" + satellitePhone.getPhoneId()
                + " currentNtnEligibility=" + currentNtnEligibility);
        Boolean lastNotifiedNtnEligibility = getLastNotifiedNtnEligibility();
@@ -6996,7 +6974,6 @@ public class SatelliteController extends Handler {
                    currentNtnEligibility);
        }
    }
    }

    /** Return last notified ntn eligibility. */
    public boolean getLastNotifiedNtnEligibility(@NonNull Phone phone) {
@@ -7675,7 +7652,7 @@ public class SatelliteController extends Handler {
     */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    @NonNull
    public PersistableBundle getPersistableBundle(int subId) {
    protected PersistableBundle getPersistableBundle(int subId) {
        synchronized (mCarrierConfigArrayLock) {
            PersistableBundle config = mCarrierConfigArray.get(subId);
            if (config == null) {
@@ -8465,9 +8442,7 @@ public class SatelliteController extends Handler {
     */
    public boolean isCarrierSatelliteAvailableAtCurrentLocation(
        List<Integer> carrierTagIds) {
        synchronized (mSatelliteAccessConfigLock) {
            return !Collections.disjoint(carrierTagIds, mCurrentLocationTagIds);
        }
        return !Collections.disjoint(carrierTagIds, getCurrentLocationTagIds());
    }

    private int getSubIdFromSubscriberId(String subscriberId) {
@@ -8707,10 +8682,25 @@ public class SatelliteController extends Handler {

    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected void setSatellitePhone(int subId) {
        Phone phone = SatelliteServiceUtils.getPhone(subId);
        setSatellitePhone(phone);
        plogd("setSatellitePhone: phoneId=" + (phone != null
                ? phone.getPhoneId() : "null") + ", subId=" + subId);
    }

    /** set satellite phone */
    private void setSatellitePhone(@Nullable Phone phone) {
        synchronized (mSatellitePhoneLock) {
            mSatellitePhone = SatelliteServiceUtils.getPhone(subId);
            plogd("mSatellitePhone: phoneId=" + (mSatellitePhone != null
                      ? mSatellitePhone.getPhoneId() : "null") + ", subId=" + subId);
            mSatellitePhone = phone;
        }
    }

    /** return satellite phone */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    @Nullable
    protected Phone getSatellitePhone() {
        synchronized (mSatellitePhoneLock) {
            return mSatellitePhone;
        }
    }

@@ -8846,14 +8836,6 @@ public class SatelliteController extends Handler {
        return false;
    }

    /** return satellite phone */
    @Nullable
    public Phone getSatellitePhone() {
        synchronized (mSatellitePhoneLock) {
            return mSatellitePhone;
        }
    }

    /** Start PointingUI if it is required. */
    public void startPointingUI() {
        plogd("startPointingUI: mNeedsSatellitePointing=" + mNeedsSatellitePointing.get()
@@ -8958,22 +8940,33 @@ public class SatelliteController extends Handler {
    private void handleSatelliteAccessConfigUpdateResult(
        SatelliteAccessConfiguration satelliteAccessConfig) {
        if(satelliteAccessConfig != null) {
            synchronized (mSatelliteAccessConfigLock) {
            plogd("handleSatelliteAccessConfigUpdateResult:" + " satelliteAccessConfig="
                    + satelliteAccessConfig);
            List<Integer> tagIds = satelliteAccessConfig.getTagIds();
                if (!mCurrentLocationTagIds.equals(tagIds)) {
                    mCurrentLocationTagIds = tagIds;
            if (!getCurrentLocationTagIds().equals(tagIds)) {
                setCurrentLocationTagIds(tagIds);
                sendMessageDelayed(obtainMessage(CMD_EVALUATE_ESOS_PROFILES_PRIORITIZATION),
                        mEvaluateEsosProfilesPrioritizationDurationMillis.get());
            }
            }
        } else {
                plogd("handleSatelliteAccessConfigUpdateResult: "
                    + "satelliteAccessConfiguration is null");
        }
    }

    private void setCurrentLocationTagIds(@NonNull List<Integer> currentLocationTagIds) {
        synchronized (mSatelliteAccessConfigLock) {
            mCurrentLocationTagIds = currentLocationTagIds;
        }
    }

    @NonNull
    private List<Integer> getCurrentLocationTagIds() {
        synchronized (mSatelliteAccessConfigLock) {
            return mCurrentLocationTagIds;
        }
    }

    private void handleEventSatelliteRegistrationFailure(int causeCode) {
        plogd("handleEventSatelliteRegistrationFailure: " + causeCode);

@@ -9188,12 +9181,11 @@ public class SatelliteController extends Handler {
            } else {
                mOverrideNtnEligibility.set(state);
            }
            synchronized (mSatellitePhoneLock) {
                if (this.mSatellitePhone != null) {
            Phone satellitePhone = getSatellitePhone();
            if (satellitePhone != null) {
                updateLastNotifiedNtnEligibilityAndNotify(state);
            }
        }
        }
        return true;
    }

@@ -9414,6 +9406,12 @@ public class SatelliteController extends Handler {
                plogd("isP2PSmsDisallowedOnCarrierRoamingNtn: APKs do not supports P2P");
                return true;
            }

            if (!isSubscriptionProvisioned(subId)) {
                plogd("isP2PSmsDisallowedOnCarrierRoamingNtn: subId=" + subId
                        + " is not provisioned.");
                return true;
            }
        }
        plogd("isP2PSmsDisallowedOnCarrierRoamingNtn: P2P is supported");
        return false;
@@ -9502,15 +9500,26 @@ public class SatelliteController extends Handler {
        logd("notifyEnabledStateChanged to " + isEnabled);
    }

    private void setNtnSignalStrength(@NonNull NtnSignalStrength ntnSignalStrength) {
        synchronized (mNtnSignalsStrengthLock) {
            mNtnSignalStrength = ntnSignalStrength;
        }
    }

    @NonNull
    private NtnSignalStrength getNtnSignalStrength() {
        synchronized (mNtnSignalsStrengthLock) {
            return mNtnSignalStrength;
        }
    }

    private NtnSignalStrength getCarrierRoamingNtnSignalStrength(@NonNull Phone phone) {
        NtnSignalStrength carrierRoamingNtnSignalStrength = new NtnSignalStrength(
                NTN_SIGNAL_STRENGTH_NONE);

        if (isInCarrierRoamingNbIotNtn(phone)) {
            if (isInConnectedState()) {
                synchronized (mNtnSignalsStrengthLock) {
                    carrierRoamingNtnSignalStrength = mNtnSignalStrength;
                }
                carrierRoamingNtnSignalStrength = getNtnSignalStrength();
                plogd("getCarrierRoamingNtnSignalStrength[phoneId=" + phone.getPhoneId()
                        + "]: in carrier roaming nb iot ntn mode.");
            }
@@ -9650,6 +9659,13 @@ public class SatelliteController extends Handler {
        }
    }

    private void setSatelliteCapabilities(@Nullable SatelliteCapabilities capabilities) {
        synchronized (mSatelliteCapabilitiesLock) {
            mSatelliteCapabilities = capabilities;
        }
    }

    @Nullable
    private SatelliteCapabilities getSatelliteCapabilities() {
        synchronized (mSatelliteCapabilitiesLock) {
            return mSatelliteCapabilities;
Loading