diff options
Diffstat (limited to 'tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java')
-rw-r--r-- | tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java | 1947 |
1 files changed, 1526 insertions, 421 deletions
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java index edfd6105ad..55532ccd39 100644 --- a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java +++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java @@ -16,7 +16,14 @@ package com.android.internal.telephony.satellite; +import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL; +import static android.telephony.CarrierConfigManager.KEY_SATELLITE_CONNECTION_HYSTERESIS_SEC_INT; +import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_GOOD; +import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_GREAT; +import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_NONE; +import static android.telephony.satellite.NtnSignalStrength.NTN_SIGNAL_STRENGTH_POOR; import static android.telephony.satellite.SatelliteManager.KEY_DEMO_MODE_ENABLED; +import static android.telephony.satellite.SatelliteManager.KEY_NTN_SIGNAL_STRENGTH; import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_CAPABILITIES; import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_COMMUNICATION_ALLOWED; import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_ENABLED; @@ -24,22 +31,28 @@ import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_NEXT_VI import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_PROVISIONED; import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_SUPPORTED; import static android.telephony.satellite.SatelliteManager.NT_RADIO_TECHNOLOGY_EMTC_NTN; +import static android.telephony.satellite.SatelliteManager.NT_RADIO_TECHNOLOGY_NB_IOT_NTN; import static android.telephony.satellite.SatelliteManager.NT_RADIO_TECHNOLOGY_NR_NTN; import static android.telephony.satellite.SatelliteManager.NT_RADIO_TECHNOLOGY_PROPRIETARY; -import static android.telephony.satellite.SatelliteManager.SATELLITE_ERROR; -import static android.telephony.satellite.SatelliteManager.SATELLITE_ERROR_NONE; -import static android.telephony.satellite.SatelliteManager.SATELLITE_INVALID_ARGUMENTS; -import static android.telephony.satellite.SatelliteManager.SATELLITE_INVALID_MODEM_STATE; -import static android.telephony.satellite.SatelliteManager.SATELLITE_INVALID_TELEPHONY_STATE; +import static android.telephony.satellite.SatelliteManager.SATELLITE_COMMUNICATION_RESTRICTION_REASON_GEOLOCATION; +import static android.telephony.satellite.SatelliteManager.SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER; +import static android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED; import static android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_OFF; import static android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE; -import static android.telephony.satellite.SatelliteManager.SATELLITE_NOT_AUTHORIZED; -import static android.telephony.satellite.SatelliteManager.SATELLITE_NOT_SUPPORTED; -import static android.telephony.satellite.SatelliteManager.SATELLITE_NO_RESOURCES; -import static android.telephony.satellite.SatelliteManager.SATELLITE_RADIO_NOT_AVAILABLE; -import static android.telephony.satellite.SatelliteManager.SATELLITE_REQUEST_IN_PROGRESS; -import static android.telephony.satellite.SatelliteManager.SATELLITE_SERVICE_NOT_PROVISIONED; -import static android.telephony.satellite.SatelliteManager.SATELLITE_SERVICE_PROVISION_IN_PROGRESS; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_ERROR; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_INVALID_ARGUMENTS; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_INVALID_MODEM_STATE; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_MODEM_ERROR; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_NOT_AUTHORIZED; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_NO_RESOURCES; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_REQUEST_IN_PROGRESS; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_REQUEST_NOT_SUPPORTED; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SERVICE_NOT_PROVISIONED; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SERVICE_PROVISION_IN_PROGRESS; +import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SUCCESS; import static com.android.internal.telephony.satellite.SatelliteController.SATELLITE_MODE_ENABLED_FALSE; import static com.android.internal.telephony.satellite.SatelliteController.SATELLITE_MODE_ENABLED_TRUE; @@ -48,10 +61,12 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyVararg; import static org.mockito.ArgumentMatchers.eq; @@ -60,8 +75,10 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import android.annotation.NonNull; @@ -75,13 +92,19 @@ import android.os.ICancellationSignal; import android.os.Looper; import android.os.Message; import android.os.PersistableBundle; +import android.os.RemoteException; import android.os.ResultReceiver; +import android.os.ServiceSpecificException; import android.telephony.CarrierConfigManager; import android.telephony.Rlog; +import android.telephony.ServiceState; +import android.telephony.satellite.INtnSignalStrengthCallback; +import android.telephony.satellite.ISatelliteCapabilitiesCallback; import android.telephony.satellite.ISatelliteDatagramCallback; import android.telephony.satellite.ISatelliteProvisionStateCallback; import android.telephony.satellite.ISatelliteStateCallback; import android.telephony.satellite.ISatelliteTransmissionUpdateCallback; +import android.telephony.satellite.NtnSignalStrength; import android.telephony.satellite.SatelliteCapabilities; import android.telephony.satellite.SatelliteDatagram; import android.telephony.satellite.SatelliteManager; @@ -94,7 +117,9 @@ import com.android.internal.R; import com.android.internal.telephony.IIntegerConsumer; import com.android.internal.telephony.IVoidConsumer; import com.android.internal.telephony.Phone; +import com.android.internal.telephony.PhoneFactory; import com.android.internal.telephony.TelephonyTest; +import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.satellite.metrics.ControllerMetricsStats; import com.android.internal.telephony.satellite.metrics.ProvisionMetricsStats; import com.android.internal.telephony.satellite.metrics.SessionMetricsStats; @@ -105,6 +130,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import java.util.ArrayList; @@ -123,19 +149,22 @@ import java.util.concurrent.TimeUnit; public class SatelliteControllerTest extends TelephonyTest { private static final String TAG = "SatelliteControllerTest"; - private static final int EVENT_DEVICE_CONFIG_CHANGED = 29; - private static final long TIMEOUT = 500; private static final int SUB_ID = 0; private static final int SUB_ID1 = 1; private static final int MAX_BYTES_PER_OUT_GOING_DATAGRAM = 339; private static final String TEST_SATELLITE_TOKEN = "TEST_SATELLITE_TOKEN"; private static final String TEST_NEXT_SATELLITE_TOKEN = "TEST_NEXT_SATELLITE_TOKEN"; - private static final String[] EMPTY_SATELLITE_SERVICES_SUPPORTED_BY_PROVIDERS_STRING_ARRAY = {}; + private static final String[] EMPTY_STRING_ARRAY = {}; + private static final List<String> EMPTY_STRING_LIST = new ArrayList<>(); private static final int[] ACTIVE_SUB_IDS = {SUB_ID}; + private List<Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener>> + mCarrierConfigChangedListenerList = new ArrayList<>(); private TestSatelliteController mSatelliteControllerUT; private TestSharedPreferences mSharedPreferences; + private PersistableBundle mCarrierConfigBundle; + private ServiceState mServiceState2; @Mock private DatagramController mMockDatagramController; @Mock private SatelliteModemInterface mMockSatelliteModemInterface; @@ -148,6 +177,7 @@ public class SatelliteControllerTest extends TelephonyTest { private List<Integer> mIIntegerConsumerResults = new ArrayList<>(); @Mock private ISatelliteTransmissionUpdateCallback mStartTransmissionUpdateCallback; @Mock private ISatelliteTransmissionUpdateCallback mStopTransmissionUpdateCallback; + @Mock private FeatureFlags mFeatureFlags; private Semaphore mIIntegerConsumerSemaphore = new Semaphore(0); private IIntegerConsumer mIIntegerConsumer = new IIntegerConsumer.Stub() { @Override @@ -167,18 +197,22 @@ public class SatelliteControllerTest extends TelephonyTest { private Set<Integer> mSupportedRadioTechnologies = new HashSet<>(Arrays.asList( NT_RADIO_TECHNOLOGY_NR_NTN, NT_RADIO_TECHNOLOGY_EMTC_NTN, + NT_RADIO_TECHNOLOGY_NB_IOT_NTN, NT_RADIO_TECHNOLOGY_PROPRIETARY)); private SatelliteCapabilities mSatelliteCapabilities = new SatelliteCapabilities( mSupportedRadioTechnologies, mIsPointingRequired, MAX_BYTES_PER_OUT_GOING_DATAGRAM, new HashMap<>()); + private SatelliteCapabilities mEmptySatelliteCapabilities = new SatelliteCapabilities( + new HashSet<>(), mIsPointingRequired, MAX_BYTES_PER_OUT_GOING_DATAGRAM, + new HashMap<>()); private Semaphore mSatelliteCapabilitiesSemaphore = new Semaphore(0); private SatelliteCapabilities mQueriedSatelliteCapabilities = null; - private int mQueriedSatelliteCapabilitiesResultCode = SATELLITE_ERROR_NONE; + private int mQueriedSatelliteCapabilitiesResultCode = SATELLITE_RESULT_SUCCESS; private ResultReceiver mSatelliteCapabilitiesReceiver = new ResultReceiver(null) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { mQueriedSatelliteCapabilitiesResultCode = resultCode; - if (resultCode == SATELLITE_ERROR_NONE) { + if (resultCode == SATELLITE_RESULT_SUCCESS) { if (resultData.containsKey(KEY_SATELLITE_CAPABILITIES)) { mQueriedSatelliteCapabilities = resultData.getParcelable( KEY_SATELLITE_CAPABILITIES, SatelliteCapabilities.class); @@ -199,13 +233,13 @@ public class SatelliteControllerTest extends TelephonyTest { }; private boolean mQueriedSatelliteSupported = false; - private int mQueriedSatelliteSupportedResultCode = SATELLITE_ERROR_NONE; + private int mQueriedSatelliteSupportedResultCode = SATELLITE_RESULT_SUCCESS; private Semaphore mSatelliteSupportSemaphore = new Semaphore(0); private ResultReceiver mSatelliteSupportReceiver = new ResultReceiver(null) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { mQueriedSatelliteSupportedResultCode = resultCode; - if (resultCode == SATELLITE_ERROR_NONE) { + if (resultCode == SATELLITE_RESULT_SUCCESS) { if (resultData.containsKey(KEY_SATELLITE_SUPPORTED)) { mQueriedSatelliteSupported = resultData.getBoolean(KEY_SATELLITE_SUPPORTED); } else { @@ -225,14 +259,14 @@ public class SatelliteControllerTest extends TelephonyTest { }; private boolean mQueriedIsSatelliteEnabled = false; - private int mQueriedIsSatelliteEnabledResultCode = SATELLITE_ERROR_NONE; + private int mQueriedIsSatelliteEnabledResultCode = SATELLITE_RESULT_SUCCESS; private Semaphore mIsSatelliteEnabledSemaphore = new Semaphore(0); private ResultReceiver mIsSatelliteEnabledReceiver = new ResultReceiver(null) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { logd("mIsSatelliteEnabledReceiver: resultCode=" + resultCode); mQueriedIsSatelliteEnabledResultCode = resultCode; - if (resultCode == SATELLITE_ERROR_NONE) { + if (resultCode == SATELLITE_RESULT_SUCCESS) { if (resultData.containsKey(KEY_SATELLITE_ENABLED)) { mQueriedIsSatelliteEnabled = resultData.getBoolean(KEY_SATELLITE_ENABLED); } else { @@ -251,13 +285,13 @@ public class SatelliteControllerTest extends TelephonyTest { }; private boolean mQueriedIsDemoModeEnabled = false; - private int mQueriedIsDemoModeEnabledResultCode = SATELLITE_ERROR_NONE; + private int mQueriedIsDemoModeEnabledResultCode = SATELLITE_RESULT_SUCCESS; private Semaphore mIsDemoModeEnabledSemaphore = new Semaphore(0); private ResultReceiver mIsDemoModeEnabledReceiver = new ResultReceiver(null) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { mQueriedIsDemoModeEnabledResultCode = resultCode; - if (resultCode == SATELLITE_ERROR_NONE) { + if (resultCode == SATELLITE_RESULT_SUCCESS) { if (resultData.containsKey(KEY_DEMO_MODE_ENABLED)) { mQueriedIsDemoModeEnabled = resultData.getBoolean(KEY_DEMO_MODE_ENABLED); } else { @@ -277,13 +311,13 @@ public class SatelliteControllerTest extends TelephonyTest { }; private boolean mQueriedIsSatelliteProvisioned = false; - private int mQueriedIsSatelliteProvisionedResultCode = SATELLITE_ERROR_NONE; + private int mQueriedIsSatelliteProvisionedResultCode = SATELLITE_RESULT_SUCCESS; private Semaphore mIsSatelliteProvisionedSemaphore = new Semaphore(0); private ResultReceiver mIsSatelliteProvisionedReceiver = new ResultReceiver(null) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { mQueriedIsSatelliteProvisionedResultCode = resultCode; - if (resultCode == SATELLITE_ERROR_NONE) { + if (resultCode == SATELLITE_RESULT_SUCCESS) { if (resultData.containsKey(KEY_SATELLITE_PROVISIONED)) { mQueriedIsSatelliteProvisioned = resultData.getBoolean(KEY_SATELLITE_PROVISIONED); @@ -304,13 +338,13 @@ public class SatelliteControllerTest extends TelephonyTest { }; private boolean mQueriedSatelliteAllowed = false; - private int mQueriedSatelliteAllowedResultCode = SATELLITE_ERROR_NONE; + private int mQueriedSatelliteAllowedResultCode = SATELLITE_RESULT_SUCCESS; private Semaphore mSatelliteAllowedSemaphore = new Semaphore(0); private ResultReceiver mSatelliteAllowedReceiver = new ResultReceiver(null) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { mQueriedSatelliteAllowedResultCode = resultCode; - if (resultCode == SATELLITE_ERROR_NONE) { + if (resultCode == SATELLITE_RESULT_SUCCESS) { if (resultData.containsKey(KEY_SATELLITE_COMMUNICATION_ALLOWED)) { mQueriedSatelliteAllowed = resultData.getBoolean( KEY_SATELLITE_COMMUNICATION_ALLOWED); @@ -319,7 +353,7 @@ public class SatelliteControllerTest extends TelephonyTest { mQueriedSatelliteAllowed = false; } } else { - logd("mSatelliteSupportReceiver: resultCode=" + resultCode); + logd("mSatelliteAllowedReceiver: resultCode=" + resultCode); mQueriedSatelliteAllowed = false; } try { @@ -332,13 +366,13 @@ public class SatelliteControllerTest extends TelephonyTest { private int mQueriedSatelliteVisibilityTime = -1; private int mSatelliteNextVisibilityTime = 3600; - private int mQueriedSatelliteVisibilityTimeResultCode = SATELLITE_ERROR_NONE; + private int mQueriedSatelliteVisibilityTimeResultCode = SATELLITE_RESULT_SUCCESS; private Semaphore mSatelliteVisibilityTimeSemaphore = new Semaphore(0); private ResultReceiver mSatelliteVisibilityTimeReceiver = new ResultReceiver(null) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { mQueriedSatelliteVisibilityTimeResultCode = resultCode; - if (resultCode == SATELLITE_ERROR_NONE) { + if (resultCode == SATELLITE_RESULT_SUCCESS) { if (resultData.containsKey(KEY_SATELLITE_NEXT_VISIBILITY)) { mQueriedSatelliteVisibilityTime = resultData.getInt( KEY_SATELLITE_NEXT_VISIBILITY); @@ -358,9 +392,35 @@ public class SatelliteControllerTest extends TelephonyTest { } }; - private List<Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener>> - mCarrierConfigChangedListenerList = new ArrayList<>(); - private PersistableBundle mCarrierConfigBundle; + private @NtnSignalStrength.NtnSignalStrengthLevel int mQueriedNtnSignalStrengthLevel = + NTN_SIGNAL_STRENGTH_NONE; + private int mQueriedNtnSignalStrengthResultCode = SATELLITE_RESULT_SUCCESS; + private Semaphore mRequestNtnSignalStrengthSemaphore = new Semaphore(0); + private ResultReceiver mRequestNtnSignalStrengthReceiver = new ResultReceiver(null) { + @Override + protected void onReceiveResult(int resultCode, Bundle resultData) { + mQueriedNtnSignalStrengthResultCode = resultCode; + if (resultCode == SATELLITE_RESULT_SUCCESS) { + if (resultData.containsKey(KEY_NTN_SIGNAL_STRENGTH)) { + NtnSignalStrength result = resultData.getParcelable(KEY_NTN_SIGNAL_STRENGTH); + logd("result.getLevel()=" + result.getLevel()); + mQueriedNtnSignalStrengthLevel = result.getLevel(); + } else { + loge("KEY_NTN_SIGNAL_STRENGTH does not exist."); + mQueriedNtnSignalStrengthLevel = NTN_SIGNAL_STRENGTH_NONE; + } + } else { + logd("KEY_NTN_SIGNAL_STRENGTH: resultCode=" + resultCode); + mQueriedNtnSignalStrengthLevel = NTN_SIGNAL_STRENGTH_NONE; + } + try { + mRequestNtnSignalStrengthSemaphore.release(); + } catch (Exception ex) { + loge("mRequestNtnSignalStrengthReceiver: Got exception in releasing semaphore, ex=" + + ex); + } + } + }; @Before public void setUp() throws Exception { @@ -384,10 +444,17 @@ public class SatelliteControllerTest extends TelephonyTest { mMockSessionMetricsStats); replaceInstance(SubscriptionManagerService.class, "sInstance", null, mMockSubscriptionManagerService); + replaceInstance(PhoneFactory.class, "sPhones", null, new Phone[]{mPhone, mPhone2}); + + mServiceState2 = Mockito.mock(ServiceState.class); + when(mPhone.getServiceState()).thenReturn(mServiceState); + when(mPhone.getSubId()).thenReturn(SUB_ID); + when(mPhone2.getServiceState()).thenReturn(mServiceState2); + when(mPhone2.getSubId()).thenReturn(SUB_ID1); mContextFixture.putStringArrayResource( - R.array.config_satellite_services_supported_by_providers, - EMPTY_SATELLITE_SERVICES_SUPPORTED_BY_PROVIDERS_STRING_ARRAY); + R.array.config_satellite_providers, + EMPTY_STRING_ARRAY); doReturn(ACTIVE_SUB_IDS).when(mMockSubscriptionManagerService).getActiveSubIdList(true); mCarrierConfigBundle = mContextFixture.getCarrierConfigBundle(); @@ -407,11 +474,13 @@ public class SatelliteControllerTest extends TelephonyTest { doReturn(mIsSatelliteServiceSupported) .when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); setUpResponseForRequestSatelliteCapabilities( - mSatelliteCapabilities, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RADIO_NOT_AVAILABLE); + mSatelliteCapabilities, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteSupported(false, + SATELLITE_RESULT_RADIO_NOT_AVAILABLE); doNothing().when(mMockDatagramController).setDemoMode(anyBoolean()); doNothing().when(mMockSatelliteSessionController) .onSatelliteEnabledStateChanged(anyBoolean()); + doNothing().when(mMockSatelliteSessionController).onSatelliteModemStateChanged(anyInt()); doNothing().when(mMockSatelliteSessionController).setDemoMode(anyBoolean()); doNothing().when(mMockControllerMetricsStats).onSatelliteEnabled(); doNothing().when(mMockControllerMetricsStats).reportServiceEnablementSuccessCount(); @@ -425,10 +494,12 @@ public class SatelliteControllerTest extends TelephonyTest { doReturn(mMockProvisionMetricsStats).when(mMockProvisionMetricsStats) .setResultCode(anyInt()); doReturn(mMockProvisionMetricsStats).when(mMockProvisionMetricsStats) - .setIsProvisionRequest(eq(false)); + .setIsProvisionRequest(eq(false)); doNothing().when(mMockProvisionMetricsStats).reportProvisionMetrics(); doNothing().when(mMockControllerMetricsStats).reportDeprovisionCount(anyInt()); - mSatelliteControllerUT = new TestSatelliteController(mContext, Looper.myLooper()); + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true); + mSatelliteControllerUT = + new TestSatelliteController(mContext, Looper.myLooper(), mFeatureFlags); verify(mMockSatelliteModemInterface).registerForSatelliteProvisionStateChanged( any(Handler.class), eq(26) /* EVENT_SATELLITE_PROVISION_STATE_CHANGED */, @@ -453,135 +524,141 @@ public class SatelliteControllerTest extends TelephonyTest { @Test public void testRequestIsSatelliteCommunicationAllowedForCurrentLocation() { mSatelliteAllowedSemaphore.drainPermits(); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestIsSatelliteCommunicationAllowedForCurrentLocation(SUB_ID, mSatelliteAllowedReceiver); processAllMessages(); assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(1)); - assertEquals(SATELLITE_NOT_SUPPORTED, mQueriedSatelliteAllowedResultCode); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, mQueriedSatelliteAllowedResultCode); resetSatelliteControllerUT(); mSatelliteControllerUT.requestIsSatelliteCommunicationAllowedForCurrentLocation(SUB_ID, mSatelliteAllowedReceiver); processAllMessages(); assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, mQueriedSatelliteAllowedResultCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, mQueriedSatelliteAllowedResultCode); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteAllowedForCurrentLocation(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteAllowedForCurrentLocation(true, + SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestIsSatelliteCommunicationAllowedForCurrentLocation(SUB_ID, mSatelliteAllowedReceiver); processAllMessages(); assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(1)); - assertEquals(SATELLITE_ERROR_NONE, mQueriedSatelliteAllowedResultCode); + assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteAllowedResultCode); assertTrue(mQueriedSatelliteAllowed); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpNullResponseForRequestIsSatelliteAllowedForCurrentLocation(SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpNullResponseForRequestIsSatelliteAllowedForCurrentLocation(SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestIsSatelliteCommunicationAllowedForCurrentLocation(SUB_ID, mSatelliteAllowedReceiver); processAllMessages(); assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, mQueriedSatelliteAllowedResultCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, mQueriedSatelliteAllowedResultCode); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); setUpNullResponseForRequestIsSatelliteAllowedForCurrentLocation( - SATELLITE_INVALID_MODEM_STATE); + SATELLITE_RESULT_INVALID_MODEM_STATE); mSatelliteControllerUT.requestIsSatelliteCommunicationAllowedForCurrentLocation(SUB_ID, mSatelliteAllowedReceiver); processAllMessages(); assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(1)); - assertEquals(SATELLITE_INVALID_MODEM_STATE, mQueriedSatelliteAllowedResultCode); + assertEquals(SATELLITE_RESULT_INVALID_MODEM_STATE, mQueriedSatelliteAllowedResultCode); } @Test public void testRequestTimeForNextSatelliteVisibility() { mSatelliteVisibilityTimeSemaphore.drainPermits(); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestTimeForNextSatelliteVisibility(SUB_ID, mSatelliteVisibilityTimeReceiver); processAllMessages(); assertTrue(waitForRequestTimeForNextSatelliteVisibilityResult(1)); - assertEquals(SATELLITE_NOT_SUPPORTED, mQueriedSatelliteVisibilityTimeResultCode); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, mQueriedSatelliteVisibilityTimeResultCode); resetSatelliteControllerUT(); mSatelliteControllerUT.requestTimeForNextSatelliteVisibility(SUB_ID, mSatelliteVisibilityTimeReceiver); processAllMessages(); assertTrue(waitForRequestTimeForNextSatelliteVisibilityResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, mQueriedSatelliteVisibilityTimeResultCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + mQueriedSatelliteVisibilityTimeResultCode); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); setUpResponseForRequestTimeForNextSatelliteVisibility(mSatelliteNextVisibilityTime, - SATELLITE_ERROR_NONE); + SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestTimeForNextSatelliteVisibility(SUB_ID, mSatelliteVisibilityTimeReceiver); processAllMessages(); assertTrue(waitForRequestTimeForNextSatelliteVisibilityResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, mQueriedSatelliteVisibilityTimeResultCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + mQueriedSatelliteVisibilityTimeResultCode); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); setUpResponseForRequestTimeForNextSatelliteVisibility(mSatelliteNextVisibilityTime, - SATELLITE_ERROR_NONE); + SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestTimeForNextSatelliteVisibility(SUB_ID, mSatelliteVisibilityTimeReceiver); processAllMessages(); assertTrue(waitForRequestTimeForNextSatelliteVisibilityResult(1)); - assertEquals(SATELLITE_SERVICE_NOT_PROVISIONED, mQueriedSatelliteVisibilityTimeResultCode); + assertEquals(SATELLITE_RESULT_SERVICE_NOT_PROVISIONED, + mQueriedSatelliteVisibilityTimeResultCode); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); setUpResponseForRequestTimeForNextSatelliteVisibility(mSatelliteNextVisibilityTime, - SATELLITE_ERROR_NONE); + SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestTimeForNextSatelliteVisibility(SUB_ID, mSatelliteVisibilityTimeReceiver); processAllMessages(); assertTrue(waitForRequestTimeForNextSatelliteVisibilityResult(1)); - assertEquals(SATELLITE_ERROR_NONE, mQueriedSatelliteVisibilityTimeResultCode); + assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteVisibilityTimeResultCode); assertEquals(mSatelliteNextVisibilityTime, mQueriedSatelliteVisibilityTime); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); setUpNullResponseForRequestTimeForNextSatelliteVisibility( - SATELLITE_ERROR_NONE); + SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestTimeForNextSatelliteVisibility(SUB_ID, mSatelliteVisibilityTimeReceiver); processAllMessages(); assertTrue(waitForRequestTimeForNextSatelliteVisibilityResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, mQueriedSatelliteVisibilityTimeResultCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + mQueriedSatelliteVisibilityTimeResultCode); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); setUpNullResponseForRequestTimeForNextSatelliteVisibility( - SATELLITE_INVALID_MODEM_STATE); + SATELLITE_RESULT_INVALID_MODEM_STATE); mSatelliteControllerUT.requestTimeForNextSatelliteVisibility(SUB_ID, mSatelliteVisibilityTimeReceiver); processAllMessages(); assertTrue(waitForRequestTimeForNextSatelliteVisibilityResult(1)); - assertEquals(SATELLITE_INVALID_MODEM_STATE, mQueriedSatelliteVisibilityTimeResultCode); + assertEquals(SATELLITE_RESULT_INVALID_MODEM_STATE, + mQueriedSatelliteVisibilityTimeResultCode); } @Test @@ -593,16 +670,17 @@ public class SatelliteControllerTest extends TelephonyTest { mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); // Fail to enable satellite when the device does not support satellite. mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); // Fail to enable satellite when the device is not provisioned yet. mIIntegerConsumerResults.clear(); @@ -610,28 +688,29 @@ public class SatelliteControllerTest extends TelephonyTest { verify(mMockSatelliteSessionController, times(1)).onSatelliteEnabledStateChanged(eq(false)); verify(mMockSatelliteSessionController, times(1)).setDemoMode(eq(false)); verify(mMockDatagramController, times(1)).setDemoMode(eq(false)); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_SERVICE_NOT_PROVISIONED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SERVICE_NOT_PROVISIONED, + (long) mIIntegerConsumerResults.get(0)); sendProvisionedStateChangedEvent(true, null); processAllMessages(); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); // Successfully enable satellite mIIntegerConsumerResults.clear(); mSatelliteControllerUT.setSettingsKeyForSatelliteModeCalled = false; - setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_ERROR_NONE); + setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - verifySatelliteEnabled(true, SATELLITE_ERROR_NONE); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); assertTrue(mSatelliteControllerUT.setSettingsKeyForSatelliteModeCalled); assertEquals( SATELLITE_MODE_ENABLED_TRUE, mSatelliteControllerUT.satelliteModeSettingValue); @@ -644,12 +723,13 @@ public class SatelliteControllerTest extends TelephonyTest { // Successfully disable satellite when radio is turned off. mSatelliteControllerUT.setSettingsKeyForSatelliteModeCalled = false; - setUpResponseForRequestSatelliteEnabled(false, false, SATELLITE_ERROR_NONE); + setUpResponseForRequestSatelliteEnabled(false, false, SATELLITE_RESULT_SUCCESS); setRadioPower(false); + mSatelliteControllerUT.onCellularRadioPowerOffRequested(); processAllMessages(); sendSatelliteModemStateChangedEvent(SATELLITE_MODEM_STATE_OFF, null); processAllMessages(); - verifySatelliteEnabled(false, SATELLITE_ERROR_NONE); + verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); assertTrue(mSatelliteControllerUT.setSettingsKeyForSatelliteModeCalled); assertEquals( SATELLITE_MODE_ENABLED_FALSE, mSatelliteControllerUT.satelliteModeSettingValue); @@ -660,27 +740,27 @@ public class SatelliteControllerTest extends TelephonyTest { // Fail to enable satellite when radio is off. mIIntegerConsumerResults.clear(); - setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_ERROR_NONE); + setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); // Radio is not on, can not enable satellite - assertEquals(SATELLITE_INVALID_MODEM_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_MODEM_STATE, (long) mIIntegerConsumerResults.get(0)); setRadioPower(true); processAllMessages(); - verifySatelliteEnabled(false, SATELLITE_ERROR_NONE); + verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); // Fail to enable satellite with an error response from modem when radio is on. mIIntegerConsumerResults.clear(); clearInvocations(mMockPointingAppController); mSatelliteControllerUT.setSettingsKeyForSatelliteModeCalled = false; - setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_INVALID_MODEM_STATE); + setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_RESULT_INVALID_MODEM_STATE); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_MODEM_STATE, (long) mIIntegerConsumerResults.get(0)); - verifySatelliteEnabled(false, SATELLITE_ERROR_NONE); + assertEquals(SATELLITE_RESULT_INVALID_MODEM_STATE, (long) mIIntegerConsumerResults.get(0)); + verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); verify(mMockPointingAppController, never()).startPointingUI(anyBoolean()); assertFalse(mSatelliteControllerUT.setSettingsKeyForSatelliteModeCalled); verify(mMockControllerMetricsStats, times(1)).reportServiceEnablementFailCount(); @@ -688,12 +768,12 @@ public class SatelliteControllerTest extends TelephonyTest { // Successfully enable satellite when radio is on. mIIntegerConsumerResults.clear(); mSatelliteControllerUT.setSettingsKeyForSatelliteModeCalled = false; - setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_ERROR_NONE); + setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - verifySatelliteEnabled(true, SATELLITE_ERROR_NONE); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); assertTrue(mSatelliteControllerUT.setSettingsKeyForSatelliteModeCalled); assertEquals(SATELLITE_MODE_ENABLED_TRUE, mSatelliteControllerUT.satelliteModeSettingValue); verify(mMockPointingAppController).startPointingUI(eq(false)); @@ -702,50 +782,50 @@ public class SatelliteControllerTest extends TelephonyTest { verify(mMockDatagramController, times(4)).setDemoMode(eq(false)); verify(mMockControllerMetricsStats, times(2)).onSatelliteEnabled(); verify(mMockControllerMetricsStats, times(2)).reportServiceEnablementSuccessCount(); - verify(mMockSessionMetricsStats, times(3)).setInitializationResult(anyInt()); - verify(mMockSessionMetricsStats, times(3)).setRadioTechnology(anyInt()); - verify(mMockSessionMetricsStats, times(3)).reportSessionMetrics(); + verify(mMockSessionMetricsStats, times(7)).setInitializationResult(anyInt()); + verify(mMockSessionMetricsStats, times(7)).setRadioTechnology(anyInt()); + verify(mMockSessionMetricsStats, times(7)).reportSessionMetrics(); // Successfully enable satellite when it is already enabled. mIIntegerConsumerResults.clear(); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - verifySatelliteEnabled(true, SATELLITE_ERROR_NONE); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); // Fail to enable satellite with a different demo mode when it is already enabled. mIIntegerConsumerResults.clear(); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, true, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_ARGUMENTS, (long) mIIntegerConsumerResults.get(0)); - verifySatelliteEnabled(true, SATELLITE_ERROR_NONE); + assertEquals(SATELLITE_RESULT_INVALID_ARGUMENTS, (long) mIIntegerConsumerResults.get(0)); + verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); // Successfully disable satellite. mIIntegerConsumerResults.clear(); - setUpResponseForRequestSatelliteEnabled(false, false, SATELLITE_ERROR_NONE); + setUpResponseForRequestSatelliteEnabled(false, false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, false, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - verifySatelliteEnabled(false, SATELLITE_ERROR_NONE); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); // Disable satellite when satellite is already disabled. mIIntegerConsumerResults.clear(); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, false, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - verifySatelliteEnabled(false, SATELLITE_ERROR_NONE); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); // Disable satellite with a different demo mode when satellite is already disabled. mIIntegerConsumerResults.clear(); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, false, true, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - verifySatelliteEnabled(false, SATELLITE_ERROR_NONE); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); // Send a second request while the first request in progress mIIntegerConsumerResults.clear(); @@ -756,13 +836,13 @@ public class SatelliteControllerTest extends TelephonyTest { mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_REQUEST_IN_PROGRESS, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_REQUEST_IN_PROGRESS, (long) mIIntegerConsumerResults.get(0)); mIIntegerConsumerResults.clear(); resetSatelliteControllerUTToSupportedAndProvisionedState(); // Should receive callback for the above request when satellite modem is turned off. assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_MODEM_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_MODEM_STATE, (long) mIIntegerConsumerResults.get(0)); // Move to satellite-disabling in progress. setUpNoResponseForRequestSatelliteEnabled(false, false); @@ -775,53 +855,62 @@ public class SatelliteControllerTest extends TelephonyTest { mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_ERROR, (long) mIIntegerConsumerResults.get(0)); mIIntegerConsumerResults.clear(); resetSatelliteControllerUTToOffAndProvisionedState(); // Should receive callback for the above request when satellite modem is turned off. assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_MODEM_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_MODEM_STATE, (long) mIIntegerConsumerResults.get(0)); /** * Make areAllRadiosDisabled return false and move mWaitingForRadioDisabled to true, which * will lead to no response for requestSatelliteEnabled. */ mSatelliteControllerUT.allRadiosDisabled = false; - setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_ERROR_NONE); + setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertFalse(waitForIIntegerConsumerResult(1)); resetSatelliteControllerUTEnabledState(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestSatelliteEnabled(false, false, SATELLITE_ERROR_NONE); + setUpResponseForRequestSatelliteEnabled(false, false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, false, false, mIIntegerConsumer); processAllMessages(); // We should receive 2 callbacks for the above 2 requests. assertTrue(waitForIIntegerConsumerResult(2)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(1)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(1)); resetSatelliteControllerUTToOffAndProvisionedState(); // Repeat the same test as above but with error response from modem for the second request mSatelliteControllerUT.allRadiosDisabled = false; - setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_ERROR_NONE); + setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertFalse(waitForIIntegerConsumerResult(1)); resetSatelliteControllerUTEnabledState(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestSatelliteEnabled(false, false, SATELLITE_NO_RESOURCES); + setUpResponseForRequestSatelliteEnabled(false, false, SATELLITE_RESULT_NO_RESOURCES); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, false, false, mIIntegerConsumer); processAllMessages(); // We should receive 2 callbacks for the above 2 requests. assertTrue(waitForIIntegerConsumerResult(2)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - assertEquals(SATELLITE_NO_RESOURCES, (long) mIIntegerConsumerResults.get(1)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_NO_RESOURCES, (long) mIIntegerConsumerResults.get(1)); mSatelliteControllerUT.allRadiosDisabled = true; + + resetSatelliteControllerUTToOnAndProvisionedState(); + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(false); + mSatelliteControllerUT.onCellularRadioPowerOffRequested(); + processAllMessages(); + // Satellite should not be powered off since the feature flag oemEnabledSatelliteFlag is + // disabled + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true); + verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); } @Test @@ -830,42 +919,48 @@ public class SatelliteControllerTest extends TelephonyTest { mSatelliteControllerUT.requestSatelliteCapabilities(SUB_ID, mSatelliteCapabilitiesReceiver); processAllMessages(); assertTrue(waitForRequestSatelliteCapabilitiesResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, mQueriedSatelliteCapabilitiesResultCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + mQueriedSatelliteCapabilitiesResultCode); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteCapabilities(SUB_ID, mSatelliteCapabilitiesReceiver); processAllMessages(); assertTrue(waitForRequestSatelliteCapabilitiesResult(1)); - assertEquals(SATELLITE_NOT_SUPPORTED, mQueriedSatelliteCapabilitiesResultCode); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, mQueriedSatelliteCapabilitiesResultCode); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestSatelliteCapabilities(mSatelliteCapabilities, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestSatelliteCapabilities(mSatelliteCapabilities, + SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteCapabilities(SUB_ID, mSatelliteCapabilitiesReceiver); processAllMessages(); assertTrue(waitForRequestSatelliteCapabilitiesResult(1)); - assertEquals(SATELLITE_ERROR_NONE, mQueriedSatelliteCapabilitiesResultCode); + assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteCapabilitiesResultCode); assertEquals(mSatelliteCapabilities, mQueriedSatelliteCapabilities); + assertTrue( + mQueriedSatelliteCapabilities.getSupportedRadioTechnologies().contains( + mSatelliteControllerUT.getSupportedNtnRadioTechnology())); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpNullResponseForRequestSatelliteCapabilities(SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpNullResponseForRequestSatelliteCapabilities(SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteCapabilities(SUB_ID, mSatelliteCapabilitiesReceiver); processAllMessages(); assertTrue(waitForRequestSatelliteCapabilitiesResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, mQueriedSatelliteCapabilitiesResultCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + mQueriedSatelliteCapabilitiesResultCode); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpNullResponseForRequestSatelliteCapabilities(SATELLITE_INVALID_MODEM_STATE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpNullResponseForRequestSatelliteCapabilities(SATELLITE_RESULT_INVALID_MODEM_STATE); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteCapabilities(SUB_ID, mSatelliteCapabilitiesReceiver); processAllMessages(); assertTrue(waitForRequestSatelliteCapabilitiesResult(1)); - assertEquals(SATELLITE_INVALID_MODEM_STATE, mQueriedSatelliteCapabilitiesResultCode); + assertEquals(SATELLITE_RESULT_INVALID_MODEM_STATE, mQueriedSatelliteCapabilitiesResultCode); } @Test @@ -876,72 +971,75 @@ public class SatelliteControllerTest extends TelephonyTest { mStartTransmissionUpdateCallback); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.startSatelliteTransmissionUpdates(SUB_ID, mIIntegerConsumer, mStartTransmissionUpdateCallback); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.startSatelliteTransmissionUpdates(SUB_ID, mIIntegerConsumer, mStartTransmissionUpdateCallback); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); - setUpResponseForStartSatelliteTransmissionUpdates(SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + setUpResponseForStartSatelliteTransmissionUpdates(SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.startSatelliteTransmissionUpdates(SUB_ID, mIIntegerConsumer, mStartTransmissionUpdateCallback); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_SERVICE_NOT_PROVISIONED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SERVICE_NOT_PROVISIONED, + (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); - setUpResponseForStartSatelliteTransmissionUpdates(SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForStartSatelliteTransmissionUpdates(SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.startSatelliteTransmissionUpdates(SUB_ID, mIIntegerConsumer, mStartTransmissionUpdateCallback); verify(mMockPointingAppController).registerForSatelliteTransmissionUpdates(anyInt(), - eq(mStartTransmissionUpdateCallback), any()); + eq(mStartTransmissionUpdateCallback)); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - verify(mMockPointingAppController).startSatelliteTransmissionUpdates(any(Message.class), - any(Phone.class)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + verify(mMockPointingAppController).startSatelliteTransmissionUpdates(any(Message.class)); verify(mMockPointingAppController).setStartedSatelliteTransmissionUpdates(eq(true)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); - setUpResponseForStartSatelliteTransmissionUpdates(SATELLITE_INVALID_TELEPHONY_STATE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForStartSatelliteTransmissionUpdates(SATELLITE_RESULT_INVALID_TELEPHONY_STATE); mSatelliteControllerUT.startSatelliteTransmissionUpdates(SUB_ID, mIIntegerConsumer, mStartTransmissionUpdateCallback); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); verify(mMockPointingAppController).unregisterForSatelliteTransmissionUpdates(anyInt(), - any(), eq(mStartTransmissionUpdateCallback), any(Phone.class)); + any(), eq(mStartTransmissionUpdateCallback)); verify(mMockPointingAppController).setStartedSatelliteTransmissionUpdates(eq(false)); } @@ -953,69 +1051,72 @@ public class SatelliteControllerTest extends TelephonyTest { mStopTransmissionUpdateCallback); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.stopSatelliteTransmissionUpdates(SUB_ID, mIIntegerConsumer, mStopTransmissionUpdateCallback); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.stopSatelliteTransmissionUpdates(SUB_ID, mIIntegerConsumer, mStopTransmissionUpdateCallback); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); - setUpResponseForStopSatelliteTransmissionUpdates(SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + setUpResponseForStopSatelliteTransmissionUpdates(SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.stopSatelliteTransmissionUpdates(SUB_ID, mIIntegerConsumer, mStopTransmissionUpdateCallback); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_SERVICE_NOT_PROVISIONED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SERVICE_NOT_PROVISIONED, + (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); - setUpResponseForStopSatelliteTransmissionUpdates(SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForStopSatelliteTransmissionUpdates(SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.stopSatelliteTransmissionUpdates(SUB_ID, mIIntegerConsumer, mStopTransmissionUpdateCallback); verify(mMockPointingAppController).unregisterForSatelliteTransmissionUpdates(anyInt(), - any(), eq(mStopTransmissionUpdateCallback), any(Phone.class)); + any(), eq(mStopTransmissionUpdateCallback)); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - verify(mMockPointingAppController).stopSatelliteTransmissionUpdates(any(Message.class), - any(Phone.class)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + verify(mMockPointingAppController).stopSatelliteTransmissionUpdates(any(Message.class)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); - setUpResponseForStopSatelliteTransmissionUpdates(SATELLITE_INVALID_TELEPHONY_STATE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForStopSatelliteTransmissionUpdates(SATELLITE_RESULT_INVALID_TELEPHONY_STATE); mSatelliteControllerUT.stopSatelliteTransmissionUpdates(SUB_ID, mIIntegerConsumer, mStopTransmissionUpdateCallback); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); } @Test @@ -1024,51 +1125,51 @@ public class SatelliteControllerTest extends TelephonyTest { resetSatelliteControllerUT(); mSatelliteControllerUT.requestIsDemoModeEnabled(SUB_ID, mIsDemoModeEnabledReceiver); assertTrue(waitForRequestIsDemoModeEnabledResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, mQueriedIsDemoModeEnabledResultCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, mQueriedIsDemoModeEnabledResultCode); assertFalse(mQueriedIsDemoModeEnabled); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestIsDemoModeEnabled(SUB_ID, mIsDemoModeEnabledReceiver); assertTrue(waitForRequestIsDemoModeEnabledResult(1)); - assertEquals(SATELLITE_NOT_SUPPORTED, mQueriedIsDemoModeEnabledResultCode); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, mQueriedIsDemoModeEnabledResultCode); assertFalse(mQueriedIsDemoModeEnabled); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestIsDemoModeEnabled(SUB_ID, mIsDemoModeEnabledReceiver); assertTrue(waitForRequestIsDemoModeEnabledResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, mQueriedIsDemoModeEnabledResultCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, mQueriedIsDemoModeEnabledResultCode); assertFalse(mQueriedIsDemoModeEnabled); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestIsDemoModeEnabled(SUB_ID, mIsDemoModeEnabledReceiver); assertTrue(waitForRequestIsDemoModeEnabledResult(1)); - assertEquals(SATELLITE_SERVICE_NOT_PROVISIONED, mQueriedIsDemoModeEnabledResultCode); + assertEquals(SATELLITE_RESULT_SERVICE_NOT_PROVISIONED, mQueriedIsDemoModeEnabledResultCode); assertFalse(mQueriedIsDemoModeEnabled); resetSatelliteControllerUT(); boolean isDemoModeEnabled = mSatelliteControllerUT.isDemoModeEnabled(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestIsDemoModeEnabled(SUB_ID, mIsDemoModeEnabledReceiver); assertTrue(waitForRequestIsDemoModeEnabledResult(1)); - assertEquals(SATELLITE_ERROR_NONE, mQueriedIsDemoModeEnabledResultCode); + assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedIsDemoModeEnabledResultCode); assertEquals(isDemoModeEnabled, mQueriedIsDemoModeEnabled); } @Test public void testIsSatelliteEnabled() { assertFalse(mSatelliteControllerUT.isSatelliteEnabled()); - setUpResponseForRequestIsSatelliteEnabled(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); mIsSatelliteEnabledSemaphore.drainPermits(); mSatelliteControllerUT.requestIsSatelliteEnabled(SUB_ID, mIsSatelliteEnabledReceiver); processAllMessages(); @@ -1078,20 +1179,20 @@ public class SatelliteControllerTest extends TelephonyTest { @Test public void testOnSatelliteServiceConnected() { - verifySatelliteSupported(false, SATELLITE_RADIO_NOT_AVAILABLE); - verifySatelliteEnabled(false, SATELLITE_INVALID_TELEPHONY_STATE); - verifySatelliteProvisioned(false, SATELLITE_INVALID_TELEPHONY_STATE); + verifySatelliteSupported(false, SATELLITE_RESULT_RADIO_NOT_AVAILABLE); + verifySatelliteEnabled(false, SATELLITE_RESULT_INVALID_TELEPHONY_STATE); + verifySatelliteProvisioned(false, SATELLITE_RESULT_INVALID_TELEPHONY_STATE); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestSatelliteEnabled(false, false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestSatelliteEnabled(false, false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.onSatelliteServiceConnected(); processAllMessages(); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteEnabled(false, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); } @Test @@ -1104,7 +1205,7 @@ public class SatelliteControllerTest extends TelephonyTest { }; int errorCode = mSatelliteControllerUT.registerForSatelliteModemStateChanged( SUB_ID, callback); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, errorCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, errorCode); verify(mMockSatelliteSessionController, never()) .registerForSatelliteModemStateChanged(callback); @@ -1112,7 +1213,7 @@ public class SatelliteControllerTest extends TelephonyTest { errorCode = mSatelliteControllerUT.registerForSatelliteModemStateChanged( SUB_ID, callback); - assertEquals(SATELLITE_ERROR_NONE, errorCode); + assertEquals(SATELLITE_RESULT_SUCCESS, errorCode); verify(mMockSatelliteSessionController).registerForSatelliteModemStateChanged(callback); } @@ -1152,20 +1253,20 @@ public class SatelliteControllerTest extends TelephonyTest { }; int errorCode = mSatelliteControllerUT.registerForSatelliteProvisionStateChanged( SUB_ID, callback); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, errorCode); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, errorCode); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); errorCode = mSatelliteControllerUT.registerForSatelliteProvisionStateChanged( SUB_ID, callback); - assertEquals(SATELLITE_NOT_SUPPORTED, errorCode); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, errorCode); resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); errorCode = mSatelliteControllerUT.registerForSatelliteProvisionStateChanged( SUB_ID, callback); - assertEquals(SATELLITE_ERROR_NONE, errorCode); + assertEquals(SATELLITE_RESULT_SUCCESS, errorCode); sendProvisionedStateChangedEvent(true, null); processAllMessages(); @@ -1191,9 +1292,9 @@ public class SatelliteControllerTest extends TelephonyTest { } }; when(mMockDatagramController.registerForSatelliteDatagram(eq(SUB_ID), eq(callback))) - .thenReturn(SATELLITE_ERROR_NONE); + .thenReturn(SATELLITE_RESULT_SUCCESS); int errorCode = mSatelliteControllerUT.registerForSatelliteDatagram(SUB_ID, callback); - assertEquals(SATELLITE_ERROR_NONE, errorCode); + assertEquals(SATELLITE_RESULT_SUCCESS, errorCode); verify(mMockDatagramController).registerForSatelliteDatagram(eq(SUB_ID), eq(callback)); } @@ -1224,22 +1325,24 @@ public class SatelliteControllerTest extends TelephonyTest { SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE, datagram, true, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); verify(mMockDatagramController, never()).sendSatelliteDatagram(anyInt(), eq(SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE), eq(datagram), eq(true), any()); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); sendProvisionedStateChangedEvent(false, null); processAllMessages(); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.sendSatelliteDatagram(SUB_ID, SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE, datagram, true, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_SERVICE_NOT_PROVISIONED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SERVICE_NOT_PROVISIONED, + (long) mIIntegerConsumerResults.get(0)); verify(mMockDatagramController, never()).sendSatelliteDatagram(anyInt(), eq(SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE), eq(datagram), eq(true), any()); @@ -1247,7 +1350,7 @@ public class SatelliteControllerTest extends TelephonyTest { mIIntegerConsumerResults.clear(); sendProvisionedStateChangedEvent(true, null); processAllMessages(); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.sendSatelliteDatagram(SUB_ID, SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE, datagram, true, mIIntegerConsumer); processAllMessages(); @@ -1264,25 +1367,27 @@ public class SatelliteControllerTest extends TelephonyTest { mSatelliteControllerUT.pollPendingSatelliteDatagrams(SUB_ID, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); verify(mMockDatagramController, never()).pollPendingSatelliteDatagrams(anyInt(), any()); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); sendProvisionedStateChangedEvent(false, null); processAllMessages(); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.pollPendingSatelliteDatagrams(SUB_ID, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_SERVICE_NOT_PROVISIONED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SERVICE_NOT_PROVISIONED, + (long) mIIntegerConsumerResults.get(0)); verify(mMockDatagramController, never()).pollPendingSatelliteDatagrams(anyInt(), any()); mIIntegerConsumerResults.clear(); sendProvisionedStateChangedEvent(true, null); processAllMessages(); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.pollPendingSatelliteDatagrams(SUB_ID, mIIntegerConsumer); processAllMessages(); assertFalse(waitForIIntegerConsumerResult(1)); @@ -1301,94 +1406,95 @@ public class SatelliteControllerTest extends TelephonyTest { testProvisionData, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); assertNull(cancelRemote); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); cancelRemote = mSatelliteControllerUT.provisionSatelliteService(SUB_ID, TEST_SATELLITE_TOKEN, testProvisionData, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); assertNull(cancelRemote); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); cancelRemote = mSatelliteControllerUT.provisionSatelliteService(SUB_ID, TEST_SATELLITE_TOKEN, testProvisionData, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); assertNull(cancelRemote); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); setUpResponseForProvisionSatelliteService(TEST_SATELLITE_TOKEN, testProvisionData, - SATELLITE_ERROR_NONE); + SATELLITE_RESULT_SUCCESS); cancelRemote = mSatelliteControllerUT.provisionSatelliteService(SUB_ID, TEST_SATELLITE_TOKEN, testProvisionData, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); assertNotNull(cancelRemote); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); setUpResponseForProvisionSatelliteService(TEST_SATELLITE_TOKEN, testProvisionData, - SATELLITE_NOT_AUTHORIZED); + SATELLITE_RESULT_NOT_AUTHORIZED); cancelRemote = mSatelliteControllerUT.provisionSatelliteService(SUB_ID, TEST_SATELLITE_TOKEN, testProvisionData, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_NOT_AUTHORIZED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_NOT_AUTHORIZED, (long) mIIntegerConsumerResults.get(0)); assertNotNull(cancelRemote); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); setUpResponseForProvisionSatelliteService(TEST_NEXT_SATELLITE_TOKEN, testProvisionData, - SATELLITE_ERROR_NONE); + SATELLITE_RESULT_SUCCESS); cancelRemote = mSatelliteControllerUT.provisionSatelliteService(SUB_ID, TEST_NEXT_SATELLITE_TOKEN, testProvisionData, mIIntegerConsumer); cancellationSignal.setRemote(cancelRemote); cancellationSignal.cancel(); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); verify(mMockSatelliteModemInterface).deprovisionSatelliteService( eq(TEST_NEXT_SATELLITE_TOKEN), any(Message.class)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); setUpNoResponseForProvisionSatelliteService(TEST_SATELLITE_TOKEN); setUpResponseForProvisionSatelliteService(TEST_NEXT_SATELLITE_TOKEN, testProvisionData, - SATELLITE_ERROR_NONE); + SATELLITE_RESULT_SUCCESS); cancelRemote = mSatelliteControllerUT.provisionSatelliteService(SUB_ID, TEST_SATELLITE_TOKEN, testProvisionData, mIIntegerConsumer); @@ -1397,7 +1503,7 @@ public class SatelliteControllerTest extends TelephonyTest { testProvisionData, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_SERVICE_PROVISION_IN_PROGRESS, + assertEquals(SATELLITE_RESULT_SERVICE_PROVISION_IN_PROGRESS, (long) mIIntegerConsumerResults.get(0)); } @@ -1405,123 +1511,126 @@ public class SatelliteControllerTest extends TelephonyTest { public void testDeprovisionSatelliteService() { mIIntegerConsumerSemaphore.drainPermits(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(false, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.deprovisionSatelliteService(SUB_ID, TEST_SATELLITE_TOKEN, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); mSatelliteControllerUT.deprovisionSatelliteService(SUB_ID, - TEST_SATELLITE_TOKEN, mIIntegerConsumer); + TEST_SATELLITE_TOKEN, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForDeprovisionSatelliteService(TEST_SATELLITE_TOKEN, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForDeprovisionSatelliteService(TEST_SATELLITE_TOKEN, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.deprovisionSatelliteService(SUB_ID, TEST_SATELLITE_TOKEN, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_TELEPHONY_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, + (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(false, SATELLITE_ERROR_NONE); - setUpResponseForDeprovisionSatelliteService(TEST_SATELLITE_TOKEN, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(false, SATELLITE_RESULT_SUCCESS); + setUpResponseForDeprovisionSatelliteService(TEST_SATELLITE_TOKEN, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.deprovisionSatelliteService(SUB_ID, TEST_SATELLITE_TOKEN, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); - setUpResponseForDeprovisionSatelliteService(TEST_SATELLITE_TOKEN, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForDeprovisionSatelliteService(TEST_SATELLITE_TOKEN, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.deprovisionSatelliteService(SUB_ID, TEST_SATELLITE_TOKEN, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); resetSatelliteControllerUT(); mIIntegerConsumerResults.clear(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); setUpResponseForDeprovisionSatelliteService(TEST_SATELLITE_TOKEN, - SATELLITE_INVALID_MODEM_STATE); + SATELLITE_RESULT_INVALID_MODEM_STATE); mSatelliteControllerUT.deprovisionSatelliteService(SUB_ID, TEST_SATELLITE_TOKEN, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_INVALID_MODEM_STATE, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_INVALID_MODEM_STATE, (long) mIIntegerConsumerResults.get(0)); } @Test public void testSupportedSatelliteServices() { - List<String> satellitePlmnList = mSatelliteControllerUT.getSatellitePlmnList(); - assertEquals(EMPTY_SATELLITE_SERVICES_SUPPORTED_BY_PROVIDERS_STRING_ARRAY.length, - satellitePlmnList.size()); + when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(false); + List<String> satellitePlmnList = mSatelliteControllerUT.getSatellitePlmnList(SUB_ID); + assertEquals(EMPTY_STRING_ARRAY.length, satellitePlmnList.size()); List<Integer> supportedSatelliteServices = mSatelliteControllerUT.getSupportedSatelliteServices(SUB_ID, "00101"); assertTrue(supportedSatelliteServices.isEmpty()); - String[] satellitePlmnArray = {"00101", "00102"}; - String[] satelliteServicesSupportedByProviderStrArray = {"00101:1,2", "00102:2,3"}; - int[] expectedSupportedServices1 = {1, 2}; - int[] expectedSupportedServices2 = {2, 3}; - + String[] satelliteProviderStrArray = {"00101", "00102"}; mContextFixture.putStringArrayResource( - R.array.config_satellite_services_supported_by_providers, - satelliteServicesSupportedByProviderStrArray); + R.array.config_satellite_providers, satelliteProviderStrArray); + int[] expectedSupportedServices2 = {2}; + int[] expectedSupportedServices3 = {1, 3}; + PersistableBundle carrierSupportedSatelliteServicesPerProvider = new PersistableBundle(); + carrierSupportedSatelliteServicesPerProvider.putIntArray( + "00102", expectedSupportedServices2); + carrierSupportedSatelliteServicesPerProvider.putIntArray( + "00103", expectedSupportedServices3); + String[] expectedSupportedSatellitePlmns = {"00102", "00103"}; + mCarrierConfigBundle.putPersistableBundle(CarrierConfigManager + .KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE, + carrierSupportedSatelliteServicesPerProvider); TestSatelliteController testSatelliteController = - new TestSatelliteController(mContext, Looper.myLooper()); - - satellitePlmnList = testSatelliteController.getSatellitePlmnList(); - assertTrue(Arrays.equals(satellitePlmnArray, satellitePlmnList.stream().toArray())); + new TestSatelliteController(mContext, Looper.myLooper(), mFeatureFlags); + satellitePlmnList = testSatelliteController.getSatellitePlmnList(SUB_ID); + assertTrue(satellitePlmnList.isEmpty()); supportedSatelliteServices = testSatelliteController.getSupportedSatelliteServices(SUB_ID, "00101"); - assertNotNull(supportedSatelliteServices); - assertTrue(Arrays.equals(expectedSupportedServices1, - supportedSatelliteServices.stream() - .mapToInt(Integer::intValue) - .toArray())); + assertTrue(supportedSatelliteServices.isEmpty()); + + // Carrier config changed with carrierEnabledSatelliteFlag disabled + for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair + : mCarrierConfigChangedListenerList) { + pair.first.execute(() -> pair.second.onCarrierConfigChanged( + /*slotIndex*/ 0, /*subId*/ SUB_ID, /*carrierId*/ 0, /*specificCarrierId*/ 0) + ); + } + processAllMessages(); supportedSatelliteServices = testSatelliteController.getSupportedSatelliteServices(SUB_ID, "00102"); - assertNotNull(supportedSatelliteServices); - assertTrue(Arrays.equals(expectedSupportedServices2, - supportedSatelliteServices.stream() - .mapToInt(Integer::intValue) - .toArray())); + assertTrue(supportedSatelliteServices.isEmpty()); + supportedSatelliteServices = + testSatelliteController.getSupportedSatelliteServices(SUB_ID, "00103"); + assertTrue(supportedSatelliteServices.isEmpty()); - // Carrier config changed - int[] expectedSupportedServices3 = {2}; - int[] supportedServices = {1, 3}; - PersistableBundle carrierSupportedSatelliteServicesPerProvider = new PersistableBundle(); - carrierSupportedSatelliteServicesPerProvider.putIntArray( - "00102", expectedSupportedServices3); - carrierSupportedSatelliteServicesPerProvider.putIntArray("00103", supportedServices); - mCarrierConfigBundle.putPersistableBundle(CarrierConfigManager - .KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE, - carrierSupportedSatelliteServicesPerProvider); + // Trigger carrier config changed with carrierEnabledSatelliteFlag enabled + when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true); for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair : mCarrierConfigChangedListenerList) { pair.first.execute(() -> pair.second.onCarrierConfigChanged( @@ -1530,26 +1639,22 @@ public class SatelliteControllerTest extends TelephonyTest { } processAllMessages(); + satellitePlmnList = testSatelliteController.getSatellitePlmnList(SUB_ID); + assertTrue(Arrays.equals( + expectedSupportedSatellitePlmns, satellitePlmnList.stream().toArray())); supportedSatelliteServices = - testSatelliteController.getSupportedSatelliteServices(SUB_ID, "00101"); - assertNotNull(supportedSatelliteServices); - assertTrue(Arrays.equals(expectedSupportedServices1, + mSatelliteControllerUT.getSupportedSatelliteServices(SUB_ID, "00102"); + assertTrue(Arrays.equals(expectedSupportedServices2, supportedSatelliteServices.stream() .mapToInt(Integer::intValue) .toArray())); - supportedSatelliteServices = - testSatelliteController.getSupportedSatelliteServices(SUB_ID, "00102"); - assertNotNull(supportedSatelliteServices); + mSatelliteControllerUT.getSupportedSatelliteServices(SUB_ID, "00103"); assertTrue(Arrays.equals(expectedSupportedServices3, supportedSatelliteServices.stream() .mapToInt(Integer::intValue) .toArray())); - supportedSatelliteServices = - mSatelliteControllerUT.getSupportedSatelliteServices(SUB_ID, "00103"); - assertTrue(supportedSatelliteServices.isEmpty()); - // Subscriptions changed int[] newActiveSubIds = {SUB_ID1}; doReturn(newActiveSubIds).when(mMockSubscriptionManagerService).getActiveSubIdList(true); @@ -1561,47 +1666,902 @@ public class SatelliteControllerTest extends TelephonyTest { } processAllMessages(); + satellitePlmnList = testSatelliteController.getSatellitePlmnList(SUB_ID); + assertTrue(satellitePlmnList.isEmpty()); supportedSatelliteServices = - testSatelliteController.getSupportedSatelliteServices(SUB_ID, "00101"); + testSatelliteController.getSupportedSatelliteServices(SUB_ID, "00102"); assertTrue(supportedSatelliteServices.isEmpty()); supportedSatelliteServices = - testSatelliteController.getSupportedSatelliteServices(SUB_ID, "00102"); + testSatelliteController.getSupportedSatelliteServices(SUB_ID, "00103"); assertTrue(supportedSatelliteServices.isEmpty()); + supportedSatelliteServices = - testSatelliteController.getSupportedSatelliteServices(SUB_ID1, "00101"); + testSatelliteController.getSupportedSatelliteServices(SUB_ID1, "00102"); assertNotNull(supportedSatelliteServices); - assertTrue(Arrays.equals(expectedSupportedServices1, + assertTrue(Arrays.equals(expectedSupportedServices2, supportedSatelliteServices.stream() .mapToInt(Integer::intValue) .toArray())); supportedSatelliteServices = - testSatelliteController.getSupportedSatelliteServices(SUB_ID1, "00102"); - assertNotNull(supportedSatelliteServices); + testSatelliteController.getSupportedSatelliteServices(SUB_ID1, "00103"); assertTrue(Arrays.equals(expectedSupportedServices3, supportedSatelliteServices.stream() .mapToInt(Integer::intValue) .toArray())); + } - supportedSatelliteServices = - testSatelliteController.getSupportedSatelliteServices(SUB_ID1, "00103"); - assertTrue(supportedSatelliteServices.isEmpty()); + @Test + public void testConfigureSatellitePlmnOnCarrierConfigChanged() { + logd("testConfigureSatellitePlmnOnCarrierConfigChanged"); + + when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(false); + String[] satelliteProviderStrArray = + {"00101", "00102", "00103", "00104", "00105"}; + List<String> satellitePlmnListFromOverlayConfig = + Arrays.stream(satelliteProviderStrArray).toList(); + mContextFixture.putStringArrayResource( + R.array.config_satellite_providers, satelliteProviderStrArray); + + /* Initially, the radio state is ON. In the constructor, satelliteController registers for + the radio state changed events and immediately gets the radio state changed event as ON. */ + doReturn(false).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + mCarrierConfigChangedListenerList.clear(); + TestSatelliteController testSatelliteController = + new TestSatelliteController(mContext, Looper.myLooper(), mFeatureFlags); + processAllMessages(); + List<String> carrierPlmnList = testSatelliteController.getSatellitePlmnList(SUB_ID); + verify(mMockSatelliteModemInterface, never()).setSatellitePlmn( + anyInt(), anyList(), anyList(), any(Message.class)); + assertTrue(carrierPlmnList.isEmpty()); + reset(mMockSatelliteModemInterface); + + // Test setSatellitePlmn() when Carrier Config change event triggered. + mCarrierConfigBundle.putBoolean(CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, + true); + int[] supportedServices2 = {2}; + int[] supportedServices3 = {1, 3}; + PersistableBundle carrierSupportedSatelliteServicesPerProvider = new PersistableBundle(); + carrierSupportedSatelliteServicesPerProvider.putIntArray( + "00102", supportedServices2); + carrierSupportedSatelliteServicesPerProvider.putIntArray( + "00103", supportedServices3); + List<String> expectedCarrierPlmnList = Arrays.asList("00102", "00103"); + mCarrierConfigBundle.putPersistableBundle(CarrierConfigManager + .KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE, + carrierSupportedSatelliteServicesPerProvider); + for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair + : mCarrierConfigChangedListenerList) { + pair.first.execute(() -> pair.second.onCarrierConfigChanged( + /*slotIndex*/ 0, /*subId*/ SUB_ID, /*carrierId*/ 0, /*specificCarrierId*/ 0) + ); + } + processAllMessages(); + carrierPlmnList = testSatelliteController.getSatellitePlmnList(SUB_ID); + verify(mMockSatelliteModemInterface, never()).setSatellitePlmn( + anyInt(), anyList(), anyList(), any(Message.class)); + assertTrue(carrierPlmnList.isEmpty()); + reset(mMockSatelliteModemInterface); + + // Reset TestSatelliteController so that device satellite PLMNs is loaded when + // carrierEnabledSatelliteFlag is enabled. + when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true); + mCarrierConfigChangedListenerList.clear(); + testSatelliteController = + new TestSatelliteController(mContext, Looper.myLooper(), mFeatureFlags); + + // Trigger carrier config changed with carrierEnabledSatelliteFlag enabled and empty + // carrier supported satellite services. + mCarrierConfigBundle.putPersistableBundle(CarrierConfigManager + .KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE, + new PersistableBundle()); + for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair + : mCarrierConfigChangedListenerList) { + pair.first.execute(() -> pair.second.onCarrierConfigChanged( + /*slotIndex*/ 0, /*subId*/ SUB_ID, /*carrierId*/ 0, /*specificCarrierId*/ 0) + ); + } + processAllMessages(); + + carrierPlmnList = testSatelliteController.getSatellitePlmnList(SUB_ID); + assertTrue(carrierPlmnList.isEmpty()); + List<String> allSatellitePlmnList = SatelliteServiceUtils.mergeStrLists( + carrierPlmnList, satellitePlmnListFromOverlayConfig); + verify(mMockSatelliteModemInterface, times(1)).setSatellitePlmn(anyInt(), + eq(EMPTY_STRING_LIST), eq(allSatellitePlmnList), any(Message.class)); + reset(mMockSatelliteModemInterface); + + // Trigger carrier config changed with carrierEnabledSatelliteFlag enabled and non-empty + // carrier supported satellite services. + mCarrierConfigBundle.putPersistableBundle(CarrierConfigManager + .KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE, + carrierSupportedSatelliteServicesPerProvider); + for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair + : mCarrierConfigChangedListenerList) { + pair.first.execute(() -> pair.second.onCarrierConfigChanged( + /*slotIndex*/ 0, /*subId*/ SUB_ID, /*carrierId*/ 0, /*specificCarrierId*/ 0) + ); + } + processAllMessages(); + carrierPlmnList = testSatelliteController.getSatellitePlmnList(SUB_ID); + allSatellitePlmnList = SatelliteServiceUtils.mergeStrLists( + carrierPlmnList, satellitePlmnListFromOverlayConfig); + assertEquals(expectedCarrierPlmnList, carrierPlmnList); + verify(mMockSatelliteModemInterface, times(1)).setSatellitePlmn(anyInt(), + eq(carrierPlmnList), eq(allSatellitePlmnList), any(Message.class)); + reset(mMockSatelliteModemInterface); + + /* setSatellitePlmn() is called regardless whether satellite attach for carrier is + supported. */ + mCarrierConfigBundle.putBoolean(CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, + false); + for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair + : mCarrierConfigChangedListenerList) { + pair.first.execute(() -> pair.second.onCarrierConfigChanged( + /*slotIndex*/ 0, /*subId*/ SUB_ID, /*carrierId*/ 0, /*specificCarrierId*/ 0) + ); + } + processAllMessages(); + verify(mMockSatelliteModemInterface, times(1)).setSatellitePlmn(anyInt(), + eq(carrierPlmnList), eq(allSatellitePlmnList), any(Message.class)); + reset(mMockSatelliteModemInterface); + + // Test empty config_satellite_providers and empty carrier PLMN list + mCarrierConfigChangedListenerList.clear(); + mContextFixture.putStringArrayResource( + R.array.config_satellite_providers, EMPTY_STRING_ARRAY); + testSatelliteController = + new TestSatelliteController(mContext, Looper.myLooper(), mFeatureFlags); + mCarrierConfigBundle.putPersistableBundle(CarrierConfigManager + .KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE, + new PersistableBundle()); + for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair + : mCarrierConfigChangedListenerList) { + pair.first.execute(() -> pair.second.onCarrierConfigChanged( + /*slotIndex*/ 0, /*subId*/ SUB_ID, /*carrierId*/ 0, /*specificCarrierId*/ 0) + ); + } + processAllMessages(); + carrierPlmnList = testSatelliteController.getSatellitePlmnList(SUB_ID); + assertTrue(carrierPlmnList.isEmpty()); + verify(mMockSatelliteModemInterface, times(1)).setSatellitePlmn(anyInt(), + eq(EMPTY_STRING_LIST), eq(EMPTY_STRING_LIST), any(Message.class)); + reset(mMockSatelliteModemInterface); + } + + @Test + public void testSatelliteCommunicationRestriction() { + when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true); + mCarrierConfigBundle.putBoolean( + CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); + for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair + : mCarrierConfigChangedListenerList) { + pair.first.execute(() -> pair.second.onCarrierConfigChanged( + /*slotIndex*/ 0, /*subId*/ SUB_ID, /*carrierId*/ 0, /*specificCarrierId*/ 0) + ); + } + processAllMessages(); + + // Remove restriction reason if exist + mIIntegerConsumerResults.clear(); + reset(mMockSatelliteModemInterface); + setUpResponseForRequestSetSatelliteEnabledForCarrier(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestSetSatelliteEnabledForCarrier(false, SATELLITE_RESULT_SUCCESS); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + mSatelliteControllerUT.removeSatelliteAttachRestrictionForCarrier(SUB_ID, + SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER, mIIntegerConsumer); + mSatelliteControllerUT.removeSatelliteAttachRestrictionForCarrier(SUB_ID, + SATELLITE_COMMUNICATION_RESTRICTION_REASON_GEOLOCATION, mIIntegerConsumer); + processAllMessages(); + assertTrue(waitForIIntegerConsumerResult(2)); + + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(1)); + + Set<Integer> restrictionSet = + mSatelliteControllerUT.getSatelliteAttachRestrictionReasonsForCarrier(SUB_ID); + assertTrue(!restrictionSet.contains(SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER)); + assertTrue(!restrictionSet.contains( + SATELLITE_COMMUNICATION_RESTRICTION_REASON_GEOLOCATION)); + + // Add satellite attach restriction reason by user + mIIntegerConsumerResults.clear(); + reset(mMockSatelliteModemInterface); + setUpResponseForRequestSetSatelliteEnabledForCarrier(false, SATELLITE_RESULT_SUCCESS); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + mSatelliteControllerUT.addSatelliteAttachRestrictionForCarrier(SUB_ID, + SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER, mIIntegerConsumer); + processAllMessages(); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + verify(mMockSatelliteModemInterface, never()) + .requestSetSatelliteEnabledForCarrier(anyInt(), anyBoolean(), any(Message.class)); + assertTrue(waitForIIntegerConsumerResult(1)); + restrictionSet = + mSatelliteControllerUT.getSatelliteAttachRestrictionReasonsForCarrier(SUB_ID); + assertTrue(restrictionSet.contains(SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER)); + + // remove satellite restriction reason by user + mIIntegerConsumerResults.clear(); + reset(mMockSatelliteModemInterface); + setUpResponseForRequestSetSatelliteEnabledForCarrier(true, SATELLITE_RESULT_SUCCESS); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + mSatelliteControllerUT.removeSatelliteAttachRestrictionForCarrier(SUB_ID, + SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER, mIIntegerConsumer); + processAllMessages(); + assertTrue(waitForIIntegerConsumerResult(1)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + restrictionSet = + mSatelliteControllerUT.getSatelliteAttachRestrictionReasonsForCarrier(SUB_ID); + assertTrue(!restrictionSet.contains(SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER)); + verify(mMockSatelliteModemInterface, times(1)) + .requestSetSatelliteEnabledForCarrier(anyInt(), anyBoolean(), any(Message.class)); + + // Add satellite attach restriction reason by user + mIIntegerConsumerResults.clear(); + reset(mMockSatelliteModemInterface); + setUpResponseForRequestSetSatelliteEnabledForCarrier(false, SATELLITE_RESULT_SUCCESS); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + mSatelliteControllerUT.addSatelliteAttachRestrictionForCarrier(SUB_ID, + SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER, mIIntegerConsumer); + processAllMessages(); + assertTrue(waitForIIntegerConsumerResult(1)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + restrictionSet = + mSatelliteControllerUT.getSatelliteAttachRestrictionReasonsForCarrier(SUB_ID); + assertTrue(restrictionSet.contains(SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER)); + verify(mMockSatelliteModemInterface, times(1)) + .requestSetSatelliteEnabledForCarrier(anyInt(), eq(false), any(Message.class)); + + // add satellite attach restriction reason by geolocation + mIIntegerConsumerResults.clear(); + reset(mMockSatelliteModemInterface); + setUpResponseForRequestSetSatelliteEnabledForCarrier(false, SATELLITE_RESULT_SUCCESS); + mSatelliteControllerUT.addSatelliteAttachRestrictionForCarrier(SUB_ID, + SATELLITE_COMMUNICATION_RESTRICTION_REASON_GEOLOCATION, mIIntegerConsumer); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + processAllMessages(); + assertTrue(waitForIIntegerConsumerResult(1)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + restrictionSet = + mSatelliteControllerUT.getSatelliteAttachRestrictionReasonsForCarrier(SUB_ID); + assertTrue(restrictionSet.contains(SATELLITE_COMMUNICATION_RESTRICTION_REASON_GEOLOCATION)); + verify(mMockSatelliteModemInterface, never()) + .requestSetSatelliteEnabledForCarrier(anyInt(), anyBoolean(), any(Message.class)); + + // remove satellite attach restriction reason by geolocation + mIIntegerConsumerResults.clear(); + reset(mMockSatelliteModemInterface); + setUpResponseForRequestSetSatelliteEnabledForCarrier(true, SATELLITE_RESULT_SUCCESS); + mSatelliteControllerUT.removeSatelliteAttachRestrictionForCarrier(SUB_ID, + SATELLITE_COMMUNICATION_RESTRICTION_REASON_GEOLOCATION, mIIntegerConsumer); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + processAllMessages(); + assertTrue(waitForIIntegerConsumerResult(1)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + restrictionSet = + mSatelliteControllerUT.getSatelliteAttachRestrictionReasonsForCarrier(SUB_ID); + assertTrue(!restrictionSet.contains( + SATELLITE_COMMUNICATION_RESTRICTION_REASON_GEOLOCATION)); + verify(mMockSatelliteModemInterface, never()) + .requestSetSatelliteEnabledForCarrier(anyInt(), anyBoolean(), any(Message.class)); + + // remove satellite restriction reason by user + mIIntegerConsumerResults.clear(); + reset(mMockSatelliteModemInterface); + setUpResponseForRequestSetSatelliteEnabledForCarrier(true, SATELLITE_RESULT_SUCCESS); + mSatelliteControllerUT.removeSatelliteAttachRestrictionForCarrier(SUB_ID, + SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER, mIIntegerConsumer); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + processAllMessages(); + assertTrue(waitForIIntegerConsumerResult(1)); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + restrictionSet = + mSatelliteControllerUT.getSatelliteAttachRestrictionReasonsForCarrier(SUB_ID); + assertTrue(!restrictionSet.contains(SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER)); + verify(mMockSatelliteModemInterface, times(1)) + .requestSetSatelliteEnabledForCarrier(anyInt(), eq(true), any(Message.class)); + reset(mMockSatelliteModemInterface); + + when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(false); + + mIIntegerConsumerResults.clear(); + mSatelliteControllerUT.removeSatelliteAttachRestrictionForCarrier(SUB_ID, + SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER, mIIntegerConsumer); + processAllMessages(); + assertTrue(waitForIIntegerConsumerResult(1)); + assertEquals( + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); + verifyZeroInteractions(mMockSatelliteModemInterface); + + mIIntegerConsumerResults.clear(); + mSatelliteControllerUT.addSatelliteAttachRestrictionForCarrier(SUB_ID, + SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER, mIIntegerConsumer); + processAllMessages(); + assertTrue(waitForIIntegerConsumerResult(1)); + assertEquals( + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, (long) mIIntegerConsumerResults.get(0)); + verifyZeroInteractions(mMockSatelliteModemInterface); + + Set<Integer> satelliteRestrictionReasons = + mSatelliteControllerUT.getSatelliteAttachRestrictionReasonsForCarrier(SUB_ID); + assertTrue(satelliteRestrictionReasons.isEmpty()); + } + + @Test + public void testIsSatelliteAttachRequired() { + mSatelliteCapabilitiesSemaphore.drainPermits(); + TestSatelliteController satelliteController = + new TestSatelliteController(mContext, Looper.myLooper(), mFeatureFlags); + satelliteController.requestSatelliteCapabilities(SUB_ID, mSatelliteCapabilitiesReceiver); + processAllMessages(); + assertTrue(waitForRequestSatelliteCapabilitiesResult(1)); + assertEquals( + SATELLITE_RESULT_INVALID_TELEPHONY_STATE, mQueriedSatelliteCapabilitiesResultCode); + assertFalse(satelliteController.isSatelliteAttachRequired()); + + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestSatelliteCapabilities( + mSatelliteCapabilities, SATELLITE_RESULT_MODEM_ERROR); + satelliteController = + new TestSatelliteController(mContext, Looper.myLooper(), mFeatureFlags); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestSatelliteCapabilities( + mEmptySatelliteCapabilities, SATELLITE_RESULT_SUCCESS); + satelliteController.requestSatelliteCapabilities(SUB_ID, mSatelliteCapabilitiesReceiver); + processAllMessages(); + assertTrue(waitForRequestSatelliteCapabilitiesResult(1)); + assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteCapabilitiesResultCode); + assertEquals(mEmptySatelliteCapabilities, mQueriedSatelliteCapabilities); + assertEquals(SatelliteManager.NT_RADIO_TECHNOLOGY_UNKNOWN, + mSatelliteControllerUT.getSupportedNtnRadioTechnology()); + + assertFalse(satelliteController.isSatelliteAttachRequired()); + + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestSatelliteCapabilities( + mSatelliteCapabilities, SATELLITE_RESULT_MODEM_ERROR); + satelliteController = + new TestSatelliteController(mContext, Looper.myLooper(), mFeatureFlags); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestSatelliteCapabilities( + mSatelliteCapabilities, SATELLITE_RESULT_SUCCESS); + satelliteController.requestSatelliteCapabilities(SUB_ID, mSatelliteCapabilitiesReceiver); + processAllMessages(); + assertTrue(waitForRequestSatelliteCapabilitiesResult(1)); + assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteCapabilitiesResultCode); + assertEquals(mSatelliteCapabilities, mQueriedSatelliteCapabilities); + assertTrue( + mQueriedSatelliteCapabilities.getSupportedRadioTechnologies().contains( + satelliteController.getSupportedNtnRadioTechnology())); + assertTrue(satelliteController.isSatelliteAttachRequired()); + + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(false); + assertFalse(satelliteController.isSatelliteAttachRequired()); + } + + @Test + public void testSatelliteModemStateChanged() { + clearInvocations(mMockSatelliteSessionController); + clearInvocations(mMockDatagramController); + sendSatelliteModemStateChangedEvent(SATELLITE_MODEM_STATE_CONNECTED, null); + processAllMessages(); + verify(mMockSatelliteSessionController, times(0)).onSatelliteModemStateChanged( + SATELLITE_MODEM_STATE_CONNECTED); + + resetSatelliteControllerUTToSupportedAndProvisionedState(); + clearInvocations(mMockSatelliteSessionController); + clearInvocations(mMockDatagramController); + sendSatelliteModemStateChangedEvent(SATELLITE_MODEM_STATE_UNAVAILABLE, null); + processAllMessages(); + verify(mMockSatelliteSessionController, times(1)).onSatelliteEnabledStateChanged(eq(false)); + verify(mMockSatelliteSessionController, times(1)).setDemoMode(eq(false)); + verify(mMockDatagramController, times(1)).setDemoMode(eq(false)); + + clearInvocations(mMockSatelliteSessionController); + clearInvocations(mMockDatagramController); + sendSatelliteModemStateChangedEvent(SATELLITE_MODEM_STATE_CONNECTED, null); + processAllMessages(); + verify(mMockSatelliteSessionController, times(1)).onSatelliteModemStateChanged( + SATELLITE_MODEM_STATE_CONNECTED); + } + + @Test + public void testRequestNtnSignalStrengthWithFeatureFlagEnabled() { + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true); + + resetSatelliteControllerUT(); + + mRequestNtnSignalStrengthSemaphore.drainPermits(); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + + @NtnSignalStrength.NtnSignalStrengthLevel int expectedLevel = NTN_SIGNAL_STRENGTH_GREAT; + setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + /* In case request is not successful, result should be NTN_SIGNAL_STRENGTH_NONE */ + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, SATELLITE_RESULT_NOT_SUPPORTED); + + resetSatelliteControllerUT(); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + + doReturn(false).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + verifyRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + + resetSatelliteControllerUT(); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + // reset cache to NTN_SIGNAL_STRENGTH_NONE + sendNtnSignalStrengthChangedEvent(NTN_SIGNAL_STRENGTH_NONE, null); + processAllMessages(); + expectedLevel = NTN_SIGNAL_STRENGTH_POOR; + setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + verifyRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + } + + @Test + public void testRequestNtnSignalStrengthWithFeatureFlagDisabled() { + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(false); + + resetSatelliteControllerUT(); + mRequestNtnSignalStrengthSemaphore.drainPermits(); + doReturn(false).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + + @NtnSignalStrength.NtnSignalStrengthLevel int expectedLevel = NTN_SIGNAL_STRENGTH_GREAT; + setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + + expectedLevel = NTN_SIGNAL_STRENGTH_POOR; + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_MODEM_ERROR); + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + } + + @Test + public void testRegisterForNtnSignalStrengthChangedWithFeatureFlagEnabled() { + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true); + + Semaphore semaphore = new Semaphore(0); + final NtnSignalStrength[] signalStrength = new NtnSignalStrength[1]; + INtnSignalStrengthCallback callback = + new INtnSignalStrengthCallback.Stub() { + @Override + public void onNtnSignalStrengthChanged(NtnSignalStrength ntnSignalStrength) { + logd("onNtnSignalStrengthChanged: ntnSignalStrength=" + + ntnSignalStrength); + try { + signalStrength[0] = ntnSignalStrength; + semaphore.release(); + } catch (Exception ex) { + loge("onNtnSignalStrengthChanged: Got exception in releasing " + + "semaphore, ex=" + ex); + } + } + }; + + verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, + SATELLITE_RESULT_INVALID_TELEPHONY_STATE); + + setUpResponseForRequestIsSatelliteSupported(false, + SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, + SATELLITE_RESULT_NOT_SUPPORTED); + + @NtnSignalStrength.NtnSignalStrengthLevel int expectedLevel = NTN_SIGNAL_STRENGTH_NONE; + verifyRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_NOT_SUPPORTED); + + resetSatelliteControllerUT(); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, + SATELLITE_RESULT_SUCCESS); + verifyRequestNtnSignalStrength(expectedLevel, SATELLITE_RESULT_SUCCESS); + + expectedLevel = NTN_SIGNAL_STRENGTH_GOOD; + sendNtnSignalStrengthChangedEvent(expectedLevel, null); + processAllMessages(); + assertTrue(waitForForEvents( + semaphore, 1, "testRegisterForNtnSignalStrengthChanged")); + assertEquals(expectedLevel, signalStrength[0].getLevel()); + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_GOOD, SATELLITE_RESULT_SUCCESS); + + expectedLevel = NTN_SIGNAL_STRENGTH_POOR; + sendNtnSignalStrengthChangedEvent(expectedLevel, null); + processAllMessages(); + assertTrue(waitForForEvents( + semaphore, 1, "testRegisterForNtnSignalStrengthChanged")); + assertEquals(expectedLevel, signalStrength[0].getLevel()); + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_POOR, SATELLITE_RESULT_SUCCESS); + + mSatelliteControllerUT.unregisterForNtnSignalStrengthChanged(SUB_ID, callback); + sendNtnSignalStrengthChangedEvent(NTN_SIGNAL_STRENGTH_GREAT, null); + processAllMessages(); + assertFalse(waitForForEvents( + semaphore, 1, "testRegisterForNtnSignalStrengthChanged")); + /* Even if all listeners are unregistered, the cache is updated with the latest value when a + new value event occurs. */ + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_GREAT, SATELLITE_RESULT_SUCCESS); + } + + @Test + public void testRegisterForNtnSignalStrengthChangedWithFeatureFlagDisabled() { + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(false); + + Semaphore semaphore = new Semaphore(0); + final NtnSignalStrength[] signalStrength = new NtnSignalStrength[1]; + INtnSignalStrengthCallback callback = + new INtnSignalStrengthCallback.Stub() { + @Override + public void onNtnSignalStrengthChanged(NtnSignalStrength ntnSignalStrength) { + logd("onNtnSignalStrengthChanged: ntnSignalStrength=" + + ntnSignalStrength); + try { + signalStrength[0] = ntnSignalStrength; + semaphore.release(); + } catch (Exception ex) { + loge("onNtnSignalStrengthChanged: Got exception in releasing " + + "semaphore, ex=" + ex); + } + } + }; + + verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + + setUpResponseForRequestIsSatelliteSupported(false, + SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_NOT_SUPPORTED); + verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + setUpResponseForRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, + SATELLITE_RESULT_SUCCESS); + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + + resetSatelliteControllerUT(); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_NOT_SUPPORTED); + verifyRegisterForNtnSignalStrengthChanged(SUB_ID, callback, + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + verifyRequestNtnSignalStrength(NTN_SIGNAL_STRENGTH_NONE, + SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + + @NtnSignalStrength.NtnSignalStrengthLevel int expectedNtnSignalStrengthLevel = + NTN_SIGNAL_STRENGTH_GOOD; + sendNtnSignalStrengthChangedEvent(expectedNtnSignalStrengthLevel, null); + processAllMessages(); + assertTrue(waitForForEvents( + semaphore, 0, "testRegisterForNtnSignalStrengthChanged")); + } + + @Test + public void testSendingNtnSignalStrengthWithFeatureEnabled() { + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true); + + int expectedResult = SATELLITE_RESULT_SUCCESS; + // startSendingNtnSignalStrength() is requested when screen on event comes. + reset(mMockSatelliteModemInterface); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForRequestIsSatelliteSupported(true, expectedResult); + setUpResponseForRequestIsSatelliteProvisioned(true, expectedResult); + verifySatelliteSupported(true, expectedResult); + verifySatelliteProvisioned(true, expectedResult); + setUpResponseForStartSendingNtnSignalStrength(expectedResult); + sendCmdStartSendingNtnSignalStrengthChangedEvent(true); + processAllMessages(); + verify(mMockSatelliteModemInterface, times(1)) + .startSendingNtnSignalStrength(any(Message.class)); + + // requested again but ignored as expected and current state are matched. + setUpResponseForStartSendingNtnSignalStrength(expectedResult); + sendCmdStartSendingNtnSignalStrengthChangedEvent(true); + processAllMessages(); + verify(mMockSatelliteModemInterface, times(1)) + .startSendingNtnSignalStrength(any(Message.class)); + + // stopSendingNtnSignalStrength() is requested when screen off event comes. + reset(mMockSatelliteModemInterface); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForStopSendingNtnSignalStrength(expectedResult); + sendCmdStartSendingNtnSignalStrengthChangedEvent(false); + processAllMessages(); + verify(mMockSatelliteModemInterface, times(1)) + .stopSendingNtnSignalStrength(any(Message.class)); + + // requested again but ignored as expected and current state are matched. + setUpResponseForStopSendingNtnSignalStrength(expectedResult); + sendCmdStartSendingNtnSignalStrengthChangedEvent(false); + processAllMessages(); + verify(mMockSatelliteModemInterface, times(1)) + .stopSendingNtnSignalStrength(any(Message.class)); + + // startSendingNtnSignalStrength() is requested but received fail from the service. + reset(mMockSatelliteModemInterface); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForStartSendingNtnSignalStrength(SATELLITE_RESULT_INVALID_MODEM_STATE); + sendCmdStartSendingNtnSignalStrengthChangedEvent(true); + processAllMessages(); + verify(mMockSatelliteModemInterface, times(1)) + .startSendingNtnSignalStrength(any(Message.class)); + + /* stopSendingNtnSignalStrength() is ignored because startSendingNtnSignalStrength has + failed thus current state is stopSendingNtnSignalStrength */ + reset(mMockSatelliteModemInterface); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForStopSendingNtnSignalStrength(SATELLITE_RESULT_NO_RESOURCES); + sendCmdStartSendingNtnSignalStrengthChangedEvent(false); + processAllMessages(); + verify(mMockSatelliteModemInterface, never()) + .stopSendingNtnSignalStrength(any(Message.class)); + + // startSendingNtnSignalStrength() is requested and modem state is changed + reset(mMockSatelliteModemInterface); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForStartSendingNtnSignalStrength(SATELLITE_RESULT_SUCCESS); + sendCmdStartSendingNtnSignalStrengthChangedEvent(true); + processAllMessages(); + verify(mMockSatelliteModemInterface, times(1)) + .startSendingNtnSignalStrength(any(Message.class)); + + // stopSendingNtnSignalStrength() is failed as modem returns error + reset(mMockSatelliteModemInterface); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForStopSendingNtnSignalStrength(SATELLITE_RESULT_NO_RESOURCES); + sendCmdStartSendingNtnSignalStrengthChangedEvent(false); + processAllMessages(); + verify(mMockSatelliteModemInterface, times(1)) + .stopSendingNtnSignalStrength(any(Message.class)); + + // request stopSendingNtnSignalStrength() again and returns success + reset(mMockSatelliteModemInterface); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForStopSendingNtnSignalStrength(SATELLITE_RESULT_SUCCESS); + sendCmdStartSendingNtnSignalStrengthChangedEvent(false); + processAllMessages(); + verify(mMockSatelliteModemInterface, times(1)) + .stopSendingNtnSignalStrength(any(Message.class)); + } + + @Test + public void testSendingNtnSignalStrengthWithFeatureDisabled() { + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(false); + + int expectedResult = SATELLITE_RESULT_SUCCESS; + // startSendingNtnSignalStrength() is requested when screen on event comes. + reset(mMockSatelliteModemInterface); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForRequestIsSatelliteSupported(true, expectedResult); + setUpResponseForRequestIsSatelliteProvisioned(true, expectedResult); + verifySatelliteSupported(false, SATELLITE_RESULT_NOT_SUPPORTED); + verifySatelliteProvisioned(false, SATELLITE_RESULT_REQUEST_NOT_SUPPORTED); + setUpResponseForStartSendingNtnSignalStrength(expectedResult); + sendCmdStartSendingNtnSignalStrengthChangedEvent(true); + processAllMessages(); + verify(mMockSatelliteModemInterface, never()) + .startSendingNtnSignalStrength(any(Message.class)); + + // stopSendingNtnSignalStrength() is requested when screen off event comes. + reset(mMockSatelliteModemInterface); + setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported(); + setUpResponseForStopSendingNtnSignalStrength(expectedResult); + sendCmdStartSendingNtnSignalStrengthChangedEvent(false); + processAllMessages(); + verify(mMockSatelliteModemInterface, never()) + .stopSendingNtnSignalStrength(any(Message.class)); + } + + @Test + public void testIsSatelliteSupportedViaCarrier() { + when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(false); + assertFalse(mSatelliteControllerUT.isSatelliteSupportedViaCarrier()); + + when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true); + assertFalse(mSatelliteControllerUT.isSatelliteSupportedViaCarrier()); + + mCarrierConfigBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); + for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair + : mCarrierConfigChangedListenerList) { + pair.first.execute(() -> pair.second.onCarrierConfigChanged( + /*slotIndex*/ 0, /*subId*/ SUB_ID, /*carrierId*/ 0, /*specificCarrierId*/ 0) + ); + } + processAllMessages(); + assertTrue(mSatelliteControllerUT.isSatelliteSupportedViaCarrier()); + } + + @Test + public void testCarrierEnabledSatelliteConnectionHysteresisTime() { + when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(false); + assertFalse(mSatelliteControllerUT.isSatelliteConnectedViaCarrierWithinHysteresisTime()); + + when(mFeatureFlags.carrierEnabledSatelliteFlag()).thenReturn(true); + mCarrierConfigBundle.putInt(KEY_SATELLITE_CONNECTION_HYSTERESIS_SEC_INT, 1 * 60); + mCarrierConfigBundle.putBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, true); + for (Pair<Executor, CarrierConfigManager.CarrierConfigChangeListener> pair + : mCarrierConfigChangedListenerList) { + pair.first.execute(() -> pair.second.onCarrierConfigChanged( + /*slotIndex*/ 0, /*subId*/ SUB_ID, /*carrierId*/ 0, /*specificCarrierId*/ 0) + ); + } + processAllMessages(); + mSatelliteControllerUT.elapsedRealtime = 0; + assertFalse(mSatelliteControllerUT.isSatelliteConnectedViaCarrierWithinHysteresisTime()); + + when(mServiceState.isUsingNonTerrestrialNetwork()).thenReturn(false); + when(mServiceState2.isUsingNonTerrestrialNetwork()).thenReturn(false); + sendServiceStateChangedEvent(); + processAllMessages(); + assertFalse(mSatelliteControllerUT.isSatelliteConnectedViaCarrierWithinHysteresisTime()); + + // Last satellite connected time of Phone2 should be 0 + when(mServiceState2.isUsingNonTerrestrialNetwork()).thenReturn(true); + sendServiceStateChangedEvent(); + processAllMessages(); + // 2 minutes later and hysteresis timeout is 1 minute + mSatelliteControllerUT.elapsedRealtime = 2 * 60 * 1000; + // But Phone2 is connected to NTN right now + assertTrue(mSatelliteControllerUT.isSatelliteConnectedViaCarrierWithinHysteresisTime()); + + // Last satellite disconnected time of Phone2 should be 2 * 60 * 1000 + when(mServiceState2.isUsingNonTerrestrialNetwork()).thenReturn(false); + sendServiceStateChangedEvent(); + processAllMessages(); + // Current time (2) - last disconnected time (2) < hysteresis timeout (1) + assertTrue(mSatelliteControllerUT.isSatelliteConnectedViaCarrierWithinHysteresisTime()); + + // Current time (4) - last disconnected time (2) > hysteresis timeout (1) + mSatelliteControllerUT.elapsedRealtime = 4 * 60 * 1000; + assertFalse(mSatelliteControllerUT.isSatelliteConnectedViaCarrierWithinHysteresisTime()); + } + + @Test + public void testRegisterForSatelliteCapabilitiesChangedWithFeatureFlagEnabled() { + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true); + + Semaphore semaphore = new Semaphore(0); + final SatelliteCapabilities[] satelliteCapabilities = new SatelliteCapabilities[1]; + ISatelliteCapabilitiesCallback callback = + new ISatelliteCapabilitiesCallback.Stub() { + @Override + public void onSatelliteCapabilitiesChanged(SatelliteCapabilities capabilities) { + logd("onSatelliteCapabilitiesChanged: " + capabilities); + try { + satelliteCapabilities[0] = capabilities; + semaphore.release(); + } catch (Exception ex) { + loge("onSatelliteCapabilitiesChanged: Got exception in releasing " + + "semaphore, ex=" + ex); + } + } + }; + + int errorCode = mSatelliteControllerUT.registerForSatelliteCapabilitiesChanged(SUB_ID, + callback); + assertEquals(SATELLITE_RESULT_INVALID_TELEPHONY_STATE, errorCode); + + setUpResponseForRequestIsSatelliteSupported(false, + SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_SUCCESS); + errorCode = mSatelliteControllerUT.registerForSatelliteCapabilitiesChanged(SUB_ID, + callback); + assertEquals(SATELLITE_RESULT_NOT_SUPPORTED, errorCode); + + resetSatelliteControllerUT(); + setUpResponseForRequestIsSatelliteProvisioned(true, + SATELLITE_RESULT_SUCCESS); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + errorCode = mSatelliteControllerUT.registerForSatelliteCapabilitiesChanged(SUB_ID, + callback); + assertEquals(SATELLITE_RESULT_SUCCESS, errorCode); + SatelliteCapabilities expectedCapabilities = mSatelliteCapabilities; + sendSatelliteCapabilitiesChangedEvent(expectedCapabilities, null); + processAllMessages(); + assertTrue(waitForForEvents( + semaphore, 1, "testRegisterForSatelliteCapabilitiesChanged")); + assertTrue(expectedCapabilities.equals(satelliteCapabilities[0])); + + expectedCapabilities = mEmptySatelliteCapabilities; + sendSatelliteCapabilitiesChangedEvent(expectedCapabilities, null); + processAllMessages(); + assertTrue(waitForForEvents( + semaphore, 1, "testRegisterForSatelliteCapabilitiesChanged")); + assertTrue(expectedCapabilities.equals(satelliteCapabilities[0])); + + mSatelliteControllerUT.unregisterForSatelliteCapabilitiesChanged(SUB_ID, callback); + expectedCapabilities = mSatelliteCapabilities; + sendSatelliteCapabilitiesChangedEvent(expectedCapabilities, null); + processAllMessages(); + assertTrue(waitForForEvents( + semaphore, 0, "testRegisterForSatelliteCapabilitiesChanged")); + } + + @Test + public void testRegisterForSatelliteCapabilitiesChangedWithFeatureFlagDisabled() { + when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(false); + + Semaphore semaphore = new Semaphore(0); + final SatelliteCapabilities[] satelliteCapabilities = new SatelliteCapabilities[1]; + ISatelliteCapabilitiesCallback callback = + new ISatelliteCapabilitiesCallback.Stub() { + @Override + public void onSatelliteCapabilitiesChanged(SatelliteCapabilities capabilities) { + logd("onSatelliteCapabilitiesChanged: " + capabilities); + try { + satelliteCapabilities[0] = capabilities; + semaphore.release(); + } catch (Exception ex) { + loge("onSatelliteCapabilitiesChanged: Got exception in releasing " + + "semaphore, ex=" + ex); + } + } + }; + + int errorCode = mSatelliteControllerUT.registerForSatelliteCapabilitiesChanged(SUB_ID, + callback); + assertEquals(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, errorCode); + + setUpResponseForRequestIsSatelliteSupported(false, + SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_NOT_SUPPORTED); + errorCode = mSatelliteControllerUT.registerForSatelliteCapabilitiesChanged(SUB_ID, + callback); + assertEquals(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, errorCode); + + resetSatelliteControllerUT(); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(false, SATELLITE_RESULT_NOT_SUPPORTED); + errorCode = mSatelliteControllerUT.registerForSatelliteCapabilitiesChanged(SUB_ID, + callback); + assertEquals(SATELLITE_RESULT_REQUEST_NOT_SUPPORTED, errorCode); + + SatelliteCapabilities expectedCapabilities = mSatelliteCapabilities; + sendSatelliteCapabilitiesChangedEvent(expectedCapabilities, null); + processAllMessages(); + assertTrue(waitForForEvents( + semaphore, 0, "testRegisterForSatelliteCapabilitiesChanged")); } private void resetSatelliteControllerUTEnabledState() { logd("resetSatelliteControllerUTEnabledState"); - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RADIO_NOT_AVAILABLE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_RADIO_NOT_AVAILABLE); doNothing().when(mMockSatelliteModemInterface) .setSatelliteServicePackageName(anyString()); mSatelliteControllerUT.setSatelliteServicePackageName("TestSatelliteService"); processAllMessages(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); sendProvisionedStateChangedEvent(true, null); processAllMessages(); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); } private void resetSatelliteControllerUT() { @@ -1611,7 +2571,7 @@ public class SatelliteControllerTest extends TelephonyTest { processAllMessages(); // Reset all cached states - setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RADIO_NOT_AVAILABLE); + setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_RADIO_NOT_AVAILABLE); doNothing().when(mMockSatelliteModemInterface) .setSatelliteServicePackageName(anyString()); mSatelliteControllerUT.setSatelliteServicePackageName("TestSatelliteService"); @@ -1620,11 +2580,11 @@ public class SatelliteControllerTest extends TelephonyTest { private void resetSatelliteControllerUTToSupportedAndProvisionedState() { resetSatelliteControllerUT(); - setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_ERROR_NONE); - verifySatelliteSupported(true, SATELLITE_ERROR_NONE); + setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS); + verifySatelliteSupported(true, SATELLITE_RESULT_SUCCESS); sendProvisionedStateChangedEvent(true, null); processAllMessages(); - verifySatelliteProvisioned(true, SATELLITE_ERROR_NONE); + verifySatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS); } private void resetSatelliteControllerUTToOffAndProvisionedState() { @@ -1632,7 +2592,7 @@ public class SatelliteControllerTest extends TelephonyTest { // Clean up pending resources and move satellite controller to OFF state. sendSatelliteModemStateChangedEvent(SATELLITE_MODEM_STATE_UNAVAILABLE, null); processAllMessages(); - verifySatelliteEnabled(false, SATELLITE_ERROR_NONE); + verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS); } private void resetSatelliteControllerUTToOnAndProvisionedState() { @@ -1640,17 +2600,17 @@ public class SatelliteControllerTest extends TelephonyTest { setRadioPower(true); processAllMessages(); - setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_ERROR_NONE); + setUpResponseForRequestSatelliteEnabled(true, false, SATELLITE_RESULT_SUCCESS); mSatelliteControllerUT.requestSatelliteEnabled(SUB_ID, true, false, mIIntegerConsumer); processAllMessages(); assertTrue(waitForIIntegerConsumerResult(1)); - assertEquals(SATELLITE_ERROR_NONE, (long) mIIntegerConsumerResults.get(0)); - verifySatelliteEnabled(true, SATELLITE_ERROR_NONE); + assertEquals(SATELLITE_RESULT_SUCCESS, (long) mIIntegerConsumerResults.get(0)); + verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS); } private void setUpResponseForRequestIsSatelliteEnabled(boolean isSatelliteEnabled, - @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; @@ -1661,8 +2621,8 @@ public class SatelliteControllerTest extends TelephonyTest { } private void setUpResponseForRequestIsSatelliteSupported( - boolean isSatelliteSupported, @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + boolean isSatelliteSupported, @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; @@ -1673,8 +2633,8 @@ public class SatelliteControllerTest extends TelephonyTest { } private void setUpResponseForRequestIsSatelliteAllowedForCurrentLocation( - boolean isSatelliteAllowed, @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + boolean isSatelliteAllowed, @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; @@ -1686,8 +2646,8 @@ public class SatelliteControllerTest extends TelephonyTest { } private void setUpNullResponseForRequestIsSatelliteAllowedForCurrentLocation( - @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; @@ -1699,10 +2659,10 @@ public class SatelliteControllerTest extends TelephonyTest { } private void setUpResponseForRequestTimeForNextSatelliteVisibility( - int satelliteVisibilityTime, @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + int satelliteVisibilityTime, @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); - int[] visibilityTime = new int[] {satelliteVisibilityTime}; + int[] visibilityTime = new int[]{satelliteVisibilityTime}; doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; AsyncResult.forMessage(message, visibilityTime, exception); @@ -1713,8 +2673,8 @@ public class SatelliteControllerTest extends TelephonyTest { } private void setUpNullResponseForRequestTimeForNextSatelliteVisibility( - @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; @@ -1726,10 +2686,10 @@ public class SatelliteControllerTest extends TelephonyTest { } private void setUpResponseForRequestIsSatelliteProvisioned( - boolean isSatelliteProvisioned, @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + boolean isSatelliteProvisioned, @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); - int[] provisioned = new int[] {isSatelliteProvisioned ? 1 : 0}; + int[] provisioned = new int[]{isSatelliteProvisioned ? 1 : 0}; doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; AsyncResult.forMessage(message, provisioned, exception); @@ -1739,8 +2699,8 @@ public class SatelliteControllerTest extends TelephonyTest { } private void setUpResponseForRequestSatelliteEnabled( - boolean enabled, boolean demoMode, @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + boolean enabled, boolean demoMode, @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { if (exception == null && !enabled) { @@ -1754,14 +2714,27 @@ public class SatelliteControllerTest extends TelephonyTest { .requestSatelliteEnabled(eq(enabled), eq(demoMode), any(Message.class)); } + private void setUpResponseForRequestSetSatelliteEnabledForCarrier( + boolean enabled, @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) + ? null : new SatelliteException(error); + doAnswer(invocation -> { + Message message = (Message) invocation.getArguments()[2]; + AsyncResult.forMessage(message, null, exception); + message.sendToTarget(); + return null; + }).when(mMockSatelliteModemInterface) + .requestSetSatelliteEnabledForCarrier(anyInt(), eq(enabled), any(Message.class)); + } + private void setUpNoResponseForRequestSatelliteEnabled(boolean enabled, boolean demoMode) { doNothing().when(mMockSatelliteModemInterface) .requestSatelliteEnabled(eq(enabled), eq(demoMode), any(Message.class)); } private void setUpResponseForProvisionSatelliteService( - String token, byte[] provisionData, @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + String token, byte[] provisionData, @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[2]; @@ -1778,8 +2751,8 @@ public class SatelliteControllerTest extends TelephonyTest { } private void setUpResponseForDeprovisionSatelliteService(String token, - @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[1]; @@ -1792,8 +2765,8 @@ public class SatelliteControllerTest extends TelephonyTest { private void setUpResponseForRequestSatelliteCapabilities( SatelliteCapabilities satelliteCapabilities, - @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; @@ -1803,6 +2776,20 @@ public class SatelliteControllerTest extends TelephonyTest { }).when(mMockSatelliteModemInterface).requestSatelliteCapabilities(any(Message.class)); } + private void setUpResponseForRequestNtnSignalStrength( + @NtnSignalStrength.NtnSignalStrengthLevel int ntnSignalStrengthLevel, + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) + ? null : new SatelliteException(error); + doAnswer(invocation -> { + Message message = (Message) invocation.getArguments()[0]; + AsyncResult.forMessage(message, new NtnSignalStrength(ntnSignalStrengthLevel), + exception); + message.sendToTarget(); + return null; + }).when(mMockSatelliteModemInterface).requestNtnSignalStrength(any(Message.class)); + } + private boolean waitForForEvents( Semaphore semaphore, int expectedNumberOfEvents, String caller) { for (int i = 0; i < expectedNumberOfEvents; i++) { @@ -1820,8 +2807,8 @@ public class SatelliteControllerTest extends TelephonyTest { } private void setUpNullResponseForRequestSatelliteCapabilities( - @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; @@ -1832,29 +2819,51 @@ public class SatelliteControllerTest extends TelephonyTest { } private void setUpResponseForStartSatelliteTransmissionUpdates( - @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; AsyncResult.forMessage(message, null, exception); message.sendToTarget(); return null; - }).when(mMockPointingAppController).startSatelliteTransmissionUpdates(any(Message.class), - any()); + }).when(mMockPointingAppController).startSatelliteTransmissionUpdates(any(Message.class)); } private void setUpResponseForStopSatelliteTransmissionUpdates( - @SatelliteManager.SatelliteError int error) { - SatelliteException exception = (error == SATELLITE_ERROR_NONE) + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) ? null : new SatelliteException(error); doAnswer(invocation -> { Message message = (Message) invocation.getArguments()[0]; AsyncResult.forMessage(message, null, exception); message.sendToTarget(); return null; - }).when(mMockPointingAppController).stopSatelliteTransmissionUpdates(any(Message.class), - any()); + }).when(mMockPointingAppController).stopSatelliteTransmissionUpdates(any(Message.class)); + } + + private void setUpResponseForStartSendingNtnSignalStrength( + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) + ? null : new SatelliteException(error); + doAnswer(invocation -> { + Message message = (Message) invocation.getArguments()[0]; + AsyncResult.forMessage(message, null, exception); + message.sendToTarget(); + return null; + }).when(mMockSatelliteModemInterface).startSendingNtnSignalStrength(any(Message.class)); + } + + private void setUpResponseForStopSendingNtnSignalStrength( + @SatelliteManager.SatelliteResult int error) { + SatelliteException exception = (error == SATELLITE_RESULT_SUCCESS) + ? null : new SatelliteException(error); + doAnswer(invocation -> { + Message message = (Message) invocation.getArguments()[0]; + AsyncResult.forMessage(message, null, exception); + message.sendToTarget(); + return null; + }).when(mMockSatelliteModemInterface).stopSendingNtnSignalStrength(any(Message.class)); } private boolean waitForRequestIsSatelliteSupportedResult(int expectedNumberOfEvents) { @@ -1967,6 +2976,22 @@ public class SatelliteControllerTest extends TelephonyTest { return true; } + private boolean waitForRequestNtnSignalStrengthResult(int expectedNumberOfEvents) { + for (int i = 0; i < expectedNumberOfEvents; i++) { + try { + if (!mRequestNtnSignalStrengthSemaphore.tryAcquire(TIMEOUT, + TimeUnit.MILLISECONDS)) { + loge("Timeout to receive requestNtnSignalStrength() callback"); + return false; + } + } catch (Exception ex) { + loge("requestNtnSignalStrength: Got exception=" + ex); + return false; + } + } + return true; + } + private boolean waitForIIntegerConsumerResult(int expectedNumberOfEvents) { for (int i = 0; i < expectedNumberOfEvents; i++) { try { @@ -2010,6 +3035,17 @@ public class SatelliteControllerTest extends TelephonyTest { assertEquals(provisioned, mQueriedIsSatelliteProvisioned); } + private void verifyRequestNtnSignalStrength( + @NtnSignalStrength.NtnSignalStrengthLevel int signalStrengthLevel, + int expectedErrorCode) { + mRequestNtnSignalStrengthSemaphore.drainPermits(); + mSatelliteControllerUT.requestNtnSignalStrength(SUB_ID, mRequestNtnSignalStrengthReceiver); + processAllMessages(); + assertTrue(waitForRequestNtnSignalStrengthResult(1)); + assertEquals(expectedErrorCode, mQueriedNtnSignalStrengthResultCode); + assertEquals(signalStrengthLevel, mQueriedNtnSignalStrengthLevel); + } + private void sendProvisionedStateChangedEvent(boolean provisioned, Throwable exception) { Message msg = mSatelliteControllerUT.obtainMessage( 26 /* EVENT_SATELLITE_PROVISION_STATE_CHANGED */); @@ -2024,10 +3060,65 @@ public class SatelliteControllerTest extends TelephonyTest { msg.sendToTarget(); } + private void sendNtnSignalStrengthChangedEvent( + @NtnSignalStrength.NtnSignalStrengthLevel int ntnSignalStrengthLevel, + Throwable exception) { + Message msg = mSatelliteControllerUT.obtainMessage( + 34 /* EVENT_NTN_SIGNAL_STRENGTH_CHANGED */); + msg.obj = new AsyncResult(null, new NtnSignalStrength(ntnSignalStrengthLevel), + exception); + msg.sendToTarget(); + } + + private void sendCmdStartSendingNtnSignalStrengthChangedEvent(boolean shouldReport) { + Message msg = mSatelliteControllerUT.obtainMessage( + 35 /* CMD_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING */); + msg.obj = new AsyncResult(null, shouldReport, null); + msg.sendToTarget(); + } + + private void sendStartSendingNtnSignalStrengthChangedEvent( + @NtnSignalStrength.NtnSignalStrengthLevel int ntnSignalStrengthLevel, + Throwable exception) { + Message msg = mSatelliteControllerUT.obtainMessage( + 36 /* EVENT_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING_DONE */); + msg.obj = new AsyncResult(null, new NtnSignalStrength(ntnSignalStrengthLevel), + exception); + msg.sendToTarget(); + } + + private void sendServiceStateChangedEvent() { + mSatelliteControllerUT.obtainMessage(37 /* EVENT_SERVICE_STATE_CHANGED */).sendToTarget(); + } + + private void sendSatelliteCapabilitiesChangedEvent(SatelliteCapabilities capabilities, + Throwable exception) { + Message msg = mSatelliteControllerUT.obtainMessage( + 38 /* EVENT_SATELLITE_CAPABILITIES_CHANGED */); + msg.obj = new AsyncResult(null, capabilities, exception); + msg.sendToTarget(); + } + private void setRadioPower(boolean on) { mSimulatedCommands.setRadioPower(on, false, false, null); } + private void verifyRegisterForNtnSignalStrengthChanged(int subId, + INtnSignalStrengthCallback callback, int expectedError) { + if (expectedError == SATELLITE_RESULT_SUCCESS) { + try { + mSatelliteControllerUT.registerForNtnSignalStrengthChanged(subId, callback); + } catch (RemoteException ex) { + throw new AssertionError(); + } + } else { + ServiceSpecificException ex = assertThrows(ServiceSpecificException.class, + () -> mSatelliteControllerUT.registerForNtnSignalStrengthChanged(subId, + callback)); + assertEquals(expectedError, ex.errorCode); + } + } + private static void loge(String message) { Rlog.e(TAG, message); } @@ -2176,10 +3267,12 @@ public class SatelliteControllerTest extends TelephonyTest { private static class TestSatelliteController extends SatelliteController { public boolean setSettingsKeyForSatelliteModeCalled = false; public boolean allRadiosDisabled = true; + public long elapsedRealtime = 0; public int satelliteModeSettingValue = SATELLITE_MODE_ENABLED_FALSE; - TestSatelliteController(Context context, Looper looper) { - super(context, looper); + TestSatelliteController( + Context context, Looper looper, @NonNull FeatureFlags featureFlags) { + super(context, looper, featureFlags); logd("Constructing TestSatelliteController"); } @@ -2199,5 +3292,17 @@ public class SatelliteControllerTest extends TelephonyTest { protected boolean areAllRadiosDisabled() { return allRadiosDisabled; } + + @Override + protected int getSupportedNtnRadioTechnology() { + int ntRadioTechnology = super.getSupportedNtnRadioTechnology(); + logd("getCurrentNtnRadioTechnology: val=" + ntRadioTechnology); + return ntRadioTechnology; + } + + @Override + protected long getElapsedRealtime() { + return elapsedRealtime; + } } } |