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

Commit c08bd5ac authored by Tyler Gunn's avatar Tyler Gunn Committed by android-build-merger
Browse files

Merge "Make TelecomManager#addNewIncomingCall DSDS aware." into qt-dev am:...

Merge "Make TelecomManager#addNewIncomingCall DSDS aware." into qt-dev am: ef2d2a29 am: 1f99ceba
am: 6520f893

Change-Id: I7bc7c91143e16979fe88f535f3fda3981564635a
parents 50fa9e1f 6520f893
Loading
Loading
Loading
Loading
+20 −5
Original line number Original line Diff line number Diff line
@@ -472,17 +472,32 @@ public class PhoneAccountRegistrar {
        if (userHandle == null) {
        if (userHandle == null) {
            userHandle = call.getTargetPhoneAccount().getUserHandle();
            userHandle = call.getTargetPhoneAccount().getUserHandle();
        }
        }
        int subId = getSubscriptionIdForPhoneAccount(call.getTargetPhoneAccount());
        PhoneAccountHandle targetPhoneAccount = call.getTargetPhoneAccount();
        Log.d(this, "getSimCallManagerFromCall: callId=%s, targetPhac=%s",
                call.getId(), targetPhoneAccount);
        return getSimCallManagerFromHandle(targetPhoneAccount,userHandle);
    }

    /**
     * Given a target phone account and user, determines the sim call manager (if any) which is
     * associated with that {@link PhoneAccountHandle}.
     * @param targetPhoneAccount The target phone account to check.
     * @param userHandle The user handle.
     * @return The {@link PhoneAccountHandle} of the connection manager.
     */
    public PhoneAccountHandle getSimCallManagerFromHandle(PhoneAccountHandle targetPhoneAccount,
            UserHandle userHandle) {
        int subId = getSubscriptionIdForPhoneAccount(targetPhoneAccount);
        if (SubscriptionManager.isValidSubscriptionId(subId)
        if (SubscriptionManager.isValidSubscriptionId(subId)
                 && subId != SubscriptionManager.DEFAULT_SUBSCRIPTION_ID) {
                 && subId != SubscriptionManager.DEFAULT_SUBSCRIPTION_ID) {
            PhoneAccountHandle callManagerHandle = getSimCallManager(subId, userHandle);
            PhoneAccountHandle callManagerHandle = getSimCallManager(subId, userHandle);
            Log.d(this, "getSimCallManagerFromCall: callId=%s, targetPhac=%s, subId=%d, scm=%s",
            Log.d(this, "getSimCallManagerFromHandle: targetPhac=%s, subId=%d, scm=%s",
                    call.getId(), call.getTargetPhoneAccount(), subId, callManagerHandle);
                    targetPhoneAccount, subId, callManagerHandle);
            return callManagerHandle;
            return callManagerHandle;
        } else {
        } else {
            PhoneAccountHandle callManagerHandle = getSimCallManager(userHandle);
            PhoneAccountHandle callManagerHandle = getSimCallManager(userHandle);
            Log.d(this, "getSimCallManagerFromCall: callId=%s, targetPhac=%s, subId(d)=%d, scm=%s",
            Log.d(this, "getSimCallManagerFromHandle: targetPhac=%s, subId(d)=%d, scm=%s",
                    call.getId(), call.getTargetPhoneAccount(), subId, callManagerHandle);
                    targetPhoneAccount, subId, callManagerHandle);
            return callManagerHandle;
            return callManagerHandle;
        }
        }
    }
    }
+6 −6
Original line number Original line Diff line number Diff line
@@ -1071,9 +1071,8 @@ public class TelecomServiceImpl {
                            phoneAccountHandle);
                            phoneAccountHandle);
                    if (phoneAccountHandle != null &&
                    if (phoneAccountHandle != null &&
                            phoneAccountHandle.getComponentName() != null) {
                            phoneAccountHandle.getComponentName() != null) {
                        // TODO(sail): Add unit tests for adding incoming calls from a SIM call
                        if (isCallerSimCallManager(phoneAccountHandle)
                        // manager.
                                && TelephonyUtil.isPstnComponentName(
                        if (isCallerSimCallManager() && TelephonyUtil.isPstnComponentName(
                                        phoneAccountHandle.getComponentName())) {
                                        phoneAccountHandle.getComponentName())) {
                            Log.v(this, "Allowing call manager to add incoming call with PSTN" +
                            Log.v(this, "Allowing call manager to add incoming call with PSTN" +
                                    " handle");
                                    " handle");
@@ -1992,11 +1991,12 @@ public class TelecomServiceImpl {
                Binder.getCallingUid(), callingPackage) == AppOpsManager.MODE_ALLOWED;
                Binder.getCallingUid(), callingPackage) == AppOpsManager.MODE_ALLOWED;
    }
    }


    private boolean isCallerSimCallManager() {
    private boolean isCallerSimCallManager(PhoneAccountHandle targetPhoneAccount) {
        long token = Binder.clearCallingIdentity();
        long token = Binder.clearCallingIdentity();
        PhoneAccountHandle accountHandle = null;
        PhoneAccountHandle accountHandle = null;
        try {
        try {
             accountHandle = mPhoneAccountRegistrar.getSimCallManagerOfCurrentUser();
            accountHandle = mPhoneAccountRegistrar.getSimCallManagerFromHandle(targetPhoneAccount,
                    mCallsManager.getCurrentUserHandle());
        } finally {
        } finally {
            Binder.restoreCallingIdentity(token);
            Binder.restoreCallingIdentity(token);
        }
        }