diff --git a/src/com/android/settings/display/ShowOperatorNamePreferenceController.java b/src/com/android/settings/display/ShowOperatorNamePreferenceController.java index 40eaad330d0..9e9bf8e59cf 100644 --- a/src/com/android/settings/display/ShowOperatorNamePreferenceController.java +++ b/src/com/android/settings/display/ShowOperatorNamePreferenceController.java @@ -14,12 +14,14 @@ package com.android.settings.display; import android.content.Context; +import android.os.PersistableBundle; import android.provider.Settings; +import android.telephony.CarrierConfigManager; +import android.telephony.SubscriptionManager; import androidx.preference.Preference; import androidx.preference.SwitchPreference; -import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; @@ -34,7 +36,15 @@ public class ShowOperatorNamePreferenceController extends AbstractPreferenceCont @Override public boolean isAvailable() { - return mContext.getResources().getBoolean(R.bool.config_showOperatorNameInStatusBar); + final CarrierConfigManager configMgr = mContext + .getSystemService(CarrierConfigManager.class); + if (configMgr == null) { + return false; + } + final PersistableBundle b = configMgr.getConfigForSubId(SubscriptionManager + .getDefaultDataSubscriptionId()); + return b != null && b.getBoolean(CarrierConfigManager + .KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL, false); } @Override diff --git a/tests/robotests/src/com/android/settings/display/ShowOperatorNamePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/ShowOperatorNamePreferenceControllerTest.java index 9026c04269f..6a461103551 100644 --- a/tests/robotests/src/com/android/settings/display/ShowOperatorNamePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/ShowOperatorNamePreferenceControllerTest.java @@ -18,53 +18,62 @@ package com.android.settings.display; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; +import android.os.PersistableBundle; import android.provider.Settings; +import android.telephony.CarrierConfigManager; import androidx.preference.SwitchPreference; -import com.android.settings.R; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class ShowOperatorNamePreferenceControllerTest { private static final String KEY_SHOW_OPERATOR_NAME = "show_operator_name"; - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private Context mContext; @Mock private SwitchPreference mPreference; + @Mock + private CarrierConfigManager mConfigManager; private ShowOperatorNamePreferenceController mController; + @Mock + private PersistableBundle mConfig; + private Context mContext; @Before public void setUp() { MockitoAnnotations.initMocks(this); + mContext = spy(RuntimeEnvironment.application); + + when(mConfigManager.getConfigForSubId(anyInt())).thenReturn(mConfig); + when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn(mConfigManager); mController = new ShowOperatorNamePreferenceController(mContext); } @Test public void testIsAvailable_configIsTrue_ReturnTrue() { - when(mContext.getResources() - .getBoolean(R.bool.config_showOperatorNameInStatusBar)).thenReturn(true); + when(mConfig.getBoolean(CarrierConfigManager + .KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL, false)).thenReturn(true); assertThat(mController.isAvailable()).isTrue(); } @Test public void testIsAvailable_configIsFalse_ReturnFalse() { - when(mContext.getResources() - .getBoolean(R.bool.config_showOperatorNameInStatusBar)).thenReturn(false); + when(mConfig.getBoolean(CarrierConfigManager + .KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL, false)).thenReturn(false); assertThat(mController.isAvailable()).isFalse(); }