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

Commit 167fbbc3 authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by Hakjun Choi
Browse files

Remove check condition for triggering satellite SOS message recommender

In case device is connected and registered to IMS and then put the device into shield box and tested immediately,
IMS registration status is not getting updated to not registered immediately on OOS as this is handled with hysteresis timer.

This is causing handover logic to think voice call is still possible and did not reccommend the satellite.

Bug: 338469596
Test: atest SatelliteSOSMessageRecommenderTest
      manual test using shieldbox to set device which has IMS registered state in OOS state then check whether satellite recommender is exposed as inteded

Change-Id: Ia03b383549efe8195513e959d917e3c2522e6ccc
parent 54127e96
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -282,7 +282,7 @@ public class SatelliteSOSMessageRecommender extends Handler {
            updateSatelliteViaCarrierAvailability();

            boolean isDialerNotified = false;
            if (!isImsRegistered() && !isCellularAvailable()
            if (!isCellularAvailable()
                    && isSatelliteAllowed()
                    && (isSatelliteViaOemAvailable() || isSatelliteViaCarrierAvailable())
                    && shouldTrackCall(mEmergencyConnection.getState())) {
@@ -441,10 +441,12 @@ public class SatelliteSOSMessageRecommender extends Handler {
                int state = serviceState.getState();
                if ((state == STATE_IN_SERVICE || state == STATE_EMERGENCY_ONLY)
                        && !serviceState.isUsingNonTerrestrialNetwork()) {
                    logv("isCellularAvailable true");
                    return true;
                }
            }
        }
        logv("isCellularAvailable false");
        return false;
    }

@@ -479,9 +481,10 @@ public class SatelliteSOSMessageRecommender extends Handler {
    }

    private synchronized void handleStateChangedEventForHysteresisTimer() {
        if (!isImsRegistered() && !isCellularAvailable()) {
        if (!isCellularAvailable()) {
            startTimer();
        } else {
            logv("handleStateChangedEventForHysteresisTimer stopTimer");
            stopTimer();
        }
    }
@@ -494,6 +497,7 @@ public class SatelliteSOSMessageRecommender extends Handler {
            sendMessageDelayed(obtainMessage(EVENT_TIME_OUT), mTimeoutMillis);
            mCountOfTimerStarted++;
            mIsTimerTimedOut = false;
            logd("startTimer mCountOfTimerStarted=" + mCountOfTimerStarted);
        }
    }

@@ -744,6 +748,10 @@ public class SatelliteSOSMessageRecommender extends Handler {
                || SystemProperties.getBoolean(BOOT_ALLOW_MOCK_MODEM_PROPERTY, false));
    }

    private static void logv(@NonNull String log) {
        Rlog.v(TAG, log);
    }

    private static void logd(@NonNull String log) {
        Rlog.d(TAG, log);
    }
+22 −7
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.internal.telephony.satellite;

import static android.telephony.ServiceState.STATE_IN_SERVICE;
import static android.telephony.ServiceState.STATE_OUT_OF_SERVICE;
import static android.telephony.TelephonyManager.EXTRA_EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE;
import static android.telephony.TelephonyManager.EXTRA_EMERGENCY_CALL_TO_SATELLITE_LAUNCH_INTENT;
import static android.telephony.satellite.SatelliteManager.EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_SOS;
@@ -141,8 +143,8 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        when(mPhone2.getPhoneId()).thenReturn(PHONE_ID2);
        mTestSOSMessageRecommender = new TestSOSMessageRecommender(mContext, Looper.myLooper(),
                mTestSatelliteController, mTestImsManager);
        when(mServiceState.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
        when(mServiceState2.getState()).thenReturn(ServiceState.STATE_OUT_OF_SERVICE);
        when(mServiceState.getState()).thenReturn(STATE_OUT_OF_SERVICE);
        when(mServiceState2.getState()).thenReturn(STATE_OUT_OF_SERVICE);
        when(mPhone.isImsRegistered()).thenReturn(false);
        when(mPhone2.isImsRegistered()).thenReturn(false);
    }
@@ -291,7 +293,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
    }

    @Test
    public void testImsRegistrationStateChangedBeforeTimeout() {
    public void testNetworkStateChangedBeforeTimeout() {
        mTestSOSMessageRecommender.isSatelliteAllowedCallback = null;
        mTestSOSMessageRecommender.onEmergencyCallStarted(mTestConnection);
        processAllMessages();
@@ -302,6 +304,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        assertNull(mTestSOSMessageRecommender.isSatelliteAllowedCallback);

        when(mPhone.isImsRegistered()).thenReturn(true);
        when(mServiceState.getState()).thenReturn(STATE_IN_SERVICE);
        mTestImsManager.sendImsRegistrationStateChangedEvent(0, true);
        processAllMessages();

@@ -310,19 +313,31 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted());
        assertUnregisterForStateChangedEventsTriggered(mPhone, 0, 0, 0);

        when(mPhone.isImsRegistered()).thenReturn(false);
        when(mServiceState.getState()).thenReturn(STATE_OUT_OF_SERVICE);
        mTestImsManager.sendImsRegistrationStateChangedEvent(0, true);
        processAllMessages();

        assertFalse(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE));
        assertTrue(mTestSOSMessageRecommender.isTimerStarted());
        assertEquals(2, mTestSOSMessageRecommender.getCountOfTimerStarted());
        assertUnregisterForStateChangedEventsTriggered(mPhone, 0, 0, 0);

        when(mPhone.isImsRegistered()).thenReturn(false);
        when(mPhone2.isImsRegistered()).thenReturn(true);
        when(mServiceState.getState()).thenReturn(STATE_IN_SERVICE);
        mTestImsManager.sendImsRegistrationStateChangedEvent(1, true);
        processAllMessages();
        assertFalse(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE));
        assertFalse(mTestSOSMessageRecommender.isTimerStarted());
        assertEquals(1, mTestSOSMessageRecommender.getCountOfTimerStarted());
        assertEquals(2, mTestSOSMessageRecommender.getCountOfTimerStarted());
        assertUnregisterForStateChangedEventsTriggered(mPhone, 0, 0, 0);

        when(mPhone2.isImsRegistered()).thenReturn(false);
        when(mServiceState.getState()).thenReturn(STATE_OUT_OF_SERVICE);
        mTestImsManager.sendImsRegistrationStateChangedEvent(1, false);
        processAllMessages();
        assertEquals(2, mTestSOSMessageRecommender.getCountOfTimerStarted());
        assertEquals(3, mTestSOSMessageRecommender.getCountOfTimerStarted());
        assertNull(mTestSOSMessageRecommender.isSatelliteAllowedCallback);

        // Move Location service to emergency mode
@@ -436,7 +451,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
    @Test
    public void testCellularServiceStateChangedBeforeTimeout_InServiceToOutOfService() {
        testCellularServiceStateChangedBeforeTimeout(
                ServiceState.STATE_IN_SERVICE, ServiceState.STATE_OUT_OF_SERVICE);
                ServiceState.STATE_IN_SERVICE, STATE_OUT_OF_SERVICE);
    }

    @Test
@@ -448,7 +463,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
    @Test
    public void testCellularServiceStateChangedBeforeTimeout_EmergencyOnlyToOutOfService() {
        testCellularServiceStateChangedBeforeTimeout(
                ServiceState.STATE_EMERGENCY_ONLY, ServiceState.STATE_OUT_OF_SERVICE);
                ServiceState.STATE_EMERGENCY_ONLY, STATE_OUT_OF_SERVICE);
    }

    @Test