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

Commit 290a5fad authored by Aishwarya Mallampati's avatar Aishwarya Mallampati Committed by Android Build Coastguard Worker
Browse files

Determine carrier roaming ntn eligibility only based on

selectedSatelliteSubId.

Bug: 388061432
Test: 388108484
Flag: EXEMPT bugfix
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:ae5a4ca421eba8bd3421d1372ea5f65551ff97e2)
Merged-In: I5b3e4921a028f368dd9c430c063a9e070f48f17b
Change-Id: I5b3e4921a028f368dd9c430c063a9e070f48f17b
parent d673c1e5
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -2993,14 +2993,11 @@ public class ServiceStateTracker extends Handler {

        String satellitePlmn = null;
        SatelliteModemStateListener satelliteModemStateListener = getSatelliteModemStateListener();
        if (combinedRegState == ServiceState.STATE_OUT_OF_SERVICE
                && satelliteModemStateListener != null
        if (satelliteModemStateListener != null
                && satelliteModemStateListener.isInConnectedState()) {
            // If device is connected to the nb-iot satellite,
            // 1) No service but nb-iot satellite is connected ->
            //    expected to show "Satellite" for demo mode.
            satellitePlmn = getSatelliteDisplayName();
        }
        log("updateCarrierDisplayName: satellitePlmn=" + satellitePlmn);

        if (mPhone.isPhoneTypeGsm()) {
            // The values of plmn/showPlmn change in different scenarios.
+16 −4
Original line number Diff line number Diff line
@@ -614,7 +614,8 @@ public class SatelliteController extends Handler {
            new ArrayList<>();
    // The ID of the satellite subscription that has highest priority and is provisioned.
    @GuardedBy("mSatelliteTokenProvisionedLock")
    private int mSelectedSatelliteSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected int mSelectedSatelliteSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    // The last ICC ID that framework configured to modem.
    @GuardedBy("mSatelliteTokenProvisionedLock")
    private String mLastConfiguredIccId;
@@ -7426,9 +7427,13 @@ public class SatelliteController extends Handler {
            selectedSubId = getNtnOnlySubscriptionId();
        }

        synchronized (mSatelliteTokenProvisionedLock) {
            mSelectedSatelliteSubId = selectedSubId;
        int preSelectedSatelliteSubId = getSelectedSatelliteSubId();
        setSelectedSatelliteSubId(selectedSubId);
        if (preSelectedSatelliteSubId != getSelectedSatelliteSubId()) {
            plogd("selectBindingSatelliteSubscription: SelectedSatelliteSubId changed");
            evaluateCarrierRoamingNtnEligibilityChange();
        }

        setSatellitePhone(selectedSubId);
        if (selectedSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
            int carrierId = getSatelliteCarrierId();
@@ -7714,6 +7719,13 @@ public class SatelliteController extends Handler {
        }
    }

    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected void setSelectedSatelliteSubId(int subId) {
        synchronized (mSatelliteTokenProvisionedLock) {
            mSelectedSatelliteSubId = subId;
        }
    }

    /** Return the carrier ID of the binding satellite subscription. */
    public int getSatelliteCarrierId() {
        synchronized (mSatelliteTokenProvisionedLock) {
@@ -7764,7 +7776,7 @@ public class SatelliteController extends Handler {
            return false;
        }

        int subId = phone.getSubId();
        int subId = getSelectedSatelliteSubId();
        if (!isSatelliteRoamingP2pSmSSupported(subId)) {
            plogd("isCarrierRoamingNtnEligible(" + subId + "): doesn't support P2P SMS");
            return false;
+28 −0
Original line number Diff line number Diff line
@@ -3590,6 +3590,34 @@ public class ServiceStateTrackerTest extends TelephonyTest {
        Bundle b = getExtrasFromLastSpnUpdateIntent();
        assertThat(b.getString(TelephonyManager.EXTRA_PLMN)).isEqualTo(SATELLITE_DISPLAY_NAME);
        assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue();

        // Override operator name to "Satellite" when registration state is IN_SERVICE.
        mSimulatedCommands.setVoiceRegState(
                NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING);
        mSimulatedCommands.setVoiceRadioTech(ServiceState.RIL_RADIO_TECHNOLOGY_LTE);
        mSimulatedCommands.setDataRegState(
                NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING);
        mSimulatedCommands.setDataRadioTech(ServiceState.RIL_RADIO_TECHNOLOGY_LTE);
        doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getState();
        doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getDataRegistrationState();
        doReturn("Skylo Technologies").when(mServiceState).getOperatorAlpha();

        mBundle.putBoolean(
                CarrierConfigManager.KEY_ENABLE_CARRIER_DISPLAY_NAME_RESOLVER_BOOL, false);
        mBundle.putBoolean(CarrierConfigManager.KEY_CARRIER_NAME_OVERRIDE_BOOL, true);
        mBundle.putString(CarrierConfigManager.KEY_CARRIER_NAME_STRING, "");
        sendCarrierConfigUpdate(PHONE_ID);

        callback.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING);
        waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());

        // update the spn
        sst.updateCarrierDisplayName();

        b = getExtrasFromLastSpnUpdateIntent();
        assertThat(b.getString(TelephonyManager.EXTRA_PLMN)).isEqualTo(SATELLITE_DISPLAY_NAME);
        assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue();
    }

}
+15 −6
Original line number Diff line number Diff line
@@ -4261,6 +4261,8 @@ public class SatelliteControllerTest extends TelephonyTest {
            );
        }
        mSatelliteControllerUT.setSatellitePhone(1);
        mSatelliteControllerUT.setSelectedSatelliteSubId(SUB_ID);
        mSatelliteControllerUT.isSatelliteProvisioned = true;
        mSatelliteControllerUT.setIsSatelliteAllowedState(true);
        processAllMessages();

@@ -4327,6 +4329,8 @@ public class SatelliteControllerTest extends TelephonyTest {
            );
        }
        mSatelliteControllerUT.setSatellitePhone(1);
        mSatelliteControllerUT.setSelectedSatelliteSubId(SUB_ID);
        mSatelliteControllerUT.isSatelliteProvisioned = true;
        mSatelliteControllerUT.isSatelliteAllowedCallback = null;
        setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
        mSatelliteControllerUT.setIsSatelliteAllowedState(true);
@@ -6169,6 +6173,8 @@ public class SatelliteControllerTest extends TelephonyTest {
        public String packageName = "com.example.app";
        public boolean isSatelliteBeingDisabled = false;
        public boolean mIsApplicationSupportsP2P = false;
        public int selectedSatelliteSubId = -1;
        public boolean isSatelliteProvisioned;

        TestSatelliteController(
                Context context, Looper looper, @NonNull FeatureFlags featureFlags) {
@@ -6231,13 +6237,16 @@ public class SatelliteControllerTest extends TelephonyTest {
        }

        @Override
        protected boolean isSubscriptionProvisioned(int subId) {
            synchronized (mSatellitePhoneLock) {
                if (mSatellitePhone.getSubId() == subId) {
                    return true;
        protected void setSelectedSatelliteSubId(int subId) {
            logd("setSelectedSatelliteSubId: subId=" + subId);
            synchronized (mSatelliteTokenProvisionedLock) {
                mSelectedSatelliteSubId = subId;
            }
        }
            return false;

        @Override
        protected boolean isSubscriptionProvisioned(int subId) {
            return isSatelliteProvisioned;
        }

        @Override