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

Commit e7855fd7 authored by Brandon Maxwell's avatar Brandon Maxwell Committed by android-build-merger
Browse files

Fixing blocked number ringtone after E911 call

am: bb69f18b

* commit 'bb69f18b':
  Fixing blocked number ringtone after E911 call

Change-Id: I986f6079c6f113caa6ba01132ccac89627c5e460
parents 2e239bd4 bb69f18b
Loading
Loading
Loading
Loading
+21 −6
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ import android.view.WindowManager;

import com.android.contacts.common.GeoUtil;
import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.compat.SdkVersionOverride;
import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
import com.android.contacts.common.interactions.TouchPointManager;
import com.android.contacts.common.testing.NeededForTesting;
@@ -174,6 +173,9 @@ public class InCallPresenter implements CallList.Listener,
    private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
        public void onCallStateChanged(int state, String incomingNumber) {
            if (state == TelephonyManager.CALL_STATE_RINGING) {
                if (FilteredNumbersUtil.hasRecentEmergencyCall(mContext)) {
                    return;
                }
                // Check if the number is blocked, to silence the ringer.
                String countryIso = GeoUtil.getCurrentCountryIso(mContext);
                mFilteredQueryHandler.isBlockedNumber(
@@ -496,10 +498,7 @@ public class InCallPresenter implements CallList.Listener,
    }

    public void onCallAdded(final android.telecom.Call call) {
        // Check if call should be blocked.
        if (!TelecomCallUtil.isEmergencyCall(call)
                && !FilteredNumbersUtil.hasRecentEmergencyCall(mContext)
                && call.getState() == android.telecom.Call.STATE_RINGING) {
        if (shouldAttemptBlocking(call)) {
            maybeBlockCall(call);
        } else {
            mCallList.onCallAdded(call);
@@ -510,6 +509,22 @@ public class InCallPresenter implements CallList.Listener,
        call.registerCallback(mCallCallback);
    }

    private boolean shouldAttemptBlocking(android.telecom.Call call) {
        if (call.getState() != android.telecom.Call.STATE_RINGING) {
            return false;
        }
        if (TelecomCallUtil.isEmergencyCall(call)) {
            Log.i(this, "Not attempting to block incoming emergency call");
            return false;
        }
        if (FilteredNumbersUtil.hasRecentEmergencyCall(mContext)) {
            Log.i(this, "Not attempting to block incoming call due to recent emergency call");
            return false;
        }

        return true;
    }

    /**
     * Checks whether a call should be blocked, and blocks it if so. Otherwise, it adds the call
     * to the CallList so it can proceed as normal. There is a timeout, so if the function for
@@ -548,8 +563,8 @@ public class InCallPresenter implements CallList.Listener,
                        mCallList.onCallAdded(call);
                    }
                } else {
                    Log.i(this, "Rejecting incoming call from blocked number");
                    call.reject(false, null);
                    Log.d(this, "checkForBlockedCall: " + Log.pii(number) + " blocked.");
                    Logger.logInteraction(InteractionEvent.CALL_BLOCKED);

                    mFilteredQueryHandler.incrementFilteredCount(id);