From 8bc83ef615ef9b07df36b75144ffe8fc939e9dea Mon Sep 17 00:00:00 2001 From: Niklas Lindgren Date: Mon, 1 Oct 2018 11:17:51 +0200 Subject: [PATCH] Read CarrierConfig to get operator name Config if operator name should be in status bar is now read from carrier config. For dual sim devices we use data sim. Bug: 116847905 Test: Add item for carrier in vendor.xml and swap sim cards between ones that have the item enabled and disabled. We have also tested to swap data sim cards on dual sim device. Test: m RunSettingsRoboTests ROBOTEST_FILTER="ShowOperatorNamePreferenceControllerTest" Change-Id: I03311b96ee660aed80ec867b05aa0a34cfc15f54 --- .../ShowOperatorNamePreferenceController.java | 14 ++++++++-- ...wOperatorNamePreferenceControllerTest.java | 27 ++++++++++++------- 2 files changed, 30 insertions(+), 11 deletions(-) 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(); }