diff --git a/src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryController.java b/src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryController.java index 29502477796..6218e055038 100644 --- a/src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryController.java +++ b/src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryController.java @@ -16,48 +16,35 @@ 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.lifecycle.LifecycleOwner; +import androidx.preference.PreferenceCategory; 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 TelephonyManager mTelephonyManager; - private PreferenceScreen mPreferenceScreen; + private PreferenceCategory mPreferenceCategory; public SatelliteSettingsPreferenceCategoryController(Context context, String key) { super(context, key); + mCarrierConfigCache = CarrierConfigCache.getInstance(context); + mSatelliteManager = context.getSystemService(SatelliteManager.class); } /** @@ -68,23 +55,13 @@ 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); - if (mPreferenceScreen != null) { - mPreferenceScreen = screen; - } - } - - void displayPreference() { - if (mPreferenceScreen != null) { - displayPreference(mPreferenceScreen); - } + mPreferenceCategory = screen.findPreference(getPreferenceKey()); + mPreferenceCategory.setTitle(R.string.category_title_satellite_connectivity); } @Override @@ -98,89 +75,15 @@ 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); } - 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 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 - } + return (isSatelliteAttachSupported || isSatelliteSosSupported) + ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; } } diff --git a/tests/unit/src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryControllerTest.java index a5f5114afe6..085a68d8173 100644 --- a/tests/unit/src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/SatelliteSettingsPreferenceCategoryControllerTest.java @@ -16,38 +16,29 @@ 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; @@ -59,12 +50,8 @@ 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() { @@ -72,95 +59,27 @@ 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 - public void getAvailabilityStatus_deviceUnsupported_returnUnsupported() { + @Ignore("b/382664790") + public void getAvailabilityStatus_default_returnUnsupported() { int result = mController.getAvailabilityStatus(TEST_SUB_ID); assertThat(result).isEqualTo(UNSUPPORTED_ON_DEVICE); } @Test - public void getAvailabilityStatus_carrierNotSupport_returnUnsupported() { - mPersistableBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, false); - mController.init(TEST_SUB_ID); + @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); - 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); + assertEquals(preferenceCategory.getTitle(), "Satellite connectivity"); } }