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

Commit 7ce83598 authored by Grant Menke's avatar Grant Menke
Browse files

Prevent filtering of incoming emergency calls.

Turned off incoming call filtering for calls in emegergency SMS mode
and network identifiied emergency calls.

Bug: 234632741
Test: CallsManagerTest
Change-Id: I50034a2043836d28394bc6dd2f4ef004e5230a56
parent 4b1dba44
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -673,12 +673,19 @@ public class CallsManager extends Call.ListenerBase
            phoneAccount == null || phoneAccount.getExtras() == null
                ? new Bundle()
                : phoneAccount.getExtras();
        TelephonyManager telephonyManager = getTelephonyManager();
        if (incomingCall.hasProperty(Connection.PROPERTY_EMERGENCY_CALLBACK_MODE) ||
                incomingCall.hasProperty(Connection.PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL) ||
                telephonyManager.isInEmergencySmsMode() ||
                incomingCall.isSelfManaged() ||
                extras.getBoolean(PhoneAccount.EXTRA_SKIP_CALL_FILTERING)) {
            Log.i(this, "Skipping call filtering for %s (ecm=%b, selfMgd=%b, skipExtra=%b)",
            Log.i(this, "Skipping call filtering for %s (ecm=%b, "
                            + "networkIdentifiedEmergencyCall = %b, emergencySmsMode = %b, "
                            + "selfMgd=%b, skipExtra=%b)",
                    incomingCall.getId(),
                    incomingCall.hasProperty(Connection.PROPERTY_EMERGENCY_CALLBACK_MODE),
                    incomingCall.hasProperty(Connection.PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL),
                    telephonyManager.isInEmergencySmsMode(),
                    incomingCall.isSelfManaged(),
                    extras.getBoolean(PhoneAccount.EXTRA_SKIP_CALL_FILTERING));
            onCallFilteringComplete(incomingCall, new Builder()
+37 −0
Original line number Diff line number Diff line
@@ -942,6 +942,43 @@ public class CallsManagerTest extends TelecomTestCase {
        verify(incomingCall).setIsUsingCallFiltering(eq(false));
    }

    @SmallTest
    @Test
    public void testNoFilteringOfNetworkIdentifiedEmergencyCalls() {
        // GIVEN an incoming call which is network identified as an emergency call.
        Call incomingCall = addSpyCall(CallState.NEW);
        incomingCall.setConnectionProperties(Connection.PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL);
        doReturn(false).when(incomingCall).can(Connection.CAPABILITY_HOLD);
        doReturn(false).when(incomingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
        doReturn(true).when(incomingCall)
                .hasProperty(Connection.PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL);
        doReturn(true).when(incomingCall).setState(anyInt(), any());

        // WHEN the incoming call is successfully added.
        mCallsManager.onSuccessfulIncomingCall(incomingCall);

        // THEN the incoming call is not using call filtering
        verify(incomingCall).setIsUsingCallFiltering(eq(false));
    }

    @SmallTest
    @Test
    public void testNoFilteringOfEmergencySmsModeCalls() {
        // GIVEN an incoming call which is network identified as an emergency call.
        Call incomingCall = addSpyCall(CallState.NEW);
        when(mComponentContextFixture.getTelephonyManager().isInEmergencySmsMode())
                .thenReturn(true);
        doReturn(false).when(incomingCall).can(Connection.CAPABILITY_HOLD);
        doReturn(false).when(incomingCall).can(Connection.CAPABILITY_SUPPORT_HOLD);
        doReturn(true).when(incomingCall).setState(anyInt(), any());

        // WHEN the incoming call is successfully added.
        mCallsManager.onSuccessfulIncomingCall(incomingCall);

        // THEN the incoming call is not using call filtering
        verify(incomingCall).setIsUsingCallFiltering(eq(false));
    }

    @SmallTest
    @Test
    public void testAcceptIncomingCallWhenHeadsetMediaButtonShortPress() {