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

Commit 772e81e0 authored by Hall Liu's avatar Hall Liu Committed by android-build-merger
Browse files

Check user restrictions during incoming calls.

am: aa7d8d88

Change-Id: I55733579fae68f89ca6103fd015b7e452bf9fbfc
parents 1f93ea2e aa7d8d88
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,