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

Commit 5db9f004 authored by Zoey Chen's avatar Zoey Chen Committed by Automerger Merge Worker
Browse files

Merge "[Provider Model] The SIMs page should list all p-SIMs" into sc-qpr1-dev am: 39b6769e

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/15834629

Change-Id: I80712b16464d2104e570038060044bde74c9c4fb
parents e7cca4cd 39b6769e
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -65,14 +65,12 @@ public class MobileNetworkListFragment extends DashboardFragment {

        if (Utils.isProviderModelEnabled(getContext())) {
            NetworkProviderSimsCategoryController simCategoryPrefCtrl =
                    new NetworkProviderSimsCategoryController(context, KEY_PREFERENCE_CATEGORY_SIM);
            simCategoryPrefCtrl.init(getSettingsLifecycle());
                    new NetworkProviderSimsCategoryController(context, KEY_PREFERENCE_CATEGORY_SIM,
                            getSettingsLifecycle());
            controllers.add(simCategoryPrefCtrl);

            NetworkProviderDownloadedSimsCategoryController downloadedSimsCategoryCtrl =
                    new NetworkProviderDownloadedSimsCategoryController(context,
                            KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM);
            downloadedSimsCategoryCtrl.init(getSettingsLifecycle());
                            KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM, getSettingsLifecycle());
            controllers.add(downloadedSimsCategoryCtrl);
        } else {
            controllers.add(new MobileNetworkListController(getContext(), getLifecycle()));
+15 −13
Original line number Diff line number Diff line
package com.android.settings.network;

import android.content.Context;
import android.util.Log;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
@@ -15,23 +15,17 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver;
public class NetworkProviderDownloadedSimsCategoryController extends
        PreferenceCategoryController implements LifecycleObserver {

    private static final String LOG_TAG = "NetworkProviderDownloadedSimsCategoryController";
    private static final String KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM =
            "provider_model_downloaded_sim_category";
    private PreferenceCategory mPreferenceCategory;
    private NetworkProviderDownloadedSimListController mNetworkProviderDownloadedSimListController;

    public NetworkProviderDownloadedSimsCategoryController(Context context, String key) {
        super(context, key);
    }

    public void init(Lifecycle lifecycle) {
        mNetworkProviderDownloadedSimListController = createDownloadedSimListController(lifecycle);
    }

    @VisibleForTesting
    protected NetworkProviderDownloadedSimListController createDownloadedSimListController(
    public NetworkProviderDownloadedSimsCategoryController(Context context, String key,
            Lifecycle lifecycle) {
        return new NetworkProviderDownloadedSimListController(mContext, lifecycle);
        super(context, key);
        mNetworkProviderDownloadedSimListController =
                new NetworkProviderDownloadedSimListController(mContext, lifecycle);
    }

    @Override
@@ -47,15 +41,23 @@ public class NetworkProviderDownloadedSimsCategoryController extends
    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mNetworkProviderDownloadedSimListController.displayPreference(screen);
        mPreferenceCategory = screen.findPreference(
                KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM);
        if (mPreferenceCategory == null) {
            Log.d(LOG_TAG, "displayPreference(), Can not find the category.");
            return;
        }
        mPreferenceCategory.setVisible(isAvailable());
        mNetworkProviderDownloadedSimListController.displayPreference(screen);
    }

    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        if (mPreferenceCategory == null) {
            Log.d(LOG_TAG, "updateState(), Can not find the category.");
            return;
        }
        int count = mPreferenceCategory.getPreferenceCount();
        String title = mContext.getString(count > 1
                ? R.string.downloaded_sims_category_title
+0 −1
Original line number Diff line number Diff line
@@ -172,7 +172,6 @@ public class NetworkProviderSimListController extends AbstractPreferenceControll
        for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(mContext)) {
            if (!info.isEmbedded()) {
                subList.add(info);
                break;
            }
        }
        return subList;
+28 −15
Original line number Diff line number Diff line
@@ -17,33 +17,28 @@
package com.android.settings.network;

import android.content.Context;
import android.util.Log;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.widget.PreferenceCategoryController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;

public class NetworkProviderSimsCategoryController extends PreferenceCategoryController implements
        LifecycleObserver {

    private static final String LOG_TAG = "NetworkProviderSimsCategoryController";
    private static final String KEY_PREFERENCE_CATEGORY_SIM = "provider_model_sim_category";
    private NetworkProviderSimListController mNetworkProviderSimListController;
    private PreferenceCategory mPreferenceCategory;

    public NetworkProviderSimsCategoryController(Context context, String key) {
    public NetworkProviderSimsCategoryController(Context context, String key, Lifecycle lifecycle) {
        super(context, key);
    }

    public void init(Lifecycle lifecycle) {
        mNetworkProviderSimListController = createSimListController(lifecycle);
    }

    @VisibleForTesting
    protected NetworkProviderSimListController createSimListController(
            Lifecycle lifecycle) {
        return new NetworkProviderSimListController(mContext, lifecycle);
        mNetworkProviderSimListController =
                new NetworkProviderSimListController(mContext, lifecycle);
    }

    @Override
@@ -59,8 +54,26 @@ public class NetworkProviderSimsCategoryController extends PreferenceCategoryCon
    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        PreferenceCategory preferenceCategory = screen.findPreference(KEY_PREFERENCE_CATEGORY_SIM);
        preferenceCategory.setVisible(isAvailable());
        mNetworkProviderSimListController.displayPreference(screen);
        mPreferenceCategory = screen.findPreference(KEY_PREFERENCE_CATEGORY_SIM);
        if (mPreferenceCategory == null) {
            Log.d(LOG_TAG, "displayPreference(), Can not find the category.");
            return;
        }
        mPreferenceCategory.setVisible(isAvailable());
    }

    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        if (mPreferenceCategory == null) {
            Log.d(LOG_TAG, "updateState(), Can not find the category.");
            return;
        }
        int count = mPreferenceCategory.getPreferenceCount();
        String title = mContext.getString(count > 1
                ? R.string.provider_network_settings_title
                : R.string.sim_category_title);
        mPreferenceCategory.setTitle(title);
    }
}
+64 −17
Original line number Diff line number Diff line
@@ -26,9 +26,12 @@ import static org.mockito.Mockito.when;

import android.content.Context;
import android.os.Looper;
import android.telephony.SubscriptionInfo;

import com.android.settings.testutils.ResourcesUtils;
import com.android.settingslib.core.lifecycle.Lifecycle;

import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
@@ -41,38 +44,39 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import java.util.ArrayList;
import java.util.Arrays;

@RunWith(AndroidJUnit4.class)
public class NetworkProviderDownloadedSimsCategoryControllerTest {

    private static final String KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM =
            "provider_model_downloaded_sim_category";
    private static final String KEY_ADD_MORE = "add_more";
    private static final String SUB_1 = "SUB_1";
    private static final String SUB_2 = "SUB_2";
    private static final int SUB_ID_1 = 1;
    private static final int SUB_ID_2 = 2;

    @Mock
    private NetworkProviderDownloadedSimListController mNetworkProviderDownloadedSimListController;
    private Lifecycle mLifecycle;
    @Mock
    private PreferenceCategory mPreferenceCategory;
    private SubscriptionInfo mSubscriptionInfo1;
    @Mock
    private Lifecycle mLifecycle;
    private SubscriptionInfo mSubscriptionInfo2;

    private Context mContext;
    private NetworkProviderDownloadedSimsCategoryController mCategoryController;

    private PreferenceCategory mPreferenceCategory;
    private PreferenceManager mPreferenceManager;
    private PreferenceScreen mPreferenceScreen;
    private Preference mAddMorePreference;

    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);

        mContext = spy(ApplicationProvider.getApplicationContext());
        mCategoryController = new NetworkProviderDownloadedSimsCategoryController(
                mContext, KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM) {
            @Override
            protected NetworkProviderDownloadedSimListController createDownloadedSimListController(
                    Lifecycle lifecycle) {
                return mNetworkProviderDownloadedSimListController;
            }
        };

        if (Looper.myLooper() == null) {
            Looper.prepare();
@@ -80,14 +84,21 @@ public class NetworkProviderDownloadedSimsCategoryControllerTest {

        mPreferenceManager = new PreferenceManager(mContext);
        mPreferenceScreen = mPreferenceManager.createPreferenceScreen(mContext);
        when(mPreferenceCategory.getKey()).thenReturn(KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM);
        when(mPreferenceCategory.getPreferenceCount()).thenReturn(1);
        mPreferenceCategory = new PreferenceCategory(mContext);
        mPreferenceCategory.setKey(KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM);
        mAddMorePreference = new Preference(mContext);
        mAddMorePreference.setKey(KEY_ADD_MORE);
        mAddMorePreference.setVisible(true);
        mPreferenceScreen.addPreference(mPreferenceCategory);
        mPreferenceScreen.addPreference(mAddMorePreference);

        mCategoryController = new NetworkProviderDownloadedSimsCategoryController(mContext,
                KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM, mLifecycle);
    }

    @Test
    public void getAvailabilityStatus_returnUnavailable() {
        mNetworkProviderDownloadedSimListController = null;
        SubscriptionUtil.setAvailableSubscriptionsForTesting(new ArrayList<>());

        assertThat(mCategoryController.getAvailabilityStatus()).isEqualTo(
                CONDITIONALLY_UNAVAILABLE);
@@ -95,10 +106,46 @@ public class NetworkProviderDownloadedSimsCategoryControllerTest {

    @Test
    public void displayPreference_isVisible() {
        when(mNetworkProviderDownloadedSimListController.isAvailable()).thenReturn(true);
        mCategoryController.init(mLifecycle);
        setUpSubscriptionInfoForDownloadedSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
        SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSubscriptionInfo1));
        mCategoryController.displayPreference(mPreferenceScreen);

        assertEquals(mPreferenceCategory.isVisible(), true);
    }


    @Test
    public void updateState_setTitle_withTwoDownloadedSims_returnDownloadedSims() {
        setUpSubscriptionInfoForDownloadedSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
        setUpSubscriptionInfoForDownloadedSim(SUB_ID_2, SUB_2, mSubscriptionInfo2);
        SubscriptionUtil.setAvailableSubscriptionsForTesting(
                Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2));

        mCategoryController.displayPreference(mPreferenceScreen);
        mCategoryController.updateState(mPreferenceCategory);

        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
        assertThat(mPreferenceCategory.getTitle()).isEqualTo(
                ResourcesUtils.getResourcesString(mContext, "downloaded_sims_category_title"));
    }

    @Test
    public void updateState_setTitle_withOneDownloadedSim_returnDownloadedSim() {
        setUpSubscriptionInfoForDownloadedSim(SUB_ID_1, SUB_1, mSubscriptionInfo1);
        SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSubscriptionInfo1));

        mCategoryController.displayPreference(mPreferenceScreen);
        mCategoryController.updateState(mPreferenceCategory);

        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
        assertThat(mPreferenceCategory.getTitle()).isEqualTo(
                ResourcesUtils.getResourcesString(mContext, "downloaded_sim_category_title"));
    }

    private void setUpSubscriptionInfoForDownloadedSim(int subId, String displayName,
            SubscriptionInfo subscriptionInfo) {
        when(subscriptionInfo.isEmbedded()).thenReturn(true);
        when(subscriptionInfo.getSubscriptionId()).thenReturn(subId);
        when(subscriptionInfo.getDisplayName()).thenReturn(displayName);
    }
}
Loading