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

Commit 7ef5b887 authored by Shishir Agrawal's avatar Shishir Agrawal
Browse files

Supress roaming indications during a carrier network change.

Change-Id: Ib39d229b67374c4ca30c3a2c8c3b0050106733cd
Fixes: 62795179
Test: NetworkControllerSignalTest
parent a350db60
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -341,6 +341,10 @@ public class MobileSignalController extends SignalController<
    }

    private boolean isRoaming() {
        // During a carrier change, roaming indications need to be supressed.
        if (isCarrierNetworkChangeActive()) {
            return false;
        }
        if (isCdma()) {
            final int iconMode = mServiceState.getCdmaEriIconMode();
            return mServiceState.getCdmaEriIconIndex() != EriInfo.ROAMING_INDICATOR_OFF
+73 −0
Original line number Diff line number Diff line
@@ -494,6 +494,79 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
              DEFAULT_ICON /* typeIcon */);
    }

    @Test
    public void testCarrierNetworkChange_roamingBeforeNetworkChange() {
      int strength = SignalStrength.SIGNAL_STRENGTH_GREAT;

      setupDefaultSignal();
      setLevel(strength);
      setGsmRoaming(true);

      // Verify baseline
      verifyLastMobileDataIndicators(true /* visible */,
              strength /* strengthIcon */,
              DEFAULT_ICON /* typeIcon */,
              true /* roaming */);

      // API call is made
      setCarrierNetworkChange(true /* enabled */);

      // Carrier network change is true, show special indicator, no roaming.
      verifyLastMobileDataIndicators(true /* visible */,
              SignalDrawable.getCarrierChangeState(SignalStrength.NUM_SIGNAL_STRENGTH_BINS),
              0 /* typeIcon */,
              false /* roaming */);

      // Revert back
      setCarrierNetworkChange(false /* enabled */);

      // Verify back in previous state
      verifyLastMobileDataIndicators(true /* visible */,
              strength /* strengthIcon */,
              DEFAULT_ICON /* typeIcon */,
              true /* roaming */);
    }

    @Test
    public void testCarrierNetworkChange_roamingAfterNetworkChange() {
      int strength = SignalStrength.SIGNAL_STRENGTH_GREAT;

      setupDefaultSignal();
      setLevel(strength);

      // Verify baseline
      verifyLastMobileDataIndicators(true /* visible */,
              strength /* strengthIcon */,
              DEFAULT_ICON /* typeIcon */,
              false /* roaming */);

      // API call is made
      setCarrierNetworkChange(true /* enabled */);

      // Carrier network change is true, show special indicator, no roaming.
      verifyLastMobileDataIndicators(true /* visible */,
              SignalDrawable.getCarrierChangeState(SignalStrength.NUM_SIGNAL_STRENGTH_BINS),
              0 /* typeIcon */,
              false /* roaming */);

      setGsmRoaming(true);

      // Roaming should not show.
      verifyLastMobileDataIndicators(true /* visible */,
              SignalDrawable.getCarrierChangeState(SignalStrength.NUM_SIGNAL_STRENGTH_BINS),
              0 /* typeIcon */,
              false /* roaming */);

      // Revert back
      setCarrierNetworkChange(false /* enabled */);

      // Verify back in previous state
      verifyLastMobileDataIndicators(true /* visible */,
              strength /* strengthIcon */,
              DEFAULT_ICON /* typeIcon */,
              true /* roaming */);
    }

    private void verifyEmergencyOnly(boolean isEmergencyOnly) {
        ArgumentCaptor<Boolean> emergencyOnly = ArgumentCaptor.forClass(Boolean.class);
        Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setEmergencyCallsOnly(