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

Commit 82952ea4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Guard VirtualDevice#close by permission"

parents dd5f6d25 2a017cdc
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2756,7 +2756,7 @@ package android.companion.virtual {
  public static class VirtualDeviceManager.VirtualDevice implements java.lang.AutoCloseable {
    method public void addActivityListener(@NonNull android.companion.virtual.VirtualDeviceManager.ActivityListener);
    method public void addActivityListener(@NonNull android.companion.virtual.VirtualDeviceManager.ActivityListener, @NonNull java.util.concurrent.Executor);
    method public void close();
    method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void close();
    method @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(int, int, int, @Nullable android.view.Surface, int, @Nullable android.os.Handler, @Nullable android.hardware.display.VirtualDisplay.Callback);
    method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.hardware.input.VirtualKeyboard createVirtualKeyboard(@NonNull android.hardware.display.VirtualDisplay, @NonNull String, int, int);
    method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.hardware.input.VirtualMouse createVirtualMouse(@NonNull android.hardware.display.VirtualDisplay, @NonNull String, int, int);
+1 −0
Original line number Diff line number Diff line
@@ -249,6 +249,7 @@ public final class VirtualDeviceManager {
         * Closes the virtual device, stopping and tearing down any virtual displays,
         * audio policies, and event injection that's currently in progress.
         */
        @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
        public void close() {
            try {
                mVirtualDevice.close();
+11 −1
Original line number Diff line number Diff line
@@ -215,6 +215,10 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub

    @Override // Binder call
    public void close() {
        mContext.enforceCallingOrSelfPermission(
                android.Manifest.permission.CREATE_VIRTUAL_DEVICE,
                "Permission required to close the virtual device");

        synchronized (mVirtualDeviceLock) {
            if (!mPerDisplayWakelocks.isEmpty()) {
                mPerDisplayWakelocks.forEach((displayId, wakeLock) -> {
@@ -227,7 +231,13 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub
        }
        mListener.onClose(mAssociationInfo.getId());
        mAppToken.unlinkToDeath(this, 0);

        final long token = Binder.clearCallingIdentity();
        try {
            mInputController.close();
        } finally {
            Binder.restoreCallingIdentity(token);
        }
    }

    @Override