Merge "Guard VirtualDevice#close by permission"
This commit is contained in:
committed by
Android (Google) Code Review
commit
82952ea401
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
mInputController.close();
|
||||
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mInputController.close();
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user