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

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

Modify ImsVideoCallProvider to include calling UID for permission check. am: b984c78a

am: 07b6e48c

Change-Id: I921309912041ba827f46362f8054a77df0bac7d4
parents f2818deb 07b6e48c
Loading
Loading
Loading
Loading
+26 −3
Original line number Diff line number Diff line
@@ -56,8 +56,16 @@ public abstract class ImsVideoCallProvider {
                    mCallback = (IImsVideoCallCallback) msg.obj;
                    break;
                case MSG_SET_CAMERA:
                    onSetCamera((String) msg.obj);
                {
                    SomeArgs args = (SomeArgs) msg.obj;
                    try {
                        onSetCamera((String) args.arg1);
                        onSetCamera((String) args.arg1, args.argi1);
                    } finally {
                        args.recycle();
                    }
                    break;
                }
                case MSG_SET_PREVIEW_SURFACE:
                    onSetPreviewSurface((Surface) msg.obj);
                    break;
@@ -108,8 +116,11 @@ public abstract class ImsVideoCallProvider {
            mProviderHandler.obtainMessage(MSG_SET_CALLBACK, callback).sendToTarget();
        }

        public void setCamera(String cameraId) {
            mProviderHandler.obtainMessage(MSG_SET_CAMERA, cameraId).sendToTarget();
        public void setCamera(String cameraId, int uid) {
            SomeArgs args = SomeArgs.obtain();
            args.arg1 = cameraId;
            args.argi1 = uid;
            mProviderHandler.obtainMessage(MSG_SET_CAMERA, args).sendToTarget();
        }

        public void setPreviewSurface(Surface surface) {
@@ -167,6 +178,18 @@ public abstract class ImsVideoCallProvider {
    /** @see Connection.VideoProvider#onSetCamera */
    public abstract void onSetCamera(String cameraId);

    /**
     * Similar to {@link #onSetCamera(String)}, except includes the UID of the calling process which
     * the IMS service uses when opening the camera.  This ensures camera permissions are verified
     * by the camera service.
     *
     * @param cameraId The id of the camera to be opened.
     * @param uid The uid of the caller, used when opening the camera for permission verification.
     * @see Connection.VideoProvider#onSetCamera
     */
    public void onSetCamera(String cameraId, int uid) {
    }

    /** @see Connection.VideoProvider#onSetPreviewSurface */
    public abstract void onSetPreviewSurface(Surface surface);

+2 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.ims.internal;

import android.net.Uri;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
@@ -216,7 +217,7 @@ public class ImsVideoCallProviderWrapper extends Connection.VideoProvider {
    /** @inheritDoc */
    public void onSetCamera(String cameraId) {
        try {
            mVideoCallProvider.setCamera(cameraId);
            mVideoCallProvider.setCamera(cameraId, Binder.getCallingUid());
        } catch (RemoteException e) {
        }
    }