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

Commit a340673a authored by Jordan Liu's avatar Jordan Liu
Browse files

Do not set brandOverride if opNames are invalid

This reverts behavior which was changed in ag/7203966 (see line 2185 of
the original SST; when the logic to initialize brandOverride was moved
out of the if-block, it changed the behavior).

This code matches old behavior, which assumes that whenever the device
is not registered, the modem returns an invalid operator.

Bug: 144815455
Test: atest ServiceStateTrackerTest
Change-Id: I415b0fa7f3df85df9f0959d4f546e56b6bf2a2ef
parent 027287ae
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -2203,8 +2203,6 @@ public class ServiceStateTracker extends Handler {
            }

            case EVENT_POLL_STATE_OPERATOR: {
                String brandOverride = getOperatorBrandOverride();
                mCdnr.updateEfForBrandOverride(brandOverride);
                if (mPhone.isPhoneTypeGsm()) {
                    String opNames[] = (String[]) ar.result;

@@ -2212,6 +2210,8 @@ public class ServiceStateTracker extends Handler {
                        mNewSS.setOperatorAlphaLongRaw(opNames[0]);
                        mNewSS.setOperatorAlphaShortRaw(opNames[1]);
                        // FIXME: Giving brandOverride higher precedence, is this desired?
                        String brandOverride = getOperatorBrandOverride();
                        mCdnr.updateEfForBrandOverride(brandOverride);
                        if (brandOverride != null) {
                            log("EVENT_POLL_STATE_OPERATOR: use brandOverride=" + brandOverride);
                            mNewSS.setOperatorName(brandOverride, brandOverride, opNames[2]);
@@ -2241,6 +2241,8 @@ public class ServiceStateTracker extends Handler {
                            // NV device (as opposed to CSIM)
                            mNewSS.setOperatorName(opNames[0], opNames[1], opNames[2]);
                        } else {
                            String brandOverride = getOperatorBrandOverride();
                            mCdnr.updateEfForBrandOverride(brandOverride);
                            if (brandOverride != null) {
                                mNewSS.setOperatorName(brandOverride, brandOverride, opNames[2]);
                            } else {
+20 −0
Original line number Diff line number Diff line
@@ -1793,6 +1793,26 @@ public class ServiceStateTrackerTest extends TelephonyTest {
        waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
    }

    @Test
    public void testPollStateOperatorWhileNotRegistered() {
        final String[] oldOpNamesResult = new String[] { "Old carrier long", "Old carrier", "" };
        final String[] badOpNamesResult = null;
        sst.mPollingContext[0] = 1;
        sst.sendMessage(sst.obtainMessage(
                ServiceStateTracker.EVENT_POLL_STATE_OPERATOR,
                new AsyncResult(sst.mPollingContext, oldOpNamesResult, null)));
        waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
        assertEquals(oldOpNamesResult[0], sst.getServiceState().getOperatorAlpha());

        // if the device is not registered, the modem returns an invalid operator
        sst.mPollingContext[0] = 1;
        sst.sendMessage(sst.obtainMessage(
                ServiceStateTracker.EVENT_POLL_STATE_OPERATOR,
                new AsyncResult(sst.mPollingContext, badOpNamesResult, null)));
        waitForLastHandlerAction(mSSTTestHandler.getThreadHandler());
        assertEquals(null, sst.getServiceState().getOperatorAlpha());
    }

    // Edge and GPRS are grouped under the same family and Edge has higher rate than GPRS.
    // Expect no rat update when move from E to G.
    @Test