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

Commit b8a85972 authored by Sarah Chin's avatar Sarah Chin Committed by Automerger Merge Worker
Browse files

Merge "Fix No Service when connected to WiFi on APM" am: 440f8084

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/1438915

Change-Id: I007a4a11539eb020f5ca336dacf7a5763c37412d
parents b37276e5 440f8084
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -2737,9 +2737,13 @@ public class ServiceStateTracker extends Handler {
            //    EXTRA_PLMN = plmn

            // 4) No service due to power off, aka airplane mode
            //    EXTRA_SHOW_PLMN = false
            //    EXTRA_SHOW_PLMN = true
            //    EXTRA_PLMN = null

            // 5) Airplane mode but connected to WiFi with WFC disabled
            //    EXTRA_SHOW_PLMN = true
            //    EXTRA_PLMN = plmn

            IccRecords iccRecords = mIccRecords;
            int rule = getCarrierNameDisplayBitmask(mSS);
            boolean noService = false;
@@ -2772,10 +2776,16 @@ public class ServiceStateTracker extends Handler {
                if (DBG) log("updateSpnDisplay: rawPlmn = " + plmn);
            } else {
                // Power off state, such as airplane mode, show plmn as "No service"
                // unless connected to WiFi with WFC disabled, then show plmn
                showPlmn = true;
                if (mPhone.getImsPhone() != null && !mPhone.getImsPhone().isWifiCallingEnabled()
                        && mSS.getDataNetworkType() == TelephonyManager.NETWORK_TYPE_IWLAN) {
                    plmn = mSS.getOperatorAlpha();
                } else {
                    plmn = Resources.getSystem()
                            .getText(com.android.internal.R.string.lockscreen_carrier_default)
                            .toString();
                }
                if (DBG) log("updateSpnDisplay: radio is off w/ showPlmn="
                        + showPlmn + " plmn=" + plmn);
            }
+28 −0
Original line number Diff line number Diff line
@@ -2439,6 +2439,34 @@ public class ServiceStateTrackerTest extends TelephonyTest {
        assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue();
    }

    @Test
    public void testUpdateSpnDisplay_flightModeNoWifiCalling_showSpnAndPlmn() {
        // GSM phone
        doReturn(true).when(mPhone).isPhoneTypeGsm();

        // Flight mode and connected to WiFI
        doReturn(ServiceState.STATE_POWER_OFF).when(mServiceState).getVoiceRegState();
        doReturn(ServiceState.STATE_POWER_OFF).when(mServiceState).getDataRegState();
        doReturn(TelephonyManager.NETWORK_TYPE_IWLAN).when(mServiceState).getDataNetworkType();
        doReturn(mServiceState).when(mSST).getServiceState();

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

        // update the spn
        sst.updateSpnDisplay();

        // Show both spn & plmn
        String spn = mBundle.getString(CarrierConfigManager.KEY_CARRIER_NAME_STRING);
        String plmn = mBundle.getStringArray(CarrierConfigManager.KEY_PNN_OVERRIDE_STRING_ARRAY)[0];
        plmn = plmn.split("\\s*,\\s*")[0];
        Bundle b = getExtrasFromLastSpnUpdateIntent();
        assertThat(b.getString(TelephonyManager.EXTRA_SPN)).isEqualTo(spn);
        assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_SPN)).isTrue();
        assertThat(b.getString(TelephonyManager.EXTRA_PLMN)).isEqualTo(plmn);
        assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue();
    }

    @Test
    public void testUpdateSpnDisplay_spnNotEmptyAndWifiCallingEnabled_showSpnOnly() {
        // GSM phone