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

Commit 52701ad2 authored by Hall Liu's avatar Hall Liu Committed by Android (Google) Code Review
Browse files

Merge "Check user restrictions during incoming calls." into pi-dev

parents def4ab55 4b8830b4
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -516,6 +516,20 @@ public class CallsManager extends Call.ListenerBase
            return;
        }

        // Check DISALLOW_OUTGOING_CALLS restriction.
        // Only ecbm calls are allowed through when users with the DISALLOW_OUTGOING_CALLS
        // restriction are the current user.
        final UserManager userManager = (UserManager) mContext.getSystemService(
                Context.USER_SERVICE);
        if (userManager.hasUserRestriction(UserManager.DISALLOW_OUTGOING_CALLS,
                mCurrentUserHandle)) {
            Log.w(this, "Rejecting non-ecbm phone call due to DISALLOW_INCOMING_CALLS "
                    + "restriction");
            incomingCall.reject(false, null);
            mCallLogManager.logCall(incomingCall, Calls.MISSED_TYPE, false /* showNotification */);
            return;
        }

        List<IncomingCallFilter.CallFilter> filters = new ArrayList<>();
        filters.add(new DirectToVoicemailCallFilter(mCallerInfoLookupHelper));
        filters.add(new AsyncBlockCheckFilter(mContext, new BlockCheckerAdapter(),
+17 −1
Original line number Diff line number Diff line
@@ -16,9 +16,12 @@

package com.android.server.telecom;

import android.content.Context;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.telecom.Log;
import android.telecom.PhoneAccountHandle;

@@ -32,14 +35,16 @@ import java.util.List;
 * binding to it. This adapter can receive commands and updates until the in-call app is unbound.
 */
class InCallAdapter extends IInCallAdapter.Stub {
    private final Context mContext;
    private final CallsManager mCallsManager;
    private final CallIdMapper mCallIdMapper;
    private final TelecomSystem.SyncRoot mLock;
    private final String mOwnerComponentName;

    /** Persists the specified parameters. */
    public InCallAdapter(CallsManager callsManager, CallIdMapper callIdMapper,
    public InCallAdapter(Context context, CallsManager callsManager, CallIdMapper callIdMapper,
            TelecomSystem.SyncRoot lock, String ownerComponentName) {
        mContext = context;
        mCallsManager = callsManager;
        mCallIdMapper = callIdMapper;
        mLock = lock;
@@ -96,6 +101,17 @@ class InCallAdapter extends IInCallAdapter.Stub {
    public void rejectCall(String callId, boolean rejectWithMessage, String textMessage) {
        try {
            Log.startSession(LogUtils.Sessions.ICA_REJECT_CALL, mOwnerComponentName);
            UserHandle callingUser = UserHandle.of(UserHandle.getUserId(Binder.getCallingUid()));
            UserManager userManager = mContext.getSystemService(UserManager.class);

            // Check to make sure the in-call app's user isn't restricted from sending SMS. If so,
            // silently drop the outgoing message.
            if (rejectWithMessage && userManager.hasUserRestriction(
                    UserManager.DISALLOW_SMS, callingUser)) {
                rejectWithMessage = false;
                textMessage = null;
            }

            long token = Binder.clearCallingIdentity();
            try {
                synchronized (mLock) {
+1 −0
Original line number Diff line number Diff line
@@ -1309,6 +1309,7 @@ public class InCallController extends CallsManagerListenerBase {
        try {
            inCallService.setInCallAdapter(
                    new InCallAdapter(
                            mContext,
                            mCallsManager,
                            mCallIdMapper,
                            mLock,