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

Commit dd5e304f authored by Nate Myren's avatar Nate Myren Committed by Automerger Merge Worker
Browse files

More intelligently deal with call ops in InCallController am: 15ac7cfb

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/13520533

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ifad5ec1967939a51993659477ad4b4109dd45592
parents df539cb5 15ac7cfb
Loading
Loading
Loading
Loading
+25 −4
Original line number Diff line number Diff line
@@ -982,6 +982,11 @@ public class InCallController extends CallsManagerListenerBase {
     */
    private boolean mIsCallUsingMicrophone = false;

    /**
     * A list of call IDs which are currently using the camera.
     */
    private ArrayList<String> mCallsUsingCamera = new ArrayList<>();

    public InCallController(Context context, TelecomSystem.SyncRoot lock, CallsManager callsManager,
            SystemStateHelper systemStateHelper, DefaultDialerCache defaultDialerCache,
            Timeouts.Adapter timeoutsAdapter, EmergencyCallHelper emergencyCallHelper,
@@ -1080,6 +1085,7 @@ public class InCallController extends CallsManagerListenerBase {
        call.removeListener(mCallListener);
        mCallIdMapper.removeCall(call);
        maybeTrackMicrophoneUse(isMuted());
        onSetCamera(call, null);
    }

    @Override
@@ -1252,15 +1258,30 @@ public class InCallController extends CallsManagerListenerBase {
     */
    @Override
    public void onSetCamera(Call call, String cameraId) {
        if (call == null) {
            return;
        }

        Log.i(this, "onSetCamera callId=%s, cameraId=%s", call.getId(), cameraId);
        if (cameraId != null) {
            boolean shouldStart = mCallsUsingCamera.isEmpty();
            if (!mCallsUsingCamera.contains(call.getId())) {
                mCallsUsingCamera.add(call.getId());
            }

            if (shouldStart) {
                mAppOpsManager.startOp(AppOpsManager.OP_PHONE_CALL_CAMERA, myUid(),
                        mContext.getOpPackageName(), false, null, null);
            }
        } else {
            boolean hadCall = !mCallsUsingCamera.isEmpty();
            mCallsUsingCamera.remove(call.getId());
            if (hadCall && mCallsUsingCamera.isEmpty()) {
                mAppOpsManager.finishOp(AppOpsManager.OP_PHONE_CALL_CAMERA, myUid(),
                        mContext.getOpPackageName(), null);
            }
        }
    }

    void bringToForeground(boolean showDialpad) {
        if (!mInCallServices.isEmpty()) {