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

Commit 04465f66 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Allow satellite to bypass roaming settings" into main

parents 06456c32 06a41dc7
Loading
Loading
Loading
Loading
+22 −24
Original line number Diff line number Diff line
@@ -312,18 +312,19 @@ public class AutoDataSwitchController extends Handler {
                    (serviceState != null) && serviceState.isUsingNonTerrestrialNetwork();

            return switch (mDataRegState) {
                case NetworkRegistrationInfo.REGISTRATION_STATE_HOME -> {
                    if (isUsingNonTerrestrialNetwork) {
                        yield UsableState.NON_TERRESTRIAL;
                    }
                    yield UsableState.HOME;
                }
                case NetworkRegistrationInfo.REGISTRATION_STATE_HOME ->
                        isUsingNonTerrestrialNetwork
                                ? UsableState.NON_TERRESTRIAL : UsableState.HOME;
                case NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING -> {
                    if (mPhone.getDataRoamingEnabled()) {
                    // Satellite may bypass User's roaming settings
                    if (isUsingNonTerrestrialNetwork) {
                            yield UsableState.NON_TERRESTRIAL;
                        boolean byPassRoamingSettings = mPhone.getDataNetworkController()
                                .getDataConfigManager().isIgnoringDataRoamingSettingForSatellite();
                        if (byPassRoamingSettings) yield UsableState.NON_TERRESTRIAL;
                    }
                        yield UsableState.ROAMING_ENABLED;
                    if (mPhone.getDataRoamingEnabled()) {
                        yield isUsingNonTerrestrialNetwork
                                ? UsableState.NON_TERRESTRIAL : UsableState.ROAMING_ENABLED;
                    }
                    yield UsableState.NOT_USABLE;
                }
@@ -513,29 +514,29 @@ public class AutoDataSwitchController extends Handler {
        Object obj;
        int phoneId;
        switch (msg.what) {
            case EVENT_SERVICE_STATE_CHANGED:
            case EVENT_SERVICE_STATE_CHANGED -> {
                ar = (AsyncResult) msg.obj;
                phoneId = (int) ar.userObj;
                onServiceStateChanged(phoneId);
                break;
            case EVENT_DISPLAY_INFO_CHANGED:
            }
            case EVENT_DISPLAY_INFO_CHANGED -> {
                ar = (AsyncResult) msg.obj;
                phoneId = (int) ar.userObj;
                onDisplayInfoChanged(phoneId);
                break;
            case EVENT_SIGNAL_STRENGTH_CHANGED:
            }
            case EVENT_SIGNAL_STRENGTH_CHANGED -> {
                ar = (AsyncResult) msg.obj;
                phoneId = (int) ar.userObj;
                onSignalStrengthChanged(phoneId);
                break;
            case EVENT_EVALUATE_AUTO_SWITCH:
            }
            case EVENT_EVALUATE_AUTO_SWITCH -> {
                obj = mScheduledEventsToExtras.get(EVENT_EVALUATE_AUTO_SWITCH);
                if (obj instanceof EvaluateEventExtra extra) {
                    mScheduledEventsToExtras.remove(EVENT_EVALUATE_AUTO_SWITCH);
                    onEvaluateAutoDataSwitch(extra.evaluateReason);
                }
                break;
            case EVENT_STABILITY_CHECK_PASSED:
            }
            case EVENT_STABILITY_CHECK_PASSED -> {
                obj = mScheduledEventsToExtras.get(EVENT_STABILITY_CHECK_PASSED);
                if (obj instanceof StabilityEventExtra extra) {
                    int targetPhoneId = extra.targetPhoneId;
@@ -545,12 +546,9 @@ public class AutoDataSwitchController extends Handler {
                    mScheduledEventsToExtras.remove(EVENT_STABILITY_CHECK_PASSED);
                    mPhoneSwitcherCallback.onRequireValidation(targetPhoneId, needValidation);
                }
                break;
            case EVENT_SUBSCRIPTIONS_CHANGED:
                onSubscriptionsChanged();
                break;
            default:
                loge("Unexpected event " + msg.what);
            }
            case EVENT_SUBSCRIPTIONS_CHANGED -> onSubscriptionsChanged();
            default -> loge("Unexpected event " + msg.what);
        }
    }

+18 −1
Original line number Diff line number Diff line
@@ -294,7 +294,7 @@ public class AutoDataSwitchControllerTest extends TelephonyTest {
    }

    @Test
    public void testRoaming_prefer_roam_over_nonTerrestrial() {
    public void testRoaming_prefer_roam_over_satellite() {
        // DDS -> nDDS: Prefer Roaming over non-terrestrial
        prepareIdealUsesNonDdsCondition();
        mIsNonTerrestrialNetwork = true;
@@ -318,6 +318,23 @@ public class AutoDataSwitchControllerTest extends TelephonyTest {
        mIsNonTerrestrialNetwork = false;
    }

    @Test
    public void testRoaming_satellite_bypass_settings() {
        prepareIdealUsesNonDdsCondition();

        doReturn(true).when(mDataConfigManager).isIgnoringDataRoamingSettingForSatellite();
        doReturn(false).when(mPhone).getDataRoamingEnabled();

        mIsNonTerrestrialNetwork = true;
        serviceStateChanged(PHONE_1, NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING);
        mIsNonTerrestrialNetwork = false;
        serviceStateChanged(PHONE_2, NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING);
        processAllFutureMessages();

        verify(mMockedPhoneSwitcherCallback).onRequireValidation(PHONE_2, true/*needValidation*/);
    }


    @Test
    public void testRoaming_roaming_but_roam_disabled() {
        // Disable RAT + signalStrength base switching.