Loading src/com/android/server/telecom/PhoneAccountRegistrar.java +20 −5 Original line number Original line Diff line number Diff line Loading @@ -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; } } } } Loading src/com/android/server/telecom/TelecomServiceImpl.java +6 −6 Original line number Original line Diff line number Diff line Loading @@ -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"); Loading Loading @@ -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); } } Loading Loading
src/com/android/server/telecom/PhoneAccountRegistrar.java +20 −5 Original line number Original line Diff line number Diff line Loading @@ -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; } } } } Loading
src/com/android/server/telecom/TelecomServiceImpl.java +6 −6 Original line number Original line Diff line number Diff line Loading @@ -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"); Loading Loading @@ -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); } } Loading