[Satellite] Add satellite string for KDDI if no entitlement

- Currently Android only handles Satellite w/ entitlement for any notifications. Some carriers such as KDDI have no entitlement for satellite service, so this change is to add some strings to avoid any confuse to Android user on satellite service.

Flag: EXEMPT resource update
Fix: b/382387532
Test: Manual test
Test: atest pass
Change-Id: I835787c9e0fe29eeecec0470e9bd6b38939abd8c
This commit is contained in:
tom hsu
2025-02-10 03:59:02 +00:00
committed by Tom Hsu
parent 6dfa9e206d
commit 292f1bdd01
4 changed files with 166 additions and 51 deletions

View File

@@ -16,10 +16,12 @@
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_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL;
import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_DATA;
import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS;
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
@@ -39,6 +41,9 @@ import android.telephony.TelephonyManager;
import android.telephony.satellite.SatelliteManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -47,7 +52,6 @@ import com.android.settings.R;
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;
@@ -56,10 +60,10 @@ import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
@RunWith(AndroidJUnit4.class)
@Ignore("b/382664790")
@UiThreadTest
public class SatelliteSettingsPreferenceControllerTest {
private static final String KEY = "key";
private static final int TEST_SUB_ID = 0;
private static final String KEY = "SatelliteSettingsPreferenceControllerTest";
private static final int TEST_SUB_ID = 5;
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -85,12 +89,13 @@ public class SatelliteSettingsPreferenceControllerTest {
when(mContext.getSystemService(SatelliteManager.class)).thenReturn(mSatelliteManager);
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
when(mTelephonyManager.createForSubscriptionId(TEST_SUB_ID)).thenReturn(mTelephonyManager);
when(mCarrierConfigCache.getConfigForSubId(TEST_SUB_ID)).thenReturn(mCarrierConfig);
mController = spy(new SatelliteSettingPreferenceController(mContext, KEY));
}
@Test
@EnableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
public void getAvailabilityStatus_noSatellite_returnUnsupport() {
public void getAvailabilityStatus_noSatellite_returnUnsupported() {
when(mContext.getSystemService(SatelliteManager.class)).thenReturn(null);
mController = new SatelliteSettingPreferenceController(mContext, KEY);
@@ -102,11 +107,39 @@ public class SatelliteSettingsPreferenceControllerTest {
@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);
int result = mController.getAvailabilityStatus(TEST_SUB_ID);
assertThat(result).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
@Test
@EnableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
public void getAvailabilityStatus_ntnConnectIsManual_returnUnavailable() {
mCarrierConfig.putBoolean(
CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL,
true);
mCarrierConfig.putInt(
CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
CARRIER_ROAMING_NTN_CONNECT_MANUAL);
int result = mController.getAvailabilityStatus(TEST_SUB_ID);
assertThat(result).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
@Test
@EnableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
public void getAvailabilityStatus_smsNotAvailable_returnUnavailable() {
mCarrierConfig.putBoolean(
CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL,
true);
mCarrierConfig.putInt(
CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC);
mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged(
new int[]{SERVICE_TYPE_SMS});
int result = mController.getAvailabilityStatus(TEST_SUB_ID);
@@ -115,22 +148,25 @@ public class SatelliteSettingsPreferenceControllerTest {
@Test
@EnableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG)
public void getAvailabilityStatus_carrierIsSupport_returnAvailable() {
when(mContext.getSystemService(SatelliteManager.class)).thenReturn(null);
public void getAvailabilityStatus_matchAllConditions_returnAvailable() {
mCarrierConfig.putBoolean(
CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL,
true);
when(mCarrierConfigCache.getConfigForSubId(TEST_SUB_ID)).thenReturn(mCarrierConfig);
mCarrierConfig.putInt(
CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC);
mController.mCarrierRoamingNtnModeCallback.onCarrierRoamingNtnAvailableServicesChanged(
new int[]{SERVICE_TYPE_SMS});
int result = mController.getAvailabilityStatus(TEST_SUB_ID);
assertThat(result).isEqualTo(AVAILABLE);
assertThat(result).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
@Test
@Ignore("avoid post submit failed")
@EnableFlags(com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION)
public void getAvailabilityStatus_registerTelephonyCallback_success() {
public void onResume_registerTelephonyCallback_success() {
mController.init(TEST_SUB_ID);
mController.onResume(null);
@@ -138,7 +174,6 @@ public class SatelliteSettingsPreferenceControllerTest {
}
@Test
@Ignore("avoid post submit failed")
@EnableFlags(com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION)
public void getAvailabilityStatus_unregisterTelephonyCallback_success() {
mController.init(TEST_SUB_ID);
@@ -178,4 +213,66 @@ public class SatelliteSettingsPreferenceControllerTest {
assertThat(preference.getTitle()).isEqualTo(
mContext.getString(R.string.satellite_setting_title));
}
@Test
@EnableFlags(com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION)
public void getAvailabilityStatus_noEntitlement_showSummaryWithoutEntitlement() {
mCarrierConfig.putBoolean(
KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL,
false);
mController.init(TEST_SUB_ID);
Preference preference = new Preference(mContext);
preference.setKey(KEY);
preference.setTitle("test title");
mController.updateState(preference);
assertThat(preference.getSummary()).isEqualTo(
mContext.getString(R.string.satellite_setting_summary_without_entitlement));
}
@Test
@EnableFlags(com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION)
public void getAvailabilityStatus_smsAvailableForManualType_showSummaryWithAccount() {
mCarrierConfig.putBoolean(
KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL,
true);
mCarrierConfig.putInt(
CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
CARRIER_ROAMING_NTN_CONNECT_MANUAL);
mController.init(TEST_SUB_ID);
PreferenceManager preferenceManager = new PreferenceManager(mContext);
PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext);
Preference preference = new Preference(mContext);
preference.setKey(KEY);
preference.setTitle("test title");
preferenceScreen.addPreference(preference);
mController.mIsSatelliteSmsAvailableForManualType = true;
mController.displayPreference(preferenceScreen);
assertThat(preference.getSummary()).isEqualTo(
mContext.getString(R.string.satellite_setting_enabled_summary));
}
@Test
@EnableFlags(com.android.settings.flags.Flags.FLAG_SATELLITE_OEM_SETTINGS_UX_MIGRATION)
public void getAvailabilityStatus_smsAvailableForAutoType_showSummaryWithoutAccount() {
mCarrierConfig.putBoolean(
KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL,
true);
mCarrierConfig.putInt(
CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
CARRIER_ROAMING_NTN_CONNECT_MANUAL);
mController.init(TEST_SUB_ID);
PreferenceManager preferenceManager = new PreferenceManager(mContext);
PreferenceScreen preferenceScreen = preferenceManager.createPreferenceScreen(mContext);
Preference preference = new Preference(mContext);
preference.setKey(KEY);
preference.setTitle("test title");
preferenceScreen.addPreference(preference);
mController.mIsSatelliteSmsAvailableForManualType = false;
mController.displayPreference(preferenceScreen);
assertThat(preference.getSummary()).isEqualTo(
mContext.getString(R.string.satellite_setting_disabled_summary));
}
}