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

Commit 15012a9a authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Check ServiceState when showing dialog

When showing the dialog the first time cellular data is turned off from
QS, check if the data network is in service. If it's not, do not believe
the carrier name and use a generic string instead.

Test: atest NetworkControllerDataTest
Bug: 156238588
Change-Id: Iee8091921ecdaba0c18f67080348240b8b8f67a7
parent d7efb117
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -130,7 +130,8 @@ public class CellularTile extends QSTileImpl<SignalState> {
            return;
        }
        String carrierName = mController.getMobileDataNetworkName();
        if (TextUtils.isEmpty(carrierName)) {
        boolean isInService = mController.isMobileDataNetworkInService();
        if (TextUtils.isEmpty(carrierName) || !isInService) {
            carrierName = mContext.getString(R.string.mobile_data_disable_message_default_carrier);
        }
        AlertDialog dialog = new Builder(mContext)
+4 −0
Original line number Diff line number Diff line
@@ -418,6 +418,10 @@ public class MobileSignalController extends SignalController<
        return (mServiceState != null && mServiceState.isEmergencyOnly());
    }

    public boolean isInService() {
        return Utils.isInService(mServiceState);
    }

    private boolean isRoaming() {
        // During a carrier change, roaming indications need to be supressed.
        if (isCarrierNetworkChangeActive()) {
+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ public interface NetworkController extends CallbackController<SignalCallback>, D
    DataUsageController getMobileDataController();
    DataSaverController getDataSaverController();
    String getMobileDataNetworkName();
    boolean isMobileDataNetworkInService();
    int getNumberSubscriptions();

    boolean hasVoiceCallingFeature();
+6 −0
Original line number Diff line number Diff line
@@ -459,6 +459,12 @@ public class NetworkControllerImpl extends BroadcastReceiver
        return controller != null ? controller.getState().networkNameData : "";
    }

    @Override
    public boolean isMobileDataNetworkInService() {
        MobileSignalController controller = getDataController();
        return controller != null && controller.isInService();
    }

    @Override
    public int getNumberSubscriptions() {
        return mMobileSignalControllers.size();
+22 −0
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@ package com.android.systemui.statusbar.policy;
import static android.telephony.AccessNetworkConstants.TRANSPORT_TYPE_WWAN;
import static android.telephony.NetworkRegistrationInfo.DOMAIN_PS;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -10,6 +12,7 @@ import static org.mockito.Mockito.when;
import android.net.NetworkCapabilities;
import android.os.Looper;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
@@ -259,6 +262,25 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest {
        assertDataNetworkNameEquals(newDataName);
    }

    @Test
    public void testIsDataInService_true() {
        setupDefaultSignal();
        assertTrue(mNetworkController.isMobileDataNetworkInService());
    }

    @Test
    public void testIsDataInService_noSignal_false() {
        assertFalse(mNetworkController.isMobileDataNetworkInService());
    }

    @Test
    public void testIsDataInService_notInService_false() {
        setupDefaultSignal();
        setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE);
        setDataRegState(ServiceState.STATE_OUT_OF_SERVICE);
        assertFalse(mNetworkController.isMobileDataNetworkInService());
    }

    private void testDataActivity(int direction, boolean in, boolean out) {
        updateDataActivity(direction);

Loading