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

Commit e96d71fc authored by Aleksander Morgado's avatar Aleksander Morgado
Browse files

Hide 'Reset mobile network settings' if not telephony capable

The entry is hidden either via the build-time
config_show_sim_info=false boolean flag, or when not
declaring the PackageManager.FEATURE_TELEPHONY_DATA feature flag.

Bug: 399208058
Test: mm && atest NetworkResetPreferenceControllerTest
Flag: EXEMPT bugfix

Change-Id: I178a0cae9d4ffd1ea4492a6b1feca697373d6e20
parent 86fa16ba
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context;

import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;

public class NetworkResetPreferenceController extends AbstractPreferenceController
@@ -34,8 +35,9 @@ public class NetworkResetPreferenceController extends AbstractPreferenceControll

    @Override
    public boolean isAvailable() {
        return (SubscriptionUtil.isSimHardwareVisible(mContext) &&
                (!mRestrictionChecker.hasUserRestriction()));
        return (SubscriptionUtil.isSimHardwareVisible(mContext)
                && !Utils.isWifiOnly(mContext)
                && !mRestrictionChecker.hasUserRestriction());
    }

    @Override
+48 −3
Original line number Diff line number Diff line
@@ -19,9 +19,16 @@ package com.android.settings.network;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.res.Resources;
import android.telephony.TelephonyManager;

import com.android.settings.R;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -34,28 +41,66 @@ import org.robolectric.util.ReflectionHelpers;
@RunWith(RobolectricTestRunner.class)
public class NetworkResetPreferenceControllerTest {

    @Mock
    private TelephonyManager mTelephonyManager;
    @Mock
    private NetworkResetRestrictionChecker mRestrictionChecker;
    private NetworkResetPreferenceController mController;
    private Context mContext;
    private Resources mResources;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mController = new NetworkResetPreferenceController(RuntimeEnvironment.application);
        mContext = spy(RuntimeEnvironment.application);

        mResources = spy(mContext.getResources());
        when(mContext.getResources()).thenReturn(mResources);
        when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);

        mController = new NetworkResetPreferenceController(mContext);
        ReflectionHelpers.setField(mController, "mRestrictionChecker", mRestrictionChecker);

        // Availability defaults
        when(mTelephonyManager.isDataCapable()).thenReturn(true);
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        when(mRestrictionChecker.isRestrictionEnforcedByAdmin()).thenReturn(false);
    }

    @Test
    public void testIsAvailable_shouldReturnTrueWhenNoUserRestriction() {
        when(mRestrictionChecker.isRestrictionEnforcedByAdmin()).thenReturn(true);
    public void testIsAvailable_showSimInfo_notWifiOnly() {
        assertThat(mController.isAvailable()).isTrue();
    }

    @Test
    public void testIsAvailable_hideSimInfo_notWifiOnly() {
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(false);
        assertThat(mController.isAvailable()).isFalse();
    }

    @Test
    public void testIsAvailable_showSimInfo_wifiOnly() {
        when(mTelephonyManager.isDataCapable()).thenReturn(false);
        assertThat(mController.isAvailable()).isFalse();
    }

    @Test
    public void testIsAvailable_userRestriction() {
        when(mRestrictionChecker.isRestrictionEnforcedByAdmin()).thenReturn(true);
        when(mRestrictionChecker.hasUserRestriction()).thenReturn(true);

        assertThat(mController.isAvailable()).isFalse();

        verify(mRestrictionChecker, never()).isRestrictionEnforcedByAdmin();
    }

    @Test
    public void testIsAvailable_noUserRestriction() {
        when(mRestrictionChecker.isRestrictionEnforcedByAdmin()).thenReturn(true);
        when(mRestrictionChecker.hasUserRestriction()).thenReturn(false);

        assertThat(mController.isAvailable()).isTrue();

        verify(mRestrictionChecker, never()).isRestrictionEnforcedByAdmin();
    }
}