diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 904aa7bf15f7f..8d9c5db250101 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -2794,7 +2794,7 @@ package android.companion.virtual { method public void addActivityListener(@NonNull android.companion.virtual.VirtualDeviceManager.ActivityListener, @NonNull java.util.concurrent.Executor); method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void close(); method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.companion.virtual.audio.VirtualAudioDevice createVirtualAudioDevice(@NonNull android.hardware.display.VirtualDisplay, @Nullable java.util.concurrent.Executor, @Nullable android.companion.virtual.audio.VirtualAudioDevice.AudioConfigurationChangeCallback); - method @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(@IntRange(from=1) int, @IntRange(from=1) int, @IntRange(from=1) int, @Nullable android.view.Surface, int, @NonNull java.util.concurrent.Executor, @Nullable android.hardware.display.VirtualDisplay.Callback); + method @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(@IntRange(from=1) int, @IntRange(from=1) int, @IntRange(from=1) int, @Nullable android.view.Surface, int, @Nullable java.util.concurrent.Executor, @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); method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.hardware.input.VirtualTouchscreen createVirtualTouchscreen(@NonNull android.hardware.display.VirtualDisplay, @NonNull String, int, int); diff --git a/core/java/android/companion/virtual/VirtualDeviceManager.java b/core/java/android/companion/virtual/VirtualDeviceManager.java index 99ce14743a6f8..02d140f047ccf 100644 --- a/core/java/android/companion/virtual/VirtualDeviceManager.java +++ b/core/java/android/companion/virtual/VirtualDeviceManager.java @@ -48,7 +48,6 @@ import android.os.ResultReceiver; import android.util.ArrayMap; import android.view.Surface; -import java.util.Objects; import java.util.concurrent.Executor; /** @@ -223,7 +222,8 @@ public final class VirtualDeviceManager { * {@link DisplayManager#VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY * VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY}. * @param executor The executor on which {@code callback} will be invoked. This is ignored - * if {@code callback} is {@code null}. + * if {@code callback} is {@code null}. If {@code callback} is specified, this executor must + * not be null. * @param callback Callback to call when the state of the {@link VirtualDisplay} changes * @return The newly created virtual display, or {@code null} if the application could * not create the virtual display. @@ -237,7 +237,7 @@ public final class VirtualDeviceManager { @IntRange(from = 1) int densityDpi, @Nullable Surface surface, @VirtualDisplayFlag int flags, - @NonNull @CallbackExecutor Executor executor, + @Nullable @CallbackExecutor Executor executor, @Nullable VirtualDisplay.Callback callback) { // TODO(b/205343547): Handle display groups properly instead of creating a new display // group for every new virtual display created using this API. @@ -253,7 +253,7 @@ public final class VirtualDeviceManager { .setFlags(getVirtualDisplayFlags(flags)) .build(), callback, - Objects.requireNonNull(executor)); + executor); } /** diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java index c053c9287facd..c3417310dd403 100644 --- a/core/java/android/hardware/display/DisplayManager.java +++ b/core/java/android/hardware/display/DisplayManager.java @@ -957,7 +957,7 @@ public final class DisplayManager { public VirtualDisplay createVirtualDisplay(@Nullable IVirtualDevice virtualDevice, @NonNull VirtualDisplayConfig virtualDisplayConfig, @Nullable VirtualDisplay.Callback callback, - @NonNull Executor executor) { + @Nullable Executor executor) { return mGlobal.createVirtualDisplay(mContext, null /* projection */, virtualDevice, virtualDisplayConfig, callback, executor, null); } diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java index 889100d0f242a..a62bbf623000b 100644 --- a/core/java/android/hardware/display/DisplayManagerGlobal.java +++ b/core/java/android/hardware/display/DisplayManagerGlobal.java @@ -1054,6 +1054,14 @@ public final class DisplayManagerGlobal { @Nullable private final VirtualDisplay.Callback mCallback; @Nullable private final Executor mExecutor; + /** + * Creates a virtual display callback. + * + * @param callback The callback to call for virtual display events, or {@code null} if the + * caller does not wish to receive callback events. + * @param executor The executor to call the {@code callback} on. Must not be {@code null} if + * the callback is not {@code null}. + */ VirtualDisplayCallback(VirtualDisplay.Callback callback, Executor executor) { mCallback = callback; mExecutor = mCallback != null ? Objects.requireNonNull(executor) : null;