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:
@@ -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
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user