From b7891e879f97cecddc31aadb8f306234d9182b9b Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Thu, 12 Mar 2020 17:34:20 +0800 Subject: [PATCH] [Settings] Refactor Telephony PreferenceController Refactor TelephonyBasePreferenceController and TelephonyTogglePreferenceController Bug: 150352656 Test: make Change-Id: I3d52054fd9fbc5597db6266686d155a12d5a88d6 --- .../TelephonyBasePreferenceController.java | 18 ++++++++++++++++++ .../TelephonyTogglePreferenceController.java | 18 ++++++++++++++++++ .../TelephonyBasePreferenceControllerTest.java | 11 ++++++++--- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/network/telephony/TelephonyBasePreferenceController.java b/src/com/android/settings/network/telephony/TelephonyBasePreferenceController.java index e4ff5c4c78e..241dc5dac65 100644 --- a/src/com/android/settings/network/telephony/TelephonyBasePreferenceController.java +++ b/src/com/android/settings/network/telephony/TelephonyBasePreferenceController.java @@ -17,6 +17,8 @@ package com.android.settings.network.telephony; import android.content.Context; +import android.os.PersistableBundle; +import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import com.android.settings.core.BasePreferenceController; @@ -37,4 +39,20 @@ public abstract class TelephonyBasePreferenceController extends BasePreferenceCo public int getAvailabilityStatus() { return MobileNetworkUtils.getAvailability(mContext, mSubId, this::getAvailabilityStatus); } + + /** + * Get carrier config based on specific subscription id. + * + * @param subId is the subscription id + * @return {@link PersistableBundle} of carrier config, or {@code null} when carrier config + * is not available. + */ + public PersistableBundle getCarrierConfigForSubId(int subId) { + if (!SubscriptionManager.isValidSubscriptionId(subId)) { + return null; + } + final CarrierConfigManager carrierConfigMgr = + mContext.getSystemService(CarrierConfigManager.class); + return carrierConfigMgr.getConfigForSubId(subId); + } } diff --git a/src/com/android/settings/network/telephony/TelephonyTogglePreferenceController.java b/src/com/android/settings/network/telephony/TelephonyTogglePreferenceController.java index 71efc57fb5a..fc3003041b8 100644 --- a/src/com/android/settings/network/telephony/TelephonyTogglePreferenceController.java +++ b/src/com/android/settings/network/telephony/TelephonyTogglePreferenceController.java @@ -17,6 +17,8 @@ package com.android.settings.network.telephony; import android.content.Context; +import android.os.PersistableBundle; +import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import com.android.settings.core.TogglePreferenceController; @@ -37,4 +39,20 @@ public abstract class TelephonyTogglePreferenceController extends TogglePreferen public int getAvailabilityStatus() { return MobileNetworkUtils.getAvailability(mContext, mSubId, this::getAvailabilityStatus); } + + /** + * Get carrier config based on specific subscription id. + * + * @param subId is the subscription id + * @return {@link PersistableBundle} of carrier config, or {@code null} when carrier config + * is not available. + */ + public PersistableBundle getCarrierConfigForSubId(int subId) { + if (!SubscriptionManager.isValidSubscriptionId(subId)) { + return null; + } + final CarrierConfigManager carrierConfigMgr = + mContext.getSystemService(CarrierConfigManager.class); + return carrierConfigMgr.getConfigForSubId(subId); + } } diff --git a/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java index 886ea177d9f..6ba2ffac4f5 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/TelephonyBasePreferenceControllerTest.java @@ -22,6 +22,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; +import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import org.junit.Before; @@ -32,12 +33,16 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import java.util.Arrays; + @RunWith(RobolectricTestRunner.class) public class TelephonyBasePreferenceControllerTest { private static final int VALID_SUB_ID = 1; @Mock private SubscriptionManager mSubscriptionManager; + @Mock + private SubscriptionInfo mSubscriptionInfo; private TestPreferenceController mPreferenceController; private Context mContext; @@ -49,7 +54,7 @@ public class TelephonyBasePreferenceControllerTest { mContext = spy(RuntimeEnvironment.application); when(mContext.getSystemService(SubscriptionManager.class)) .thenReturn(mSubscriptionManager); - when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[]{}); + when(mSubscriptionInfo.getSubscriptionId()).thenReturn(VALID_SUB_ID); mPreferenceController = new TestPreferenceController(mContext, "prefKey"); } @@ -62,8 +67,8 @@ public class TelephonyBasePreferenceControllerTest { @Test public void isAvailable_noIdSetHoweverHasDefaultOne_returnTrue() { - when(mSubscriptionManager.getActiveSubscriptionIdList()) - .thenReturn(new int[]{VALID_SUB_ID}); + when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn( + Arrays.asList(mSubscriptionInfo)); assertThat(mPreferenceController.isAvailable()).isTrue(); }