diff --git a/res/values/strings.xml b/res/values/strings.xml index 4d51512d29f..81bd75349d1 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -12302,8 +12302,10 @@ Can’t turn on %1$s To turn on %1$s, first end the satellite connection - + Satellite connectivity + + Satellite connectivity diff --git a/res/xml/mobile_network_settings.xml b/res/xml/mobile_network_settings.xml index fb20dceacd3..3c1317d15b5 100644 --- a/res/xml/mobile_network_settings.xml +++ b/res/xml/mobile_network_settings.xml @@ -206,7 +206,7 @@ availableServices) { + CarrierRoamingNtnModeListener.super.onCarrierRoamingNtnAvailableServicesChanged( + availableServices); + boolean isSmsAvailable = availableServices.contains(SERVICE_TYPE_SMS); + boolean isDataAvailable = availableServices.contains(SERVICE_TYPE_DATA); + Log.i(TAG, "isSmsAvailable : " + isSmsAvailable + + " / isDataAvailable " + isDataAvailable); + if (mPreferenceCategory == null) { + Log.d(TAG, "Satellite preference category is not initialized yet"); + return; + } + if (isDataAvailable) { + mPreferenceCategory.setTitle(R.string.category_title_satellite_connectivity); + } else if (isSmsAvailable) { + mPreferenceCategory.setTitle(R.string.satellite_setting_title); + } } - if (mSatelliteManager == null) { - Log.d(TAG, "getAvailabilityStatus(" + subId + ") : SatelliteManager is null"); - return UNSUPPORTED_ON_DEVICE; + @Override + public void onCarrierRoamingNtnEligibleStateChanged(boolean eligible) { + // Do nothing } - final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(subId); - final boolean isSatelliteAttachSupported = carrierConfig.getBoolean( - CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL); + @Override + public void onCarrierRoamingNtnModeChanged(boolean active) { + // Do nothing + } - return isSatelliteAttachSupported ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; + @Override + public void onCarrierRoamingNtnSignalStrengthChanged(NtnSignalStrength ntnSignalStrength) { + // Do nothing + } } } 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 3b6e9434ba8..52c317996d5 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,37 @@ package com.android.settings.network.telephony; -import static com.android.settings.core.BasePreferenceController.AVAILABLE; -import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE; +import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_DATA; +import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS; + +import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE; import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; import static com.google.common.truth.Truth.assertThat; 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.DisableFlags; -import android.platform.test.annotations.EnableFlags; -import android.platform.test.flag.junit.SetFlagsRule; -import android.telephony.CarrierConfigManager; -import android.telephony.satellite.SatelliteManager; +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 com.android.settings.R; import org.junit.Before; 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; +import java.util.List; + @RunWith(AndroidJUnit4.class) public class SatelliteSettingsPreferenceCategoryControllerTest { private static final String KEY = "key"; @@ -55,16 +54,9 @@ public class SatelliteSettingsPreferenceCategoryControllerTest { @Rule public final MockitoRule mMockitoRule = MockitoJUnit.rule(); - @Rule - public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); - - @Mock - private CarrierConfigCache mCarrierConfigCache; private Context mContext = null; - private SatelliteManager mSatelliteManager = null; private SatelliteSettingsPreferenceCategoryController mController = null; - private PersistableBundle mCarrierConfig = new PersistableBundle(); @Before public void setUp() { @@ -72,25 +64,38 @@ public class SatelliteSettingsPreferenceCategoryControllerTest { Looper.prepare(); } mContext = spy(ApplicationProvider.getApplicationContext()); - mSatelliteManager = new SatelliteManager(mContext); - CarrierConfigCache.setTestInstance(mContext, mCarrierConfigCache); - when(mContext.getSystemService(SatelliteManager.class)).thenReturn(mSatelliteManager); mController = new SatelliteSettingsPreferenceCategoryController(mContext, KEY); } @Test - @DisableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG) - public void getAvailabilityStatus_featureDisabled_returnUnsupport() { + public void getAvailabilityStatus_default_returnUnsupported() { int result = mController.getAvailabilityStatus(TEST_SUB_ID); - assertThat(result).isEqualTo(UNSUPPORTED_ON_DEVICE); } @Test - @EnableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG) - public void getAvailabilityStatus_noSatellite_returnUnsupport() { - when(mContext.getSystemService(SatelliteManager.class)).thenReturn(null); - mController = new SatelliteSettingsPreferenceCategoryController(mContext, KEY); + public void getAvailabilityStatus_hasAvailablePreference_returnAvailableUnsearchable() { + 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(AVAILABLE_UNSEARCHABLE); + } + + @Test + public void getAvailabilityStatus_noAvailablePreference_returnUnsupported() { + PreferenceManager preferenceManager = new PreferenceManager(mContext); + PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext); + PreferenceCategory preferenceCategory = new PreferenceCategory(mContext); + preferenceCategory.setKey(KEY); + preferenceScreen.addPreference(preferenceCategory); + mController.displayPreference(preferenceScreen); int result = mController.getAvailabilityStatus(TEST_SUB_ID); @@ -98,30 +103,37 @@ public class SatelliteSettingsPreferenceCategoryControllerTest { } @Test - @EnableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG) - public void getAvailabilityStatus_carrierIsNotSupport_returnUnavailable() { - when(mContext.getSystemService(SatelliteManager.class)).thenReturn(null); - mCarrierConfig.putBoolean( - CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, - false); - when(mCarrierConfigCache.getConfigForSubId(TEST_SUB_ID)).thenReturn(mCarrierConfig); + public void setPreferenceTitle_hasDataService_showConnectivity() { + 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); + mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged( + List.of(SERVICE_TYPE_DATA)); - assertThat(result).isEqualTo(CONDITIONALLY_UNAVAILABLE); + assertThat(preferenceCategory.getTitle()).isEqualTo( + mContext.getString(R.string.satellite_setting_connectivity)); } + @Test - @EnableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG) - public void getAvailabilityStatus_carrierIsSupport_returnAvailable() { - when(mContext.getSystemService(SatelliteManager.class)).thenReturn(null); - mCarrierConfig.putBoolean( - CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, - true); - when(mCarrierConfigCache.getConfigForSubId(TEST_SUB_ID)).thenReturn(mCarrierConfig); + 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); + mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged( + List.of(SERVICE_TYPE_SMS)); - assertThat(result).isEqualTo(AVAILABLE); + assertThat(preferenceCategory.getTitle()).isEqualTo( + mContext.getString(R.string.satellite_setting_title)); } }