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

Commit 44ed8c0d authored by Aleksander Morgado's avatar Aleksander Morgado Committed by Android (Google) Code Review
Browse files

Merge changes from topic "no-telephony-rework-batch-1" into main

* changes:
  Hide SimLockPreferenceController when no telephony
  Don't assume telephony is available in SubscriptionActivationRepositoryTest
  Rename key to explicitly reference TELEPHONY_CALLING in user settings
  Return DISABLED_FOR_USER in network/eid availability if not admin user
  Return UNSUPPORTED_ON_DEVICE in network/eid when no telephony
  Don't assume telephony is available in MobileNetworkSettingsSearchIndexTest
parents 01420125 2002f5bc
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -70,12 +70,14 @@ open class MobileNetworkEidPreferenceController(context: Context, key: String) :
    }

    override fun getAvailabilityStatus(subId: Int): Int = when {
        !Flags.isDualSimOnboardingEnabled() -> CONDITIONALLY_UNAVAILABLE
        SubscriptionManager.isValidSubscriptionId(subId)
                && eid.isNotEmpty()
                && mContext.userManager.isAdminUser -> AVAILABLE

        else -> CONDITIONALLY_UNAVAILABLE
        !SubscriptionUtil.isSimHardwareVisible(mContext)
                || Utils.isWifiOnly(mContext) -> UNSUPPORTED_ON_DEVICE
        !mContext.userManager.isAdminUser -> DISABLED_FOR_USER
        !Flags.isDualSimOnboardingEnabled()
                || !SubscriptionManager.isValidSubscriptionId(subId)
                || eid.isEmpty() -> CONDITIONALLY_UNAVAILABLE

        else -> AVAILABLE
    }

    override fun displayPreference(screen: PreferenceScreen) {
+2 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import androidx.preference.PreferenceScreen;

import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.Utils;

import java.util.List;

@@ -52,7 +53,7 @@ public class SimLockPreferenceController extends BasePreferenceController {

    @Override
    public int getAvailabilityStatus() {
        if (!SubscriptionUtil.isSimHardwareVisible(mContext)) {
        if (!SubscriptionUtil.isSimHardwareVisible(mContext) || Utils.isWifiOnly(mContext)) {
            return UNSUPPORTED_ON_DEVICE;
        }

+7 −7
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
    private static final String TAG = UserDetailsSettings.class.getSimpleName();

    private static final String KEY_SWITCH_USER = "switch_user";
    private static final String KEY_ENABLE_TELEPHONY = "enable_calling";
    private static final String KEY_ENABLE_TELEPHONY_CALLING = "enable_calling";
    private static final String KEY_REMOVE_USER = "remove_user";
    private static final String KEY_GRANT_ADMIN = "user_grant_admin";
    private static final String KEY_APP_AND_CONTENT_ACCESS = "app_and_content_access";
@@ -346,7 +346,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
        mUserInfo = mUserManager.getUserInfo(userId);

        mSwitchUserPref = findPreference(KEY_SWITCH_USER);
        mPhonePref = findPreference(KEY_ENABLE_TELEPHONY);
        mPhonePref = findPreference(KEY_ENABLE_TELEPHONY_CALLING);
        mRemoveUserPref = findPreference(KEY_REMOVE_USER);
        mAppAndContentAccessPref = findPreference(KEY_APP_AND_CONTENT_ACCESS);
        mAppCopyingPref = findPreference(KEY_APP_COPYING);
@@ -385,19 +385,19 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
        }

        if (!mUserManager.isAdminUser()) { // non admin users can't remove users and allow calls
            removePreference(KEY_ENABLE_TELEPHONY);
            removePreference(KEY_ENABLE_TELEPHONY_CALLING);
            removePreference(KEY_REMOVE_USER);
            removePreference(KEY_APP_AND_CONTENT_ACCESS);
            removePreference(KEY_APP_COPYING);
        } else {
            if (!Utils.isVoiceCapable(context)) { // no telephony
                removePreference(KEY_ENABLE_TELEPHONY);
                removePreference(KEY_ENABLE_TELEPHONY_CALLING);
            }
            if (mUserInfo.isMain() || UserManager.isHeadlessSystemUserMode()) {
                removePreference(KEY_ENABLE_TELEPHONY);
                removePreference(KEY_ENABLE_TELEPHONY_CALLING);
            }
            if (mUserInfo.isRestricted()) {
                removePreference(KEY_ENABLE_TELEPHONY);
                removePreference(KEY_ENABLE_TELEPHONY_CALLING);
                if (isNewUser) {
                    // for newly created restricted users we should open the apps and content access
                    // screen to initialize the default restrictions
@@ -408,7 +408,7 @@ public class UserDetailsSettings extends SettingsPreferenceFragment
            }

            if (mUserInfo.isGuest()) {
                removePreference(KEY_ENABLE_TELEPHONY);
                removePreference(KEY_ENABLE_TELEPHONY_CALLING);
                mRemoveUserPref.setTitle(mGuestUserAutoCreated
                        ? com.android.settingslib.R.string.guest_reset_guest
                        : com.android.settingslib.R.string.guest_exit_guest);
+14 −10
Original line number Diff line number Diff line
@@ -90,6 +90,11 @@ public class SimLockPreferenceControllerTest {
        mPreference = new Preference(mContext);
        mPreference.setKey(mController.getPreferenceKey());
        when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);

        // Available by default
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        when(mUserManager.isAdminUser()).thenReturn(true);
        when(mTelephonyManager.isDataCapable()).thenReturn(true);
    }

    @Test
@@ -100,9 +105,16 @@ public class SimLockPreferenceControllerTest {
                .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
    }

    @Test
    public void isAvailable_notDataCapable_false() {
        when(mTelephonyManager.isDataCapable()).thenReturn(false);

        assertThat(mController.getAvailabilityStatus())
                .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
    }

    @Test
    public void isAvailable_notAdmin_false() {
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        when(mUserManager.isAdminUser()).thenReturn(false);

        assertThat(mController.getAvailabilityStatus())
@@ -111,16 +123,12 @@ public class SimLockPreferenceControllerTest {

    @Test
    public void isAvailable_simIccNotReady_false() {
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        when(mUserManager.isAdminUser()).thenReturn(true);

        assertThat(mController.getAvailabilityStatus())
                .isEqualTo(BasePreferenceController.DISABLED_FOR_USER);
    }

    @Test
    public void isAvailable_carrierConfigDisabled_false() {
        when(mUserManager.isAdminUser()).thenReturn(true);
        setupMockIcc();
        final PersistableBundle pb = new PersistableBundle();
        pb.putBoolean(CarrierConfigManager.KEY_HIDE_SIM_LOCK_SETTINGS_BOOL, true);
@@ -132,7 +140,6 @@ public class SimLockPreferenceControllerTest {

    @Test
    public void isAvailable_true() {
        when(mUserManager.isAdminUser()).thenReturn(true);
        setupMockIcc();
        final PersistableBundle pb = new PersistableBundle();
        when(mCarrierManager.getConfigForSubId(anyInt())).thenReturn(pb);
@@ -143,7 +150,6 @@ public class SimLockPreferenceControllerTest {

    @Test
    public void displayPreference_simReady_enablePreference() {
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        mController.displayPreference(mScreen);

        assertThat(mPreference.isEnabled()).isFalse();
@@ -160,14 +166,12 @@ public class SimLockPreferenceControllerTest {

    @Test
    public void getPreferenceKey_whenGivenValue_returnsGivenValue() {
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        mController = new SimLockPreferenceController(mContext, "key");

        assertThat(mController.getPreferenceKey()).isEqualTo("key");
    }

    private void setupMockIcc() {
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        final List<SubscriptionInfo> subscriptionInfoList = new ArrayList<>();
        SubscriptionInfo info = mock(SubscriptionInfo.class);
        subscriptionInfoList.add(info);
@@ -178,10 +182,10 @@ public class SimLockPreferenceControllerTest {
    }

    private void setupMockSimReady() {
        when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
        final List<SubscriptionInfo> subscriptionInfoList = new ArrayList<>();
        SubscriptionInfo info = mock(SubscriptionInfo.class);
        subscriptionInfoList.add(info);
        when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
        when(mTelephonyManager.getSimState(anyInt())).thenReturn(SIM_STATE_READY);
        when(mSubscriptionManager.getActiveSubscriptionInfoList())
                .thenReturn(subscriptionInfoList);
+36 −3
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settings.network.telephony

import android.content.Context
import android.os.UserManager
import android.platform.test.flag.junit.SetFlagsRule
import android.telephony.SubscriptionInfo
import android.telephony.TelephonyManager
@@ -58,6 +59,8 @@ class MobileNetworkEidPreferenceControllerTest {
        val viewmodel = mockViewModels
    }

    private val mockUserManager = mock<UserManager>()

    private var mockEid = String()
    private val mockTelephonyManager = mock<TelephonyManager> {
        on {uiccCardsInfo} doReturn listOf()
@@ -70,6 +73,7 @@ class MobileNetworkEidPreferenceControllerTest {
    private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
        on { getSystemService(TelephonyManager::class.java) } doReturn mockTelephonyManager
        on { getSystemService(EuiccManager::class.java) } doReturn mockEuiccManager
        on { getSystemService(UserManager::class.java) } doReturn mockUserManager
    }

    private val controller = MobileNetworkEidPreferenceController(context, TEST_KEY)
@@ -84,6 +88,15 @@ class MobileNetworkEidPreferenceControllerTest {
            .strictness(Strictness.LENIENT)
            .startMocking()

        // By default, available
        whenever(SubscriptionUtil.isSimHardwareVisible(context)).thenReturn(true)
        mockTelephonyManager.stub {
            on { isDataCapable } doReturn true
	}
        mockUserManager.stub {
            on { isAdminUser } doReturn true
        }

        preferenceScreen.addPreference(preference)
        controller.displayPreference(preferenceScreen)
    }
@@ -95,7 +108,6 @@ class MobileNetworkEidPreferenceControllerTest {

    @Test
    fun refreshData_getEmptyEid_preferenceIsNotVisible() = runBlocking {
        whenever(SubscriptionUtil.isSimHardwareVisible(context)).thenReturn(true)
        whenever(SubscriptionUtil.getActiveSubscriptions(any())).thenReturn(
            listOf(
                SUB_INFO_1,
@@ -113,7 +125,6 @@ class MobileNetworkEidPreferenceControllerTest {

    @Test
    fun refreshData_getEmptyEid_preferenceSummaryIsExpected() = runBlocking {
        whenever(SubscriptionUtil.isSimHardwareVisible(context)).thenReturn(true)
        whenever(SubscriptionUtil.getActiveSubscriptions(any())).thenReturn(
            listOf(
                SUB_INFO_1,
@@ -138,7 +149,29 @@ class MobileNetworkEidPreferenceControllerTest {

        val availabilityStatus = controller.availabilityStatus

        assertThat(availabilityStatus).isEqualTo(BasePreferenceController.CONDITIONALLY_UNAVAILABLE)
        assertThat(availabilityStatus).isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE)
    }

    @Test
    fun getAvailabilityStatus_notDataCapable() {
        mockTelephonyManager.stub {
            on { isDataCapable } doReturn false
        }

        val availabilityStatus = controller.availabilityStatus

        assertThat(availabilityStatus).isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE)
    }

    @Test
    fun getAvailabilityStatus_notAdmin() {
        mockUserManager.stub {
            on { isAdminUser } doReturn false
        }

        val availabilityStatus = controller.availabilityStatus

        assertThat(availabilityStatus).isEqualTo(BasePreferenceController.DISABLED_FOR_USER)
    }

    private companion object {
Loading