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

Commit 954c0931 authored by Pranav Madapurmath's avatar Pranav Madapurmath Committed by Android (Google) Code Review
Browse files

Merge "Formalize Telecom BlockedNumbers APIs into manager." into main

parents 804db141 b1301a31
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -9,3 +9,11 @@ flag {
    description: "Mainland cleanup for hidden dependencies"
    bug: "323414215"
}

flag {
    name: "telecom_mainline_blocked_numbers_manager"
    namespace: "telecom"
    description: "Fixed read only flag used for setting up BlockedNumbersManager to be retrieved via context"
    bug: "325049252"
    is_fixed_read_only: true
}
+16 −7
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ import android.os.Trace;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.BlockedNumberContract;
import android.provider.BlockedNumberContract.BlockedNumbers;
import android.provider.BlockedNumbersManager;
import android.provider.CallLog.Calls;
import android.provider.Settings;
import android.telecom.CallAttributes;
@@ -488,6 +488,7 @@ public class CallsManager extends Call.ListenerBase
    private final TransactionManager mTransactionManager;
    private final UserManager mUserManager;
    private final CallStreamingNotification mCallStreamingNotification;
    private final BlockedNumbersManager mBlockedNumbersManager;
    private final FeatureFlags mFeatureFlags;
    private final com.android.internal.telephony.flags.FeatureFlags mTelephonyFeatureFlags;

@@ -556,7 +557,8 @@ public class CallsManager extends Call.ListenerBase
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED.equals(action)
                    || BlockedNumbers.ACTION_BLOCK_SUPPRESSION_STATE_CHANGED.equals(action)) {
                    || BlockedNumbersManager
                    .ACTION_BLOCK_SUPPRESSION_STATE_CHANGED.equals(action)) {
                updateEmergencyCallNotificationAsync(context);
            }
        }
@@ -718,6 +720,9 @@ public class CallsManager extends Call.ListenerBase
        mCallStreamingNotification = callStreamingNotification;
        mFeatureFlags = featureFlags;
        mTelephonyFeatureFlags = telephonyFlags;
        mBlockedNumbersManager = mFeatureFlags.telecomMainlineBlockedNumbersManager()
                ? mContext.getSystemService(BlockedNumbersManager.class)
                : null;

        if (mFeatureFlags.useImprovedListenerOrder()) {
            mListeners.add(mInCallController);
@@ -758,7 +763,7 @@ public class CallsManager extends Call.ListenerBase
        IntentFilter intentFilter = new IntentFilter(
                CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
        intentFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
        intentFilter.addAction(BlockedNumbers.ACTION_BLOCK_SUPPRESSION_STATE_CHANGED);
        intentFilter.addAction(BlockedNumbersManager.ACTION_BLOCK_SUPPRESSION_STATE_CHANGED);
        context.registerReceiver(mReceiver, intentFilter, Context.RECEIVER_EXPORTED);
        mGraphHandlerThreads = new LinkedList<>();

@@ -912,7 +917,7 @@ public class CallsManager extends Call.ListenerBase
        DirectToVoicemailFilter voicemailFilter = new DirectToVoicemailFilter(incomingCall,
                mCallerInfoLookupHelper);
        BlockCheckerFilter blockCheckerFilter = new BlockCheckerFilter(mContext, incomingCall,
                mCallerInfoLookupHelper, new BlockCheckerAdapter());
                mCallerInfoLookupHelper, new BlockCheckerAdapter(mFeatureFlags));
        DndCallFilter dndCallFilter = new DndCallFilter(incomingCall, getRinger());
        CallScreeningServiceFilter carrierCallScreeningServiceFilter =
                new CallScreeningServiceFilter(incomingCall, carrierPackageName,
@@ -2958,9 +2963,13 @@ public class CallsManager extends Call.ListenerBase
        }

        if (call.isEmergencyCall()) {
            Executors.defaultThreadFactory().newThread(() ->
                    BlockedNumberContract.BlockedNumbers.notifyEmergencyContact(mContext))
                    .start();
            Executors.defaultThreadFactory().newThread(() -> {
                if (mBlockedNumbersManager != null) {
                    mBlockedNumbersManager.notifyEmergencyContact();
                } else {
                    BlockedNumberContract.SystemContract.notifyEmergencyContact(mContext);
                }
            }).start();
        }

        final boolean requireCallCapableAccountByHandle = mContext.getResources().getBoolean(
+10 −1
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ import android.os.ResultReceiver;
import android.os.ShellCallback;
import android.os.UserHandle;
import android.provider.BlockedNumberContract;
import android.provider.BlockedNumbersManager;
import android.provider.Settings;
import android.telecom.CallAttributes;
import android.telecom.CallException;
@@ -2010,7 +2011,11 @@ public class TelecomServiceImpl {
                synchronized (mLock) {
                    long token = Binder.clearCallingIdentity();
                    try {
                        BlockedNumberContract.BlockedNumbers.endBlockSuppression(mContext);
                        if (mBlockedNumbersManager != null) {
                            mBlockedNumbersManager.endBlockSuppression();
                        } else {
                            BlockedNumberContract.SystemContract.endBlockSuppression(mContext);
                        }
                    } finally {
                        Binder.restoreCallingIdentity(token);
                    }
@@ -2686,6 +2691,7 @@ public class TelecomServiceImpl {
    private final TelecomSystem.SyncRoot mLock;
    private TransactionManager mTransactionManager;
    private final TransactionalServiceRepository mTransactionalServiceRepository;
    private final BlockedNumbersManager mBlockedNumbersManager;
    private final FeatureFlags mFeatureFlags;
    private final com.android.internal.telephony.flags.FeatureFlags mTelephonyFeatureFlags;

@@ -2737,6 +2743,9 @@ public class TelecomServiceImpl {

        mTransactionManager = TransactionManager.getInstance();
        mTransactionalServiceRepository = new TransactionalServiceRepository();
        mBlockedNumbersManager = mFeatureFlags.telecomMainlineBlockedNumbersManager()
                ? mContext.getSystemService(BlockedNumbersManager.class)
                : null;
    }

    @VisibleForTesting
+0 −3
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.net.Uri;
import android.os.BugreportManager;
import android.os.DropBoxManager;
import android.os.UserHandle;
import android.os.UserManager;
import android.telecom.Log;
import android.telecom.PhoneAccountHandle;
import android.telephony.AnomalyReporter;
@@ -45,9 +44,7 @@ import com.android.server.telecom.bluetooth.BluetoothDeviceManager;
import com.android.server.telecom.bluetooth.BluetoothRouteManager;
import com.android.server.telecom.bluetooth.BluetoothStateReceiver;
import com.android.server.telecom.callfiltering.BlockedNumbersAdapter;
import com.android.server.telecom.callfiltering.CallFilterResultCallback;
import com.android.server.telecom.callfiltering.IncomingCallFilterGraph;
import com.android.server.telecom.callfiltering.IncomingCallFilterGraphProvider;
import com.android.server.telecom.components.UserCallIntentProcessor;
import com.android.server.telecom.components.UserCallIntentProcessorFactory;
import com.android.server.telecom.flags.FeatureFlags;
+20 −4
Original line number Diff line number Diff line
@@ -19,12 +19,19 @@ package com.android.server.telecom.callfiltering;
import android.content.Context;
import android.os.Bundle;
import android.provider.BlockedNumberContract;
import android.provider.BlockedNumbersManager;
import android.telecom.Log;

import com.android.server.telecom.flags.FeatureFlags;

public class BlockCheckerAdapter {
    private static final String TAG = BlockCheckerAdapter.class.getSimpleName();

    public BlockCheckerAdapter() { }
    private FeatureFlags mFeatureFlags;

    public BlockCheckerAdapter(FeatureFlags featureFlags) {
        mFeatureFlags = featureFlags;
    }

    /**
     * Returns the call blocking status for the {@code phoneNumber}.
@@ -32,7 +39,6 @@ public class BlockCheckerAdapter {
     * This method catches all underlying exceptions to ensure that this method never throws any
     * exception.
     *
     * @param context the context of the caller.
     * @param phoneNumber the number to check.
     * @param numberPresentation the presentation code associated with the call.
     * @param isNumberInContacts indicates if the provided number exists as a contact.
@@ -48,10 +54,20 @@ public class BlockCheckerAdapter {
            int numberPresentation, boolean isNumberInContacts) {
        int blockStatus = BlockedNumberContract.STATUS_NOT_BLOCKED;
        long startTimeNano = System.nanoTime();
        BlockedNumbersManager blockedNumbersManager = mFeatureFlags
                .telecomMainlineBlockedNumbersManager()
                ? context.getSystemService(BlockedNumbersManager.class)
                : null;

        try {
            blockStatus = BlockedNumberContract.BlockedNumbers.shouldSystemBlockNumber(
                    context, phoneNumber, numberPresentation, isNumberInContacts);
            Bundle extras = new Bundle();
            extras.putInt(BlockedNumberContract.EXTRA_CALL_PRESENTATION, numberPresentation);
            extras.putBoolean(BlockedNumberContract.EXTRA_CONTACT_EXIST, isNumberInContacts);
            blockStatus = blockedNumbersManager != null
                    ? blockedNumbersManager.shouldSystemBlockNumber(phoneNumber,
                    numberPresentation, isNumberInContacts)
                    : BlockedNumberContract.SystemContract.shouldSystemBlockNumber(context,
                            phoneNumber, extras);
            if (blockStatus != BlockedNumberContract.STATUS_NOT_BLOCKED) {
                Log.d(TAG, phoneNumber + " is blocked.");
            }
Loading