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

Commit 491a5ab2 authored by Sarah Chin's avatar Sarah Chin
Browse files

Check WFC enabled in getCombinedRegState

For IWLAN, return data in service only if WFC is enabled

Test: atest ServiceStateTrackerTest
Bug: 144004425
Change-Id: Ifded01d890193c2b18a36a5c87849dbdefe7d970
parent 60aa5ad8
Loading
Loading
Loading
Loading
+12 −3
Original line number Original line Diff line number Diff line
@@ -5487,7 +5487,8 @@ public class ServiceStateTracker extends Handler {
    }
    }


    /**
    /**
     * Consider dataRegState if voiceRegState is OOS to determine SPN to be displayed
     * Consider dataRegState if voiceRegState is OOS to determine SPN to be displayed.
     * If dataRegState is in service on IWLAN, also check for wifi calling enabled.
     * @param ss service state.
     * @param ss service state.
     */
     */
    protected int getCombinedRegState(ServiceState ss) {
    protected int getCombinedRegState(ServiceState ss) {
@@ -5496,9 +5497,17 @@ public class ServiceStateTracker extends Handler {
        if ((regState == ServiceState.STATE_OUT_OF_SERVICE
        if ((regState == ServiceState.STATE_OUT_OF_SERVICE
                || regState == ServiceState.STATE_POWER_OFF)
                || regState == ServiceState.STATE_POWER_OFF)
                && (dataRegState == ServiceState.STATE_IN_SERVICE)) {
                && (dataRegState == ServiceState.STATE_IN_SERVICE)) {
            if (ss.getDataNetworkType() == TelephonyManager.NETWORK_TYPE_IWLAN) {
                if (mPhone.getImsPhone() != null && mPhone.getImsPhone().isWifiCallingEnabled()) {
                    log("getCombinedRegState: return STATE_IN_SERVICE for IWLAN as "
                            + "Data is in service and WFC is enabled");
                    regState = dataRegState;
                }
            } else {
                log("getCombinedRegState: return STATE_IN_SERVICE as Data is in service");
                log("getCombinedRegState: return STATE_IN_SERVICE as Data is in service");
                regState = dataRegState;
                regState = dataRegState;
            }
            }
        }
        return regState;
        return regState;
    }
    }


+30 −19
Original line number Original line Diff line number Diff line
@@ -150,7 +150,7 @@ public class ServiceStateTrackerTest extends TelephonyTest {


    private static final int PHONE_ID = 0;
    private static final int PHONE_ID = 0;


    private static final String CARRIER_NAME_DISPLAY_NO_SERVICE = "no service";
    private static final String CARRIER_NAME_DISPLAY_NO_SERVICE = "No service";
    private static final String CARRIER_NAME_DISPLAY_EMERGENCY_CALL = "emergency call";
    private static final String CARRIER_NAME_DISPLAY_EMERGENCY_CALL = "emergency call";
    private static final String WIFI_CALLING_VOICE_FORMAT = "%s wifi calling";
    private static final String WIFI_CALLING_VOICE_FORMAT = "%s wifi calling";
    private static final String WIFI_CALLING_DATA_FORMAT = "%s wifi data";
    private static final String WIFI_CALLING_DATA_FORMAT = "%s wifi data";
@@ -2356,16 +2356,8 @@ public class ServiceStateTrackerTest extends TelephonyTest {
        verify(mEriManager, times(1)).loadEriFile();
        verify(mEriManager, times(1)).loadEriFile();
    }
    }


    private void enableCdnr() {
        mBundle.putBoolean(
                CarrierConfigManager.KEY_ENABLE_CARRIER_DISPLAY_NAME_RESOLVER_BOOL, true);
        sendCarrierConfigUpdate();
    }

    @Test
    @Test
    public void testUpdateSpnDisplay_noService_displayEmergencyCallOnly() {
    public void testUpdateSpnDisplay_noService_displayEmergencyCallOnly() {
        enableCdnr();

        // GSM phone
        // GSM phone
        doReturn(true).when(mPhone).isPhoneTypeGsm();
        doReturn(true).when(mPhone).isPhoneTypeGsm();


@@ -2388,8 +2380,6 @@ public class ServiceStateTrackerTest extends TelephonyTest {


    @Test
    @Test
    public void testUpdateSpnDisplay_noServiceAndEmergencyCallNotAvailable_displayOOS() {
    public void testUpdateSpnDisplay_noServiceAndEmergencyCallNotAvailable_displayOOS() {
        enableCdnr();

        // GSM phone
        // GSM phone
        doReturn(true).when(mPhone).isPhoneTypeGsm();
        doReturn(true).when(mPhone).isPhoneTypeGsm();


@@ -2412,8 +2402,6 @@ public class ServiceStateTrackerTest extends TelephonyTest {


    @Test
    @Test
    public void testUpdateSpnDisplay_flightMode_displayOOS() {
    public void testUpdateSpnDisplay_flightMode_displayOOS() {
        enableCdnr();

        // GSM phone
        // GSM phone
        doReturn(true).when(mPhone).isPhoneTypeGsm();
        doReturn(true).when(mPhone).isPhoneTypeGsm();


@@ -2435,8 +2423,6 @@ public class ServiceStateTrackerTest extends TelephonyTest {


    @Test
    @Test
    public void testUpdateSpnDisplay_spnNotEmptyAndWifiCallingEnabled_showSpnOnly() {
    public void testUpdateSpnDisplay_spnNotEmptyAndWifiCallingEnabled_showSpnOnly() {
        enableCdnr();

        // GSM phone
        // GSM phone
        doReturn(true).when(mPhone).isPhoneTypeGsm();
        doReturn(true).when(mPhone).isPhoneTypeGsm();


@@ -2467,8 +2453,7 @@ public class ServiceStateTrackerTest extends TelephonyTest {
    public void testUpdateSpnDisplay_spnEmptyAndWifiCallingEnabled_showPlmnOnly() {
    public void testUpdateSpnDisplay_spnEmptyAndWifiCallingEnabled_showPlmnOnly() {
        // set empty service provider name
        // set empty service provider name
        mBundle.putString(CarrierConfigManager.KEY_CARRIER_NAME_STRING, "");
        mBundle.putString(CarrierConfigManager.KEY_CARRIER_NAME_STRING, "");

        sendCarrierConfigUpdate();
        enableCdnr();


        // GSM phone
        // GSM phone
        doReturn(true).when(mPhone).isPhoneTypeGsm();
        doReturn(true).when(mPhone).isPhoneTypeGsm();
@@ -2497,8 +2482,6 @@ public class ServiceStateTrackerTest extends TelephonyTest {


    @Test
    @Test
    public void testUpdateSpnDisplay_inServiceNoWifiCalling_showSpnAndPlmn() {
    public void testUpdateSpnDisplay_inServiceNoWifiCalling_showSpnAndPlmn() {
        enableCdnr();

        // GSM phone
        // GSM phone
        doReturn(true).when(mPhone).isPhoneTypeGsm();
        doReturn(true).when(mPhone).isPhoneTypeGsm();


@@ -2545,6 +2528,34 @@ public class ServiceStateTrackerTest extends TelephonyTest {
        assertTrue(sst.shouldForceDisplayNoService());
        assertTrue(sst.shouldForceDisplayNoService());
    }
    }


    @Test
    public void testUpdateSpnDisplayLegacy_WlanServiceNoWifiCalling_displayOOS() {
        mBundle.putBoolean(
                CarrierConfigManager.KEY_ENABLE_CARRIER_DISPLAY_NAME_RESOLVER_BOOL, false);
        sendCarrierConfigUpdate();

        // GSM phone
        doReturn(true).when(mPhone).isPhoneTypeGsm();

        // voice out of service but data in service (connected to IWLAN)
        doReturn(ServiceState.STATE_OUT_OF_SERVICE).when(mServiceState).getState();
        doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getDataRegistrationState();
        doReturn(TelephonyManager.NETWORK_TYPE_IWLAN).when(mServiceState).getDataNetworkType();
        sst.mSS = mServiceState;

        // wifi-calling is disable
        doReturn(false).when(mPhone).isWifiCallingEnabled();

        // update the spn
        sst.updateSpnDisplay();

        // Plmn should be shown, and the string is "No service"
        Bundle b = getExtrasFromLastSpnUpdateIntent();
        assertThat(b.getString(TelephonyManager.EXTRA_PLMN))
                .isEqualTo(CARRIER_NAME_DISPLAY_NO_SERVICE);
        assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue();
    }

    private Bundle getExtrasFromLastSpnUpdateIntent() {
    private Bundle getExtrasFromLastSpnUpdateIntent() {
        // Verify the spn update notification was sent
        // Verify the spn update notification was sent
        ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);
        ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);