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

Commit 88bcb020 authored by Thomas Nguyen's avatar Thomas Nguyen Committed by Gerrit Code Review
Browse files

Merge "Add signal strength callback" into main

parents a15c24b2 c4773b0f
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.Registrant;
import android.os.RegistrantList;
import android.os.RemoteException;
import android.telephony.AccessNetworkConstants;
import android.telephony.CarrierConfigManager;
@@ -104,7 +106,8 @@ public class SignalStrengthController extends Handler {
    private final Phone mPhone;
    @NonNull
    private final CommandsInterface mCi;

    @NonNull
    private final RegistrantList mSignalStrengthChangedRegistrants = new RegistrantList();
    @NonNull
    private SignalStrength mSignalStrength;
    private long mSignalStrengthUpdatedTime;
@@ -607,6 +610,7 @@ public class SignalStrengthController extends Handler {
        boolean notified = false;
        if (!mSignalStrength.equals(mLastSignalStrength)) {
            try {
                mSignalStrengthChangedRegistrants.notifyRegistrants();
                mPhone.notifySignalStrength();
                notified = true;
                mLastSignalStrength = mSignalStrength;
@@ -618,6 +622,25 @@ public class SignalStrengthController extends Handler {
        return notified;
    }

    /**
     * Register for SignalStrength changed.
     * @param h Handler to notify
     * @param what msg.what when the message is delivered
     * @param obj msg.obj when the message is delivered
     */
    public void registerForSignalStrengthChanged(Handler h, int what, Object obj) {
        Registrant r = new Registrant(h, what, obj);
        mSignalStrengthChangedRegistrants.add(r);
    }

    /**
     * Unregister for SignalStrength changed.
     * @param h Handler to notify
     */
    public void unregisterForSignalStrengthChanged(Handler h) {
        mSignalStrengthChangedRegistrants.remove(h);
    }

    /**
     * Print the SignalStrengthController states into the given stream.
     *
+13 −0
Original line number Diff line number Diff line
@@ -724,6 +724,19 @@ public class SignalStrengthControllerTest extends TelephonyTest {
                1 /*expectedNonEmptyThreshold*/);
    }

    @Test
    public void testSignalStrengthChangedCallback() {
        Handler mockRegistrant = Mockito.mock(Handler.class);
        int ssChangedEvent = 0;
        mSsc.registerForSignalStrengthChanged(mockRegistrant, ssChangedEvent, null);
        mSimulatedCommands.notifySignalStrength();
        processAllMessages();

        ArgumentCaptor<Message> msgCaptor = ArgumentCaptor.forClass(Message.class);
        verify(mockRegistrant).sendMessageDelayed(msgCaptor.capture(), Mockito.anyLong());
        assertThat(msgCaptor.getValue().what).isEqualTo(ssChangedEvent);
    }

    private void verifyAllEmptyThresholdAreDisabledWhenSetSignalStrengthReportingCriteria(
            int expectedNonEmptyThreshold) {
        ArgumentCaptor<List<SignalThresholdInfo>> signalThresholdInfoCaptor =