Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +2 −5 Original line number Diff line number Diff line Loading @@ -2993,14 +2993,11 @@ public class ServiceStateTracker extends Handler { String satellitePlmn = null; SatelliteModemStateListener satelliteModemStateListener = getSatelliteModemStateListener(); if (combinedRegState == ServiceState.STATE_OUT_OF_SERVICE && satelliteModemStateListener != null if (satelliteModemStateListener != null && satelliteModemStateListener.isInConnectedState()) { // If device is connected to the nb-iot satellite, // 1) No service but nb-iot satellite is connected -> // expected to show "Satellite" for demo mode. satellitePlmn = getSatelliteDisplayName(); } log("updateCarrierDisplayName: satellitePlmn=" + satellitePlmn); if (mPhone.isPhoneTypeGsm()) { // The values of plmn/showPlmn change in different scenarios. Loading src/java/com/android/internal/telephony/satellite/SatelliteController.java +16 −4 Original line number Diff line number Diff line Loading @@ -614,7 +614,8 @@ public class SatelliteController extends Handler { new ArrayList<>(); // The ID of the satellite subscription that has highest priority and is provisioned. @GuardedBy("mSatelliteTokenProvisionedLock") private int mSelectedSatelliteSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected int mSelectedSatelliteSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; // The last ICC ID that framework configured to modem. @GuardedBy("mSatelliteTokenProvisionedLock") private String mLastConfiguredIccId; Loading Loading @@ -7426,9 +7427,13 @@ public class SatelliteController extends Handler { selectedSubId = getNtnOnlySubscriptionId(); } synchronized (mSatelliteTokenProvisionedLock) { mSelectedSatelliteSubId = selectedSubId; int preSelectedSatelliteSubId = getSelectedSatelliteSubId(); setSelectedSatelliteSubId(selectedSubId); if (preSelectedSatelliteSubId != getSelectedSatelliteSubId()) { plogd("selectBindingSatelliteSubscription: SelectedSatelliteSubId changed"); evaluateCarrierRoamingNtnEligibilityChange(); } setSatellitePhone(selectedSubId); if (selectedSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { int carrierId = getSatelliteCarrierId(); Loading Loading @@ -7714,6 +7719,13 @@ public class SatelliteController extends Handler { } } @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected void setSelectedSatelliteSubId(int subId) { synchronized (mSatelliteTokenProvisionedLock) { mSelectedSatelliteSubId = subId; } } /** Return the carrier ID of the binding satellite subscription. */ public int getSatelliteCarrierId() { synchronized (mSatelliteTokenProvisionedLock) { Loading Loading @@ -7764,7 +7776,7 @@ public class SatelliteController extends Handler { return false; } int subId = phone.getSubId(); int subId = getSelectedSatelliteSubId(); if (!isSatelliteRoamingP2pSmSSupported(subId)) { plogd("isCarrierRoamingNtnEligible(" + subId + "): doesn't support P2P SMS"); return false; Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -3590,6 +3590,34 @@ public class ServiceStateTrackerTest extends TelephonyTest { Bundle b = getExtrasFromLastSpnUpdateIntent(); assertThat(b.getString(TelephonyManager.EXTRA_PLMN)).isEqualTo(SATELLITE_DISPLAY_NAME); assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue(); // Override operator name to "Satellite" when registration state is IN_SERVICE. mSimulatedCommands.setVoiceRegState( NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING); mSimulatedCommands.setVoiceRadioTech(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); mSimulatedCommands.setDataRegState( NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING); mSimulatedCommands.setDataRadioTech(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getState(); doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getDataRegistrationState(); doReturn("Skylo Technologies").when(mServiceState).getOperatorAlpha(); mBundle.putBoolean( CarrierConfigManager.KEY_ENABLE_CARRIER_DISPLAY_NAME_RESOLVER_BOOL, false); mBundle.putBoolean(CarrierConfigManager.KEY_CARRIER_NAME_OVERRIDE_BOOL, true); mBundle.putString(CarrierConfigManager.KEY_CARRIER_NAME_STRING, ""); sendCarrierConfigUpdate(PHONE_ID); callback.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING); waitForLastHandlerAction(mSSTTestHandler.getThreadHandler()); // update the spn sst.updateCarrierDisplayName(); b = getExtrasFromLastSpnUpdateIntent(); assertThat(b.getString(TelephonyManager.EXTRA_PLMN)).isEqualTo(SATELLITE_DISPLAY_NAME); assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue(); } } tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +15 −6 Original line number Diff line number Diff line Loading @@ -4261,6 +4261,8 @@ public class SatelliteControllerTest extends TelephonyTest { ); } mSatelliteControllerUT.setSatellitePhone(1); mSatelliteControllerUT.setSelectedSatelliteSubId(SUB_ID); mSatelliteControllerUT.isSatelliteProvisioned = true; mSatelliteControllerUT.setIsSatelliteAllowedState(true); processAllMessages(); Loading Loading @@ -4327,6 +4329,8 @@ public class SatelliteControllerTest extends TelephonyTest { ); } mSatelliteControllerUT.setSatellitePhone(1); mSatelliteControllerUT.setSelectedSatelliteSubId(SUB_ID); mSatelliteControllerUT.isSatelliteProvisioned = true; mSatelliteControllerUT.isSatelliteAllowedCallback = null; setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.setIsSatelliteAllowedState(true); Loading Loading @@ -6169,6 +6173,8 @@ public class SatelliteControllerTest extends TelephonyTest { public String packageName = "com.example.app"; public boolean isSatelliteBeingDisabled = false; public boolean mIsApplicationSupportsP2P = false; public int selectedSatelliteSubId = -1; public boolean isSatelliteProvisioned; TestSatelliteController( Context context, Looper looper, @NonNull FeatureFlags featureFlags) { Loading Loading @@ -6231,13 +6237,16 @@ public class SatelliteControllerTest extends TelephonyTest { } @Override protected boolean isSubscriptionProvisioned(int subId) { synchronized (mSatellitePhoneLock) { if (mSatellitePhone.getSubId() == subId) { return true; protected void setSelectedSatelliteSubId(int subId) { logd("setSelectedSatelliteSubId: subId=" + subId); synchronized (mSatelliteTokenProvisionedLock) { mSelectedSatelliteSubId = subId; } } return false; @Override protected boolean isSubscriptionProvisioned(int subId) { return isSatelliteProvisioned; } @Override Loading Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +2 −5 Original line number Diff line number Diff line Loading @@ -2993,14 +2993,11 @@ public class ServiceStateTracker extends Handler { String satellitePlmn = null; SatelliteModemStateListener satelliteModemStateListener = getSatelliteModemStateListener(); if (combinedRegState == ServiceState.STATE_OUT_OF_SERVICE && satelliteModemStateListener != null if (satelliteModemStateListener != null && satelliteModemStateListener.isInConnectedState()) { // If device is connected to the nb-iot satellite, // 1) No service but nb-iot satellite is connected -> // expected to show "Satellite" for demo mode. satellitePlmn = getSatelliteDisplayName(); } log("updateCarrierDisplayName: satellitePlmn=" + satellitePlmn); if (mPhone.isPhoneTypeGsm()) { // The values of plmn/showPlmn change in different scenarios. Loading
src/java/com/android/internal/telephony/satellite/SatelliteController.java +16 −4 Original line number Diff line number Diff line Loading @@ -614,7 +614,8 @@ public class SatelliteController extends Handler { new ArrayList<>(); // The ID of the satellite subscription that has highest priority and is provisioned. @GuardedBy("mSatelliteTokenProvisionedLock") private int mSelectedSatelliteSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected int mSelectedSatelliteSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; // The last ICC ID that framework configured to modem. @GuardedBy("mSatelliteTokenProvisionedLock") private String mLastConfiguredIccId; Loading Loading @@ -7426,9 +7427,13 @@ public class SatelliteController extends Handler { selectedSubId = getNtnOnlySubscriptionId(); } synchronized (mSatelliteTokenProvisionedLock) { mSelectedSatelliteSubId = selectedSubId; int preSelectedSatelliteSubId = getSelectedSatelliteSubId(); setSelectedSatelliteSubId(selectedSubId); if (preSelectedSatelliteSubId != getSelectedSatelliteSubId()) { plogd("selectBindingSatelliteSubscription: SelectedSatelliteSubId changed"); evaluateCarrierRoamingNtnEligibilityChange(); } setSatellitePhone(selectedSubId); if (selectedSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { int carrierId = getSatelliteCarrierId(); Loading Loading @@ -7714,6 +7719,13 @@ public class SatelliteController extends Handler { } } @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE) protected void setSelectedSatelliteSubId(int subId) { synchronized (mSatelliteTokenProvisionedLock) { mSelectedSatelliteSubId = subId; } } /** Return the carrier ID of the binding satellite subscription. */ public int getSatelliteCarrierId() { synchronized (mSatelliteTokenProvisionedLock) { Loading Loading @@ -7764,7 +7776,7 @@ public class SatelliteController extends Handler { return false; } int subId = phone.getSubId(); int subId = getSelectedSatelliteSubId(); if (!isSatelliteRoamingP2pSmSSupported(subId)) { plogd("isCarrierRoamingNtnEligible(" + subId + "): doesn't support P2P SMS"); return false; Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +28 −0 Original line number Diff line number Diff line Loading @@ -3590,6 +3590,34 @@ public class ServiceStateTrackerTest extends TelephonyTest { Bundle b = getExtrasFromLastSpnUpdateIntent(); assertThat(b.getString(TelephonyManager.EXTRA_PLMN)).isEqualTo(SATELLITE_DISPLAY_NAME); assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue(); // Override operator name to "Satellite" when registration state is IN_SERVICE. mSimulatedCommands.setVoiceRegState( NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING); mSimulatedCommands.setVoiceRadioTech(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); mSimulatedCommands.setDataRegState( NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING); mSimulatedCommands.setDataRadioTech(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getState(); doReturn(ServiceState.STATE_IN_SERVICE).when(mServiceState).getDataRegistrationState(); doReturn("Skylo Technologies").when(mServiceState).getOperatorAlpha(); mBundle.putBoolean( CarrierConfigManager.KEY_ENABLE_CARRIER_DISPLAY_NAME_RESOLVER_BOOL, false); mBundle.putBoolean(CarrierConfigManager.KEY_CARRIER_NAME_OVERRIDE_BOOL, true); mBundle.putString(CarrierConfigManager.KEY_CARRIER_NAME_STRING, ""); sendCarrierConfigUpdate(PHONE_ID); callback.onSatelliteModemStateChanged( SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING); waitForLastHandlerAction(mSSTTestHandler.getThreadHandler()); // update the spn sst.updateCarrierDisplayName(); b = getExtrasFromLastSpnUpdateIntent(); assertThat(b.getString(TelephonyManager.EXTRA_PLMN)).isEqualTo(SATELLITE_DISPLAY_NAME); assertThat(b.getBoolean(TelephonyManager.EXTRA_SHOW_PLMN)).isTrue(); } }
tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +15 −6 Original line number Diff line number Diff line Loading @@ -4261,6 +4261,8 @@ public class SatelliteControllerTest extends TelephonyTest { ); } mSatelliteControllerUT.setSatellitePhone(1); mSatelliteControllerUT.setSelectedSatelliteSubId(SUB_ID); mSatelliteControllerUT.isSatelliteProvisioned = true; mSatelliteControllerUT.setIsSatelliteAllowedState(true); processAllMessages(); Loading Loading @@ -4327,6 +4329,8 @@ public class SatelliteControllerTest extends TelephonyTest { ); } mSatelliteControllerUT.setSatellitePhone(1); mSatelliteControllerUT.setSelectedSatelliteSubId(SUB_ID); mSatelliteControllerUT.isSatelliteProvisioned = true; mSatelliteControllerUT.isSatelliteAllowedCallback = null; setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.setIsSatelliteAllowedState(true); Loading Loading @@ -6169,6 +6173,8 @@ public class SatelliteControllerTest extends TelephonyTest { public String packageName = "com.example.app"; public boolean isSatelliteBeingDisabled = false; public boolean mIsApplicationSupportsP2P = false; public int selectedSatelliteSubId = -1; public boolean isSatelliteProvisioned; TestSatelliteController( Context context, Looper looper, @NonNull FeatureFlags featureFlags) { Loading Loading @@ -6231,13 +6237,16 @@ public class SatelliteControllerTest extends TelephonyTest { } @Override protected boolean isSubscriptionProvisioned(int subId) { synchronized (mSatellitePhoneLock) { if (mSatellitePhone.getSubId() == subId) { return true; protected void setSelectedSatelliteSubId(int subId) { logd("setSelectedSatelliteSubId: subId=" + subId); synchronized (mSatelliteTokenProvisionedLock) { mSelectedSatelliteSubId = subId; } } return false; @Override protected boolean isSubscriptionProvisioned(int subId) { return isSatelliteProvisioned; } @Override Loading