diff --git a/src/com/android/settings/network/telephony/RoamingPreferenceController.java b/src/com/android/settings/network/telephony/RoamingPreferenceController.java index 4140d5d9709..dd5fd0e8fef 100644 --- a/src/com/android/settings/network/telephony/RoamingPreferenceController.java +++ b/src/com/android/settings/network/telephony/RoamingPreferenceController.java @@ -33,7 +33,6 @@ import androidx.fragment.app.FragmentManager; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.RestrictedSwitchPreference; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; @@ -114,8 +113,10 @@ public class RoamingPreferenceController extends TelephonyTogglePreferenceContro public void updateState(Preference preference) { super.updateState(preference); final RestrictedSwitchPreference switchPreference = (RestrictedSwitchPreference) preference; - switchPreference.setEnabled(mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID); - switchPreference.setChecked(isChecked()); + if (!switchPreference.isDisabledByAdmin()) { + switchPreference.setEnabled(mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID); + switchPreference.setChecked(isChecked()); + } } @VisibleForTesting diff --git a/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java index ce61a898a6e..a883c51075b 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/RoamingPreferenceControllerTest.java @@ -18,9 +18,12 @@ package com.android.settings.network.telephony; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.doReturn; +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.os.PersistableBundle; @@ -76,7 +79,7 @@ public class RoamingPreferenceControllerTest { SubscriptionManager.INVALID_SUBSCRIPTION_ID); doReturn(mFragmentTransaction).when(mFragmentManager).beginTransaction(); - mPreference = new RestrictedSwitchPreference(mContext); + mPreference = spy(new RestrictedSwitchPreference(mContext)); mController = new RoamingPreferenceController(mContext, "roaming"); mController.init(mFragmentManager, SUB_ID); mPreference.setKey(mController.getPreferenceKey()); @@ -140,4 +143,22 @@ public class RoamingPreferenceControllerTest { assertThat(mPreference.isEnabled()).isTrue(); assertThat(mPreference.isChecked()).isTrue(); } + + @Test + public void updateState_isNotDisabledByAdmin_shouldInvokeSetEnabled() { + when(mPreference.isDisabledByAdmin()).thenReturn(false); + + mController.updateState(mPreference); + + verify(mPreference).setEnabled(anyBoolean()); + } + + @Test + public void updateState_isDisabledByAdmin_shouldNotInvokeSetEnabled() { + when(mPreference.isDisabledByAdmin()).thenReturn(true); + + mController.updateState(mPreference); + + verify(mPreference, never()).setEnabled(anyBoolean()); + } }