Loading res/xml/mobile_network_settings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -204,7 +204,7 @@ <PreferenceCategory android:key="telephony_satellite_settings_category_key" android:title="@string/satellite_setting_title" android:title="@string/category_title_satellite_connectivity" settings:controller="com.android.settings.network.telephony.SatelliteSettingsPreferenceCategoryController"> <com.android.settingslib.RestrictedPreference Loading src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryController.java +108 −11 Original line number Diff line number Diff line Loading @@ -16,35 +16,48 @@ package com.android.settings.network.telephony; import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC; import static android.telephony.CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT; import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL; import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ESOS_SUPPORTED_BOOL; import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS; import android.content.Context; import android.os.PersistableBundle; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; import android.telephony.satellite.NtnSignalStrength; import android.telephony.satellite.SatelliteManager; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.preference.PreferenceCategory; import androidx.lifecycle.LifecycleOwner; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.flags.Flags; import com.android.settings.network.CarrierConfigCache; import java.util.Arrays; import java.util.List; /** Preference controller for Satellite functions in mobile network settings. */ public class SatelliteSettingsPreferenceCategoryController extends TelephonyBasePreferenceController implements DefaultLifecycleObserver { private static final String TAG = "SatelliteSettingsPrefCategoryCon"; @VisibleForTesting final CarrierRoamingNtnModeCallback mCarrierRoamingNtnModeCallback = new CarrierRoamingNtnModeCallback(this); private CarrierConfigCache mCarrierConfigCache; private SatelliteManager mSatelliteManager; private PreferenceCategory mPreferenceCategory; private TelephonyManager mTelephonyManager; private PreferenceScreen mPreferenceScreen; public SatelliteSettingsPreferenceCategoryController(Context context, String key) { super(context, key); mCarrierConfigCache = CarrierConfigCache.getInstance(context); mSatelliteManager = context.getSystemService(SatelliteManager.class); } /** Loading @@ -55,13 +68,23 @@ public class SatelliteSettingsPreferenceCategoryController public void init(int subId) { Log.d(TAG, "init(), subId=" + subId); mSubId = subId; mCarrierConfigCache = CarrierConfigCache.getInstance(mContext); mSatelliteManager = mContext.getSystemService(SatelliteManager.class); mTelephonyManager = mContext.getSystemService(TelephonyManager.class); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreferenceCategory = screen.findPreference(getPreferenceKey()); mPreferenceCategory.setTitle(R.string.category_title_satellite_connectivity); if (mPreferenceScreen != null) { mPreferenceScreen = screen; } } void displayPreference() { if (mPreferenceScreen != null) { displayPreference(mPreferenceScreen); } } @Override Loading @@ -75,15 +98,89 @@ public class SatelliteSettingsPreferenceCategoryController } final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(subId); final boolean isSatelliteAttachSupported = carrierConfig.getBoolean( KEY_SATELLITE_ATTACH_SUPPORTED_BOOL); boolean isSatelliteSosSupported = false; if (Flags.satelliteOemSettingsUxMigration()) { isSatelliteSosSupported = carrierConfig.getBoolean( KEY_SATELLITE_ESOS_SUPPORTED_BOOL); } return (isSatelliteAttachSupported || isSatelliteSosSupported) ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; if (!carrierConfig.getBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL)) { return UNSUPPORTED_ON_DEVICE; } if (isSatelliteSosSupported) { return AVAILABLE_UNSEARCHABLE; } if (CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC == carrierConfig.getInt( KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT, CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC)) { return AVAILABLE_UNSEARCHABLE; } else { return mCarrierRoamingNtnModeCallback.isSatelliteSmsAvailable() ? AVAILABLE_UNSEARCHABLE : CONDITIONALLY_UNAVAILABLE; } } @Override public void onResume(@NonNull LifecycleOwner owner) { if (com.android.settings.flags.Flags.satelliteOemSettingsUxMigration()) { if (mTelephonyManager != null) { mTelephonyManager.registerTelephonyCallback(mContext.getMainExecutor(), mCarrierRoamingNtnModeCallback); } } } @Override public void onPause(@NonNull LifecycleOwner owner) { if (com.android.settings.flags.Flags.satelliteOemSettingsUxMigration()) { if (mTelephonyManager != null) { mTelephonyManager.unregisterTelephonyCallback(mCarrierRoamingNtnModeCallback); } } } @VisibleForTesting static class CarrierRoamingNtnModeCallback extends TelephonyCallback implements TelephonyCallback.CarrierRoamingNtnListener { SatelliteSettingsPreferenceCategoryController mController; private boolean mIsSatelliteSmsAvailable = false; CarrierRoamingNtnModeCallback( SatelliteSettingsPreferenceCategoryController controller) { mController = controller; } boolean isSatelliteSmsAvailable() { return mIsSatelliteSmsAvailable; } @Override public void onCarrierRoamingNtnAvailableServicesChanged(@NonNull int[] availableServices) { CarrierRoamingNtnListener.super.onCarrierRoamingNtnAvailableServicesChanged( availableServices); List<Integer> availableServicesList = Arrays.stream(availableServices).boxed().toList(); mIsSatelliteSmsAvailable = availableServicesList.contains(SERVICE_TYPE_SMS); Log.d(TAG, "isSmsAvailable : " + mIsSatelliteSmsAvailable); mController.displayPreference(); } @Override public void onCarrierRoamingNtnEligibleStateChanged(boolean eligible) { // Do nothing } @Override public void onCarrierRoamingNtnModeChanged(boolean active) { // Do nothing } @Override public void onCarrierRoamingNtnSignalStrengthChanged( @NonNull NtnSignalStrength ntnSignalStrength) { // Do nothing } } } tests/unit/src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryControllerTest.java +101 −20 Original line number Diff line number Diff line Loading @@ -16,29 +16,38 @@ package com.android.settings.network.telephony; import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC; import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_MANUAL; import static android.telephony.CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT; import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL; import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ESOS_SUPPORTED_BOOL; import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS; import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; import static com.google.common.truth.Truth.assertThat; import static junit.framework.Assert.assertEquals; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.os.Looper; import android.os.PersistableBundle; import android.platform.test.annotations.EnableFlags; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.internal.telephony.flags.Flags; import com.android.settings.network.CarrierConfigCache; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; Loading @@ -50,8 +59,12 @@ public class SatelliteSettingsPreferenceCategoryControllerTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); @Mock private CarrierConfigCache mCarrierConfigCache; private Context mContext = null; private SatelliteSettingsPreferenceCategoryController mController = null; private PersistableBundle mPersistableBundle = new PersistableBundle(); @Before public void setUp() { Loading @@ -59,27 +72,95 @@ public class SatelliteSettingsPreferenceCategoryControllerTest { Looper.prepare(); } mContext = spy(ApplicationProvider.getApplicationContext()); CarrierConfigCache.setTestInstance(mContext, mCarrierConfigCache); mController = new SatelliteSettingsPreferenceCategoryController(mContext, KEY); when(mCarrierConfigCache.getConfigForSubId(TEST_SUB_ID)).thenReturn(mPersistableBundle); } @Test @Ignore("b/382664790") public void getAvailabilityStatus_default_returnUnsupported() { public void getAvailabilityStatus_deviceUnsupported_returnUnsupported() { int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(UNSUPPORTED_ON_DEVICE); } @Test @Ignore("b/382664790") public void setPreferenceTitle_hasSmsService_showMessaging() { PreferenceManager preferenceManager = new PreferenceManager(mContext); PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext); PreferenceCategory preferenceCategory = new PreferenceCategory(mContext); preferenceCategory.setKey(KEY); preferenceScreen.addPreference(preferenceCategory); preferenceCategory.addPreference(new Preference(mContext)); mController.displayPreference(preferenceScreen); assertEquals(preferenceCategory.getTitle(), "Satellite connectivity"); public void getAvailabilityStatus_carrierNotSupport_returnUnsupported() { mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, false); mController.init(TEST_SUB_ID); int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(UNSUPPORTED_ON_DEVICE); } @Test @EnableFlags({ Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG, com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION }) public void getAvailabilityStatus_sosSupported_returnAvailable() { mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, true); mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); mController.init(TEST_SUB_ID); int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(AVAILABLE_UNSEARCHABLE); } @Test @EnableFlags({ Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG, com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION }) public void getAvailabilityStatus_connectTypeAuto_returnAvailable() { mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, false); mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); mPersistableBundle.putInt(KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT, CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC); mController.init(TEST_SUB_ID); int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(AVAILABLE_UNSEARCHABLE); } @Test @EnableFlags({ Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG, com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION }) public void getAvailabilityStatus_connectTypeManualAndAvailable_returnAvailable() { mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, false); mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); mPersistableBundle.putInt(KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT, CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC); mController.init(TEST_SUB_ID); mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged( new int[]{SERVICE_TYPE_SMS}); int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(AVAILABLE_UNSEARCHABLE); } @Test @EnableFlags({ Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG, com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION }) public void getAvailabilityStatus_connectTypeManualAndUnavailable_returnUnavailable() { mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, false); mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); mPersistableBundle.putInt(KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT, CARRIER_ROAMING_NTN_CONNECT_MANUAL); mController.init(TEST_SUB_ID); mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged( new int[]{}); int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(CONDITIONALLY_UNAVAILABLE); } } Loading
res/xml/mobile_network_settings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -204,7 +204,7 @@ <PreferenceCategory android:key="telephony_satellite_settings_category_key" android:title="@string/satellite_setting_title" android:title="@string/category_title_satellite_connectivity" settings:controller="com.android.settings.network.telephony.SatelliteSettingsPreferenceCategoryController"> <com.android.settingslib.RestrictedPreference Loading
src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryController.java +108 −11 Original line number Diff line number Diff line Loading @@ -16,35 +16,48 @@ package com.android.settings.network.telephony; import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC; import static android.telephony.CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT; import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL; import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ESOS_SUPPORTED_BOOL; import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS; import android.content.Context; import android.os.PersistableBundle; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; import android.telephony.satellite.NtnSignalStrength; import android.telephony.satellite.SatelliteManager; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.DefaultLifecycleObserver; import androidx.preference.PreferenceCategory; import androidx.lifecycle.LifecycleOwner; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.flags.Flags; import com.android.settings.network.CarrierConfigCache; import java.util.Arrays; import java.util.List; /** Preference controller for Satellite functions in mobile network settings. */ public class SatelliteSettingsPreferenceCategoryController extends TelephonyBasePreferenceController implements DefaultLifecycleObserver { private static final String TAG = "SatelliteSettingsPrefCategoryCon"; @VisibleForTesting final CarrierRoamingNtnModeCallback mCarrierRoamingNtnModeCallback = new CarrierRoamingNtnModeCallback(this); private CarrierConfigCache mCarrierConfigCache; private SatelliteManager mSatelliteManager; private PreferenceCategory mPreferenceCategory; private TelephonyManager mTelephonyManager; private PreferenceScreen mPreferenceScreen; public SatelliteSettingsPreferenceCategoryController(Context context, String key) { super(context, key); mCarrierConfigCache = CarrierConfigCache.getInstance(context); mSatelliteManager = context.getSystemService(SatelliteManager.class); } /** Loading @@ -55,13 +68,23 @@ public class SatelliteSettingsPreferenceCategoryController public void init(int subId) { Log.d(TAG, "init(), subId=" + subId); mSubId = subId; mCarrierConfigCache = CarrierConfigCache.getInstance(mContext); mSatelliteManager = mContext.getSystemService(SatelliteManager.class); mTelephonyManager = mContext.getSystemService(TelephonyManager.class); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreferenceCategory = screen.findPreference(getPreferenceKey()); mPreferenceCategory.setTitle(R.string.category_title_satellite_connectivity); if (mPreferenceScreen != null) { mPreferenceScreen = screen; } } void displayPreference() { if (mPreferenceScreen != null) { displayPreference(mPreferenceScreen); } } @Override Loading @@ -75,15 +98,89 @@ public class SatelliteSettingsPreferenceCategoryController } final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(subId); final boolean isSatelliteAttachSupported = carrierConfig.getBoolean( KEY_SATELLITE_ATTACH_SUPPORTED_BOOL); boolean isSatelliteSosSupported = false; if (Flags.satelliteOemSettingsUxMigration()) { isSatelliteSosSupported = carrierConfig.getBoolean( KEY_SATELLITE_ESOS_SUPPORTED_BOOL); } return (isSatelliteAttachSupported || isSatelliteSosSupported) ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; if (!carrierConfig.getBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL)) { return UNSUPPORTED_ON_DEVICE; } if (isSatelliteSosSupported) { return AVAILABLE_UNSEARCHABLE; } if (CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC == carrierConfig.getInt( KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT, CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC)) { return AVAILABLE_UNSEARCHABLE; } else { return mCarrierRoamingNtnModeCallback.isSatelliteSmsAvailable() ? AVAILABLE_UNSEARCHABLE : CONDITIONALLY_UNAVAILABLE; } } @Override public void onResume(@NonNull LifecycleOwner owner) { if (com.android.settings.flags.Flags.satelliteOemSettingsUxMigration()) { if (mTelephonyManager != null) { mTelephonyManager.registerTelephonyCallback(mContext.getMainExecutor(), mCarrierRoamingNtnModeCallback); } } } @Override public void onPause(@NonNull LifecycleOwner owner) { if (com.android.settings.flags.Flags.satelliteOemSettingsUxMigration()) { if (mTelephonyManager != null) { mTelephonyManager.unregisterTelephonyCallback(mCarrierRoamingNtnModeCallback); } } } @VisibleForTesting static class CarrierRoamingNtnModeCallback extends TelephonyCallback implements TelephonyCallback.CarrierRoamingNtnListener { SatelliteSettingsPreferenceCategoryController mController; private boolean mIsSatelliteSmsAvailable = false; CarrierRoamingNtnModeCallback( SatelliteSettingsPreferenceCategoryController controller) { mController = controller; } boolean isSatelliteSmsAvailable() { return mIsSatelliteSmsAvailable; } @Override public void onCarrierRoamingNtnAvailableServicesChanged(@NonNull int[] availableServices) { CarrierRoamingNtnListener.super.onCarrierRoamingNtnAvailableServicesChanged( availableServices); List<Integer> availableServicesList = Arrays.stream(availableServices).boxed().toList(); mIsSatelliteSmsAvailable = availableServicesList.contains(SERVICE_TYPE_SMS); Log.d(TAG, "isSmsAvailable : " + mIsSatelliteSmsAvailable); mController.displayPreference(); } @Override public void onCarrierRoamingNtnEligibleStateChanged(boolean eligible) { // Do nothing } @Override public void onCarrierRoamingNtnModeChanged(boolean active) { // Do nothing } @Override public void onCarrierRoamingNtnSignalStrengthChanged( @NonNull NtnSignalStrength ntnSignalStrength) { // Do nothing } } }
tests/unit/src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryControllerTest.java +101 −20 Original line number Diff line number Diff line Loading @@ -16,29 +16,38 @@ package com.android.settings.network.telephony; import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC; import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_MANUAL; import static android.telephony.CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT; import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL; import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ESOS_SUPPORTED_BOOL; import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS; import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE; import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; import static com.google.common.truth.Truth.assertThat; import static junit.framework.Assert.assertEquals; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.os.Looper; import android.os.PersistableBundle; import android.platform.test.annotations.EnableFlags; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.internal.telephony.flags.Flags; import com.android.settings.network.CarrierConfigCache; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; Loading @@ -50,8 +59,12 @@ public class SatelliteSettingsPreferenceCategoryControllerTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); @Mock private CarrierConfigCache mCarrierConfigCache; private Context mContext = null; private SatelliteSettingsPreferenceCategoryController mController = null; private PersistableBundle mPersistableBundle = new PersistableBundle(); @Before public void setUp() { Loading @@ -59,27 +72,95 @@ public class SatelliteSettingsPreferenceCategoryControllerTest { Looper.prepare(); } mContext = spy(ApplicationProvider.getApplicationContext()); CarrierConfigCache.setTestInstance(mContext, mCarrierConfigCache); mController = new SatelliteSettingsPreferenceCategoryController(mContext, KEY); when(mCarrierConfigCache.getConfigForSubId(TEST_SUB_ID)).thenReturn(mPersistableBundle); } @Test @Ignore("b/382664790") public void getAvailabilityStatus_default_returnUnsupported() { public void getAvailabilityStatus_deviceUnsupported_returnUnsupported() { int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(UNSUPPORTED_ON_DEVICE); } @Test @Ignore("b/382664790") public void setPreferenceTitle_hasSmsService_showMessaging() { PreferenceManager preferenceManager = new PreferenceManager(mContext); PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext); PreferenceCategory preferenceCategory = new PreferenceCategory(mContext); preferenceCategory.setKey(KEY); preferenceScreen.addPreference(preferenceCategory); preferenceCategory.addPreference(new Preference(mContext)); mController.displayPreference(preferenceScreen); assertEquals(preferenceCategory.getTitle(), "Satellite connectivity"); public void getAvailabilityStatus_carrierNotSupport_returnUnsupported() { mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, false); mController.init(TEST_SUB_ID); int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(UNSUPPORTED_ON_DEVICE); } @Test @EnableFlags({ Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG, com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION }) public void getAvailabilityStatus_sosSupported_returnAvailable() { mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, true); mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); mController.init(TEST_SUB_ID); int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(AVAILABLE_UNSEARCHABLE); } @Test @EnableFlags({ Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG, com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION }) public void getAvailabilityStatus_connectTypeAuto_returnAvailable() { mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, false); mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); mPersistableBundle.putInt(KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT, CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC); mController.init(TEST_SUB_ID); int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(AVAILABLE_UNSEARCHABLE); } @Test @EnableFlags({ Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG, com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION }) public void getAvailabilityStatus_connectTypeManualAndAvailable_returnAvailable() { mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, false); mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); mPersistableBundle.putInt(KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT, CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC); mController.init(TEST_SUB_ID); mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged( new int[]{SERVICE_TYPE_SMS}); int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(AVAILABLE_UNSEARCHABLE); } @Test @EnableFlags({ Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG, com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION }) public void getAvailabilityStatus_connectTypeManualAndUnavailable_returnUnavailable() { mPersistableBundle.putBoolean(KEY_SATELLITE_ESOS_SUPPORTED_BOOL, false); mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); mPersistableBundle.putInt(KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT, CARRIER_ROAMING_NTN_CONNECT_MANUAL); mController.init(TEST_SUB_ID); mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged( new int[]{}); int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(CONDITIONALLY_UNAVAILABLE); } }