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

Commit 4afd6be9 authored by arunvoddu's avatar arunvoddu
Browse files

adb shell command to trigger phone.notifyCarrierRoamingNtnEligibleStateChanged API.

adb shell cmd phone set-satellite-access-restriction-checking-result true

Flag: EXEMPT bugfix
Bug: 370033218
Test: Manually verified.
Change-Id: I5a3cf3769bb2a56706367c6b0307118bd5adecbe
parent 72d8e961
Loading
Loading
Loading
Loading
+36 −0
Original line number Diff line number Diff line
@@ -573,6 +573,7 @@ public class SatelliteController extends Handler {
    private static final String HOW_IT_WORKS_BUTTON = "how_it_works_button";
    private static final String ACTION_NOTIFICATION_CLICK = "action_notification_click";
    private static final String ACTION_NOTIFICATION_DISMISS = "action_notification_dismiss";
    private AtomicBoolean mOverrideNtnEligibility;
    private BroadcastReceiver
            mDefaultSmsSubscriptionChangedBroadcastReceiver = new BroadcastReceiver() {
                @Override
@@ -5347,6 +5348,11 @@ public class SatelliteController extends Handler {
            return;
        }

        if (mOverrideNtnEligibility != null) {
            mSatellitePhone.notifyCarrierRoamingNtnEligibleStateChanged(currentNtnEligibility);
            return;
        }

        synchronized (mSatellitePhoneLock) {
            if (mSatellitePhone == null) {
                ploge("notifyNtnEligibility: mSatellitePhone is null");
@@ -6516,6 +6522,11 @@ public class SatelliteController extends Handler {
            return false;
        }

        if (mOverrideNtnEligibility != null) {
            // TODO need to send the value from `mOverrideNtnEligibility` or simply true ?
            return true;
        }

        if (SatelliteServiceUtils.isCellularAvailable()) {
            plogd("isCarrierRoamingNtnEligible[phoneId=" + phone.getPhoneId()
                    + "]: cellular is available");
@@ -6745,4 +6756,29 @@ public class SatelliteController extends Handler {
            return !mWaitingForSatelliteModemOff;
        }
    }

    /**
     * Method to override the Carrier roaming Non-terrestrial network eligibility check
     *
     * @param state         flag to enable or disable the Ntn eligibility check.
     * @param resetRequired reset overriding the check with adb command.
     */
    public boolean overrideCarrierRoamingNtnEligibilityChanged(boolean state,
            boolean resetRequired) {
        Log.d(TAG, "overrideCarrierRoamingNtnEligibilityChanged state = " + state
                + "  resetRequired = " + resetRequired);
        if (resetRequired) {
            mOverrideNtnEligibility = null;
        } else {
            if (mOverrideNtnEligibility == null) {
                mOverrideNtnEligibility = new AtomicBoolean(state);
            } else {
                mOverrideNtnEligibility.set(state);
            }
            if (this.mSatellitePhone != null) {
                updateLastNotifiedNtnEligibilityAndNotify(state);
            }
        }
        return true;
    }
}
+27 −0
Original line number Diff line number Diff line
@@ -4037,6 +4037,33 @@ public class SatelliteControllerTest extends TelephonyTest {
        processAllMessages();

        assertTrue(mSatelliteControllerUT.isCarrierRoamingNtnEligible(mPhone));

        when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
        when(mServiceState2.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
        processAllMessages();
        assertFalse(mSatelliteControllerUT.isCarrierRoamingNtnEligible(mPhone));

        when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
        when(mServiceState2.getState()).thenReturn(ServiceState.STATE_IN_SERVICE);
        mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(true, false);
        processAllMessages();
        assertTrue(mSatelliteControllerUT.isCarrierRoamingNtnEligible(mPhone));
    }

    @Test
    public void testOverrideCarrierRoamingNtNEligibilityChange() {
        when(mFeatureFlags.carrierRoamingNbIotNtn()).thenReturn(true);
        mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(true, false);
        verify(mPhone, times(1)).notifyCarrierRoamingNtnEligibleStateChanged(eq(true));
        clearInvocations(mPhone);

        mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(false, false);
        verify(mPhone, times(1)).notifyCarrierRoamingNtnEligibleStateChanged(eq(false));
        clearInvocations(mPhone);

        mSatelliteControllerUT.overrideCarrierRoamingNtnEligibilityChanged(false, true);
        verify(mPhone, times(0)).notifyCarrierRoamingNtnEligibleStateChanged(eq(true));
        clearInvocations(mPhone);
    }

    @Test