Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8bc83ef6 authored by Niklas Lindgren's avatar Niklas Lindgren Committed by Evan Laird
Browse files

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
parent 0312b674
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -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
+18 −9
Original line number Diff line number Diff line
@@ -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();
    }