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

Commit 0bef4430 authored by joonhunshin's avatar joonhunshin Committed by Joonhun Shin
Browse files

Implement API for SatelliteManager#requestIsEmergencyModeEnabled()

Bug: 351703546
Test: atest SatelliteControllerTest
Flag: com.android.internal.telephony.flags.oem_enabled_satellite_flag
Change-Id: I1ff586d6113146537f8ecbfddb200632faabc20f
parent 34db3634
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -1777,6 +1777,28 @@ public class SatelliteController extends Handler {
        return mIsDemoModeEnabled;
    }

    /**
     * Request to get whether the satellite enabled request is for emergency or not.
     *
     * @param subId The subId of the subscription to check whether request is for emergency.
     * @param result The result receiver that returns whether the request is for emergency
     *               if the request is successful or an error code if the request failed.
     */
    public void requestIsEmergencyModeEnabled(int subId, @NonNull ResultReceiver result) {
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            plogd("requestIsEmergencyModeEnabled: oemEnabledSatelliteFlag is disabled");
            result.send(SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED, null);
            return;
        }

        synchronized (mSatelliteEnabledRequestLock) {
            Bundle bundle = new Bundle();
            bundle.putBoolean(SatelliteManager.KEY_EMERGENCY_MODE_ENABLED,
                    getRequestIsEmergency());
            result.send(SATELLITE_RESULT_SUCCESS, bundle);
        }
    }

    /**
     * Request to get whether the satellite service is supported on the device.
     *
+54 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_
import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_NONE;
import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_POOR;
import static android.telephony.satellite.SatelliteManager.KEY_DEMO_MODE_ENABLED;
import static android.telephony.satellite.SatelliteManager.KEY_EMERGENCY_MODE_ENABLED;
import static android.telephony.satellite.SatelliteManager.KEY_NTN_SIGNAL_STRENGTH;
import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_CAPABILITIES;
import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_COMMUNICATION_ALLOWED;
@@ -453,6 +454,23 @@ public class SatelliteControllerTest extends TelephonyTest {
        }
    };

    private boolean mRequestIsEmergency = false;
    private ResultReceiver mRequestIsEmergencyReceiver = new ResultReceiver(null) {
        @Override
        protected void onReceiveResult(int resultCode, Bundle resultData) {
            logd("requestIsEmergencyReceiver: resultCode=" + resultCode);
            if (resultCode == SATELLITE_RESULT_SUCCESS) {
                if (resultData.containsKey(KEY_EMERGENCY_MODE_ENABLED)) {
                    mRequestIsEmergency = resultData.getBoolean(
                            KEY_EMERGENCY_MODE_ENABLED);
                } else {
                    loge("KEY_EMERGENCY_MODE_ENABLED does not exist.");

                }
            }
        }
    };

    @Before
    public void setUp() throws Exception {
        super.setUp(getClass().getSimpleName());
@@ -1025,6 +1043,42 @@ public class SatelliteControllerTest extends TelephonyTest {
        verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS);
    }

    @Test
    public void testGetRequestIsEmergency() {
        mIsSatelliteEnabledSemaphore.drainPermits();
        doReturn(true).when(mFeatureFlags).carrierRoamingNbIotNtn();

        // Successfully enable satellite
        mIIntegerConsumerResults.clear();
        setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
        verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS);

        // Set provisioned state
        sendProvisionedStateChangedEvent(true, null);
        processAllMessages();
        verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS);

        mSatelliteControllerUT.setSettingsKeyForSatelliteModeCalled = false;
        mSatelliteControllerUT.setSettingsKeyToAllowDeviceRotationCalled = false;
        // Set response for enabling request
        setUpResponseForRequestSatelliteEnabled(true, false, true/*emergency*/,
                SATELLITE_RESULT_SUCCESS);
        // Request satellite enabling for emergency
        mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, true/*isEmergency*/,
                mIIntegerConsumer);
        mSatelliteControllerUT.setSatelliteSessionController(mMockSatelliteSessionController);
        processAllMessages();

        assertTrue(waitForIIntegerConsumerResult(1));
        assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0));
        verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS);

        // Verify satellite enabled for emergency
        assertTrue(mSatelliteControllerUT.getRequestIsEmergency());
        mSatelliteControllerUT.requestIsEmergencyModeEnabled(SUB_ID, mRequestIsEmergencyReceiver);
        assertTrue(mRequestIsEmergency);
    }

    @Test
    public void testRequestSatelliteCapabilities() {
        mSatelliteCapabilitiesSemaphore.drainPermits();