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
This commit is contained in:
Aleksander Morgado
2025-03-05 00:02:26 +00:00
parent 86fa16ba52
commit e96d71fc41
2 changed files with 52 additions and 5 deletions

View File

@@ -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();
}
}