Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9266470 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Cleanup testSatelliteModeRadios" into udc-dev

parents 393f876d 38ac9f2a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -276,7 +276,8 @@ public class DatagramController {
        mDatagramReceiver.onDeviceAlignedWithSatellite(isAligned);
    }

    boolean isReceivingDatagrams() {
    @VisibleForTesting
    public boolean isReceivingDatagrams() {
        synchronized (mLock) {
            return (mReceiveDatagramTransferState
                    == SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVING);
+37 −34
Original line number Diff line number Diff line
@@ -285,15 +285,6 @@ public class SatelliteController extends Handler {

    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected void initializeSatelliteModeRadios() {
        UwbManager uwbManager = mContext.getSystemService(UwbManager.class);
        NfcManager nfcManager = mContext.getSystemService(NfcManager.class);
        NfcAdapter nfcAdapter = null;
        if (nfcManager != null) {
            nfcAdapter = nfcManager.getDefaultAdapter();
        }
        BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        WifiManager wifiManager = mContext.getSystemService(WifiManager.class);

        if (mContentResolver != null) {
            BTWifiNFCStateReceiver bTWifiNFCSateReceiver = new BTWifiNFCStateReceiver();
            UwbAdapterStateCallback uwbAdapterStateCallback = new UwbAdapterStateCallback();
@@ -320,30 +311,41 @@ public class SatelliteController extends Handler {
                }
                logd("Radios To be checked when satellite is on: " + satelliteModeRadios);

                if (satelliteModeRadios.contains(Settings.Global.RADIO_BLUETOOTH)
                        && bluetoothAdapter != null) {
                if (satelliteModeRadios.contains(Settings.Global.RADIO_BLUETOOTH)) {
                    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                    if (bluetoothAdapter != null) {
                        mDisableBTOnSatelliteEnabled = true;
                        mBTStateEnabled = bluetoothAdapter.isEnabled();
                        radioStateIntentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
                    }
                }

                if (satelliteModeRadios.contains(Settings.Global.RADIO_NFC)
                        && nfcAdapter != null) {
                if (satelliteModeRadios.contains(Settings.Global.RADIO_NFC)) {
                    Context applicationContext = mContext.getApplicationContext();
                    NfcAdapter nfcAdapter = null;
                    if (applicationContext != null) {
                        nfcAdapter = NfcAdapter.getDefaultAdapter(mContext.getApplicationContext());
                    }
                    if (nfcAdapter != null) {
                        mDisableNFCOnSatelliteEnabled = true;
                        mNfcStateEnabled = nfcAdapter.isEnabled();
                        radioStateIntentFilter.addAction(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED);
                    }
                }

                if (satelliteModeRadios.contains(Settings.Global.RADIO_WIFI)
                        && wifiManager != null) {
                if (satelliteModeRadios.contains(Settings.Global.RADIO_WIFI)) {
                    WifiManager wifiManager = mContext.getSystemService(WifiManager.class);
                    if (wifiManager != null) {
                        mDisableWifiOnSatelliteEnabled = true;
                        mWifiStateEnabled = wifiManager.isWifiEnabled();
                        radioStateIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
                    }
                }
                mContext.registerReceiver(bTWifiNFCSateReceiver, radioStateIntentFilter);

                if (satelliteModeRadios.contains(Settings.Global.RADIO_UWB)
                        && uwbManager != null) {
                if (satelliteModeRadios.contains(Settings.Global.RADIO_UWB)) {
                    UwbManager uwbManager = mContext.getSystemService(UwbManager.class);
                    if (uwbManager != null) {
                        mDisableUWBOnSatelliteEnabled = true;
                        mUwbStateEnabled = uwbManager.isUwbEnabled();
                        final long identity = Binder.clearCallingIdentity();
@@ -354,6 +356,7 @@ public class SatelliteController extends Handler {
                            Binder.restoreCallingIdentity(identity);
                        }
                    }
                }

                logd("mDisableBTOnSatelliteEnabled: " + mDisableBTOnSatelliteEnabled
                        + " mDisableNFCOnSatelliteEnabled: " + mDisableNFCOnSatelliteEnabled
+41 −0
Original line number Diff line number Diff line
@@ -428,6 +428,47 @@ public class DatagramDispatcherTest extends TelephonyTest {
        verifyNoMoreInteractions(mMockDatagramController);
    }

    @Test
    public void testOnSatelliteModemStateChanged_modemStateListening() {
        mDatagramDispatcherUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_LISTENING);
        processAllMessages();
        verifyNoMoreInteractions(mMockDatagramController);
    }

    @Test
    public void testOnSatelliteModemStateChanged_modemStateOff_modemSendingDatagrams() {
        mDatagramDispatcherUT.sendSatelliteDatagram(SUB_ID, DATAGRAM_TYPE1, mDatagram,
                true, mResultListener::offer);

        mDatagramDispatcherUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_OFF);

        processAllMessages();

        mInOrder.verify(mMockDatagramController)
                .updateSendStatus(anyInt(),
                        eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED),
                        eq(1), eq(SatelliteManager.SATELLITE_REQUEST_ABORTED));
        mInOrder.verify(mMockDatagramController)
                .updateSendStatus(anyInt(),
                        eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE),
                        eq(0), eq(SatelliteManager.SATELLITE_ERROR_NONE));
    }

    @Test
    public void testOnSatelliteModemStateChanged_modemStateOff_modemNotSendingDatagrams() {
        mDatagramDispatcherUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_OFF);

        processAllMessages();

        mInOrder.verify(mMockDatagramController)
                .updateSendStatus(anyInt(),
                        eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE),
                        eq(0), eq(SatelliteManager.SATELLITE_ERROR_NONE));
    }

    private static class TestDatagramDispatcher extends DatagramDispatcher {
        private long mLong = SATELLITE_ALIGN_TIMEOUT;

+71 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static com.android.internal.telephony.satellite.DatagramController.SATELL
import android.annotation.NonNull;
import android.content.Context;
import android.provider.Telephony;
import android.telephony.satellite.ISatelliteDatagramCallback;
import android.test.mock.MockContentResolver;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
@@ -36,15 +37,19 @@ import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;

import android.os.AsyncResult;
import android.os.Looper;
import android.os.Message;
import android.os.IBinder;
import android.os.RemoteException;
import android.telephony.satellite.SatelliteDatagram;
import android.telephony.satellite.SatelliteManager;
import android.util.Pair;

import com.android.internal.telephony.IVoidConsumer;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.TelephonyTest;
@@ -73,6 +78,7 @@ public class DatagramReceiverTest extends TelephonyTest {
    private DatagramReceiver.SatelliteDatagramListenerHandler mSatelliteDatagramListenerHandler;
    private TestDatagramReceiver mTestDemoModeDatagramReceiver;

    @Mock private SatelliteController mMockSatelliteController;
    @Mock private DatagramController mMockDatagramController;
    @Mock private SatelliteModemInterface mMockSatelliteModemInterface;
    @Mock private ControllerMetricsStats mMockControllerMetricsStats;
@@ -97,6 +103,7 @@ public class DatagramReceiverTest extends TelephonyTest {
                Telephony.SatelliteDatagrams.PROVIDER_NAME, mFakeSatelliteProvider);
        doReturn(mMockContentResolver).when(mContext).getContentResolver();

        replaceInstance(SatelliteController.class, "sInstance", null, mMockSatelliteController);
        replaceInstance(DatagramController.class, "sInstance", null,
                mMockDatagramController);
        replaceInstance(SatelliteModemInterface.class, "sInstance", null,
@@ -406,6 +413,70 @@ public class DatagramReceiverTest extends TelephonyTest {
        assertThat(mResultListener.peek()).isEqualTo(SatelliteManager.SATELLITE_MODEM_BUSY);
    }

    @Test
    public void testOnSatelliteModemStateChanged_modemStateIdle() {
        mDatagramReceiverUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_IDLE);
        processAllMessages();
        verifyNoMoreInteractions(mMockDatagramController);
    }

    @Test
    public void testOnSatelliteModemStateChanged_modemStateOff_modemReceivingDatagrams() {
        when(mMockDatagramController.isReceivingDatagrams()).thenReturn(true);
        when(mMockDatagramController.getReceivePendingCount()).thenReturn(10);

        mDatagramReceiverUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_OFF);

        processAllMessages();

        mInOrder.verify(mMockDatagramController)
                .updateReceiveStatus(anyInt(),
                        eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_FAILED),
                        eq(10), eq(SatelliteManager.SATELLITE_REQUEST_ABORTED));
        mInOrder.verify(mMockDatagramController)
                .updateReceiveStatus(anyInt(),
                        eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE),
                        eq(0), eq(SatelliteManager.SATELLITE_ERROR_NONE));
    }

    @Test
    public void testOnSatelliteModemStateChanged_modemStateOff_modemNotReceivingDatagrams() {
        when(mMockDatagramController.isReceivingDatagrams()).thenReturn(false);

        mDatagramReceiverUT.onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_OFF);

        processAllMessages();

        mInOrder.verify(mMockDatagramController)
                .updateReceiveStatus(anyInt(),
                        eq(SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE),
                        eq(0), eq(SatelliteManager.SATELLITE_ERROR_NONE));
    }

    @Test
    public void testRegisterForSatelliteDatagram_satelliteNotSupported() {
        when(mMockSatelliteController.isSatelliteSupported()).thenReturn(false);

        ISatelliteDatagramCallback callback = new ISatelliteDatagramCallback() {
            @Override
            public void onSatelliteDatagramReceived(long datagramId, SatelliteDatagram datagram,
                    int pendingCount, IVoidConsumer callback) throws RemoteException {
                logd("onSatelliteDatagramReceived");
            }

            @Override
            public IBinder asBinder() {
                return null;
            }
        };

        assertThat(mDatagramReceiverUT.registerForSatelliteDatagram(SUB_ID, callback))
                .isEqualTo(SatelliteManager.SATELLITE_NOT_SUPPORTED);
    }

    private static class TestDatagramReceiver extends DatagramReceiver {
        private long mLong =  SATELLITE_ALIGN_TIMEOUT;