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

Commit 2af550ed authored by Pengquan Meng's avatar Pengquan Meng
Browse files

Fixed roaming detection issue for SPN display

Non-roaming if hplmns contains the registered PLMN.

Bug: 131205855
Test: atest ServiceStateTracker.java
Change-Id: Iaa6fb25f1c0b3a48ac177ee223cdc11180b00c51
parent fed74e1a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3510,7 +3510,7 @@ public class ServiceStateTracker extends Handler {
                isRoaming = ss.getRoaming();
            } else {
                String[] hplmns = mIccRecords != null ? mIccRecords.getHomePlmns() : null;
                isRoaming = ArrayUtils.contains(hplmns, ss.getOperatorNumeric());
                isRoaming = !ArrayUtils.contains(hplmns, ss.getOperatorNumeric());
            }
            int rule;
            if (isRoaming) {
+60 −1
Original line number Diff line number Diff line
@@ -1859,7 +1859,7 @@ public class ServiceStateTrackerTest extends TelephonyTest {
    }

    @Test
    public void testGetCarrierNameDisplayConditionWithBrandOverride() {
    public void testGetCarrierNameDisplayBitmaskWithBrandOverride() {
        String brandOverride = "spn from brand override";
        doReturn(brandOverride).when(mUiccProfile).getOperatorBrandOverride();

@@ -1868,6 +1868,65 @@ public class ServiceStateTrackerTest extends TelephonyTest {
                ServiceStateTracker.CARRIER_NAME_DISPLAY_BITMASK_SHOW_SPN);
    }

    @Test
    public void testGetCarrierNameDisplayBitmask_useRoamingFromServiceState() {
        // No brandOverride
        String brandOverride = "";
        doReturn(brandOverride).when(mUiccProfile).getOperatorBrandOverride();

        // Use roaming from ServiceState
        mBundle.putBoolean(
                CarrierConfigManager.KEY_SPN_DISPLAY_RULE_USE_ROAMING_FROM_SERVICE_STATE_BOOL,
                true);

        // Only display SPN when non-roaming, PLMN when roaming
        doReturn(0).when(mSimRecords).getCarrierNameDisplayCondition();

        ServiceState ss = new ServiceState();
        ss.setRoaming(true);
        int bitmask = sst.getCarrierNameDisplayBitmask(ss);
        // Only show PLMN when roaming
        assertThat(bitmask).isEqualTo(ServiceStateTracker.CARRIER_NAME_DISPLAY_BITMASK_SHOW_PLMN);

        ss.setRoaming(false);
        // Only show SPN when non-roaming
        bitmask = sst.getCarrierNameDisplayBitmask(ss);
        assertThat(bitmask).isEqualTo(ServiceStateTracker.CARRIER_NAME_DISPLAY_BITMASK_SHOW_SPN);
    }

    @Test
    public void testGetCarrierNameDisplayBitmask_NotUseRoamingFromServiceState() {
        // No brandOverride
        String brandOverride = "";
        doReturn(brandOverride).when(mUiccProfile).getOperatorBrandOverride();

        // Do not use roaming from ServiceState
        mBundle.putBoolean(
                CarrierConfigManager.KEY_SPN_DISPLAY_RULE_USE_ROAMING_FROM_SERVICE_STATE_BOOL,
                false);

        // Only display SPN when non-roaming, PLMN when roaming
        doReturn(0).when(mSimRecords).getCarrierNameDisplayCondition();

        ServiceState ss = new ServiceState();
        String registeredPLMN = "123456";
        ss.setOperatorName("long", "short", registeredPLMN);

        // Registered PLMN is HPLMN
        doReturn(new String[] {registeredPLMN}).when(mSimRecords).getHomePlmns();

        int bitmask = sst.getCarrierNameDisplayBitmask(ss);

        // Only show SPN when registered PLMN is HPLMN
        assertThat(bitmask).isEqualTo(ServiceStateTracker.CARRIER_NAME_DISPLAY_BITMASK_SHOW_SPN);

        doReturn(new String[] {"567890"}).when(mSimRecords).getHomePlmns();

        bitmask = sst.getCarrierNameDisplayBitmask(ss);
        // Only show PLMN when registered PLMN is non-HPLMN
        assertThat(bitmask).isEqualTo(ServiceStateTracker.CARRIER_NAME_DISPLAY_BITMASK_SHOW_PLMN);
    }

    @Test
    @SmallTest
    public void testGetMdn() throws Exception {