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

Commit dcd7a3ec 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
Merged-In: Ifded01d890193c2b18a36a5c87849dbdefe7d970
parent d7c77f27
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -5493,7 +5493,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.
     */
    protected int getCombinedRegState(ServiceState ss) {
@@ -5502,9 +5503,17 @@ public class ServiceStateTracker extends Handler {
        if ((regState == ServiceState.STATE_OUT_OF_SERVICE
                || regState == ServiceState.STATE_POWER_OFF)
                && (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");
                regState = dataRegState;
            }
        }
        return regState;
    }

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

    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 WIFI_CALLING_VOICE_FORMAT = "%s wifi calling";
    private static final String WIFI_CALLING_DATA_FORMAT = "%s wifi data";
@@ -2343,16 +2343,8 @@ public class ServiceStateTrackerTest extends TelephonyTest {
        verify(mEriManager, times(1)).loadEriFile();
    }

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

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

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

@@ -2375,8 +2367,6 @@ public class ServiceStateTrackerTest extends TelephonyTest {

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

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

@@ -2399,8 +2389,6 @@ public class ServiceStateTrackerTest extends TelephonyTest {

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

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

@@ -2422,8 +2410,6 @@ public class ServiceStateTrackerTest extends TelephonyTest {

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

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

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

        enableCdnr();
        sendCarrierConfigUpdate();

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

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

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

@@ -2532,6 +2515,34 @@ public class ServiceStateTrackerTest extends TelephonyTest {
        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() {
        // Verify the spn update notification was sent
        ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);