Merge "Address VirtualDisplayConfig API feedback." into udc-dev am: 8d087bfc90

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21698561

Change-Id: I87d7235125b82168e4fac14f8f9777c970feaa90
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2023-03-06 16:31:34 +00:00
committed by Automerger Merge Worker
10 changed files with 45 additions and 45 deletions

View File

@@ -19593,7 +19593,7 @@ package android.hardware.display {
public final class VirtualDisplayConfig implements android.os.Parcelable {
method public int describeContents();
method public int getDensityDpi();
method @NonNull public java.util.List<java.lang.String> getDisplayCategories();
method @NonNull public java.util.Set<java.lang.String> getDisplayCategories();
method public int getFlags();
method public int getHeight();
method @NonNull public String getName();
@@ -19608,7 +19608,7 @@ package android.hardware.display {
ctor public VirtualDisplayConfig.Builder(@NonNull String, @IntRange(from=1) int, @IntRange(from=1) int, @IntRange(from=1) int);
method @NonNull public android.hardware.display.VirtualDisplayConfig.Builder addDisplayCategory(@NonNull String);
method @NonNull public android.hardware.display.VirtualDisplayConfig build();
method @NonNull public android.hardware.display.VirtualDisplayConfig.Builder setDisplayCategories(@NonNull java.util.List<java.lang.String>);
method @NonNull public android.hardware.display.VirtualDisplayConfig.Builder setDisplayCategories(@NonNull java.util.Set<java.lang.String>);
method @NonNull public android.hardware.display.VirtualDisplayConfig.Builder setFlags(int);
method @NonNull public android.hardware.display.VirtualDisplayConfig.Builder setRequestedRefreshRate(@FloatRange(from=0.0f) float);
method @NonNull public android.hardware.display.VirtualDisplayConfig.Builder setSurface(@Nullable android.view.Surface);

View File

@@ -545,12 +545,13 @@ public final class VirtualDeviceManager {
@VirtualDisplayFlag int flags,
@Nullable @CallbackExecutor Executor executor,
@Nullable VirtualDisplay.Callback callback) {
VirtualDisplayConfig config = new VirtualDisplayConfig.Builder(
VirtualDisplayConfig.Builder builder = new VirtualDisplayConfig.Builder(
getVirtualDisplayName(), width, height, densityDpi)
.setSurface(surface)
.setFlags(flags)
.build();
return createVirtualDisplay(config, executor, callback);
.setFlags(flags);
if (surface != null) {
builder.setSurface(surface);
}
return createVirtualDisplay(builder.build(), executor, callback);
}
/**

View File

@@ -27,13 +27,13 @@ import android.media.projection.MediaProjection;
import android.os.Handler;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.ArraySet;
import android.view.Display;
import android.view.Surface;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Set;
/**
* Holds configuration used to create {@link VirtualDisplay} instances.
@@ -51,8 +51,8 @@ public final class VirtualDisplayConfig implements Parcelable {
private final Surface mSurface;
private final String mUniqueId;
private final int mDisplayIdToMirror;
private final boolean mWindowManagerMirroring;
private ArrayList<String> mDisplayCategories = null;
private final boolean mWindowManagerMirroringEnabled;
private ArraySet<String> mDisplayCategories = null;
private final float mRequestedRefreshRate;
private VirtualDisplayConfig(
@@ -64,8 +64,8 @@ public final class VirtualDisplayConfig implements Parcelable {
@Nullable Surface surface,
@Nullable String uniqueId,
int displayIdToMirror,
boolean windowManagerMirroring,
@NonNull ArrayList<String> displayCategories,
boolean windowManagerMirroringEnabled,
@NonNull ArraySet<String> displayCategories,
float requestedRefreshRate) {
mName = name;
mWidth = width;
@@ -75,7 +75,7 @@ public final class VirtualDisplayConfig implements Parcelable {
mSurface = surface;
mUniqueId = uniqueId;
mDisplayIdToMirror = displayIdToMirror;
mWindowManagerMirroring = windowManagerMirroring;
mWindowManagerMirroringEnabled = windowManagerMirroringEnabled;
mDisplayCategories = displayCategories;
mRequestedRefreshRate = requestedRefreshRate;
}
@@ -151,8 +151,8 @@ public final class VirtualDisplayConfig implements Parcelable {
* if DisplayManager should record contents instead.
* @hide
*/
public boolean isWindowManagerMirroring() {
return mWindowManagerMirroring;
public boolean isWindowManagerMirroringEnabled() {
return mWindowManagerMirroringEnabled;
}
/**
@@ -161,8 +161,8 @@ public final class VirtualDisplayConfig implements Parcelable {
* @see Builder#setDisplayCategories
*/
@NonNull
public List<String> getDisplayCategories() {
return Collections.unmodifiableList(mDisplayCategories);
public Set<String> getDisplayCategories() {
return Collections.unmodifiableSet(mDisplayCategories);
}
/**
@@ -185,8 +185,8 @@ public final class VirtualDisplayConfig implements Parcelable {
dest.writeTypedObject(mSurface, flags);
dest.writeString8(mUniqueId);
dest.writeInt(mDisplayIdToMirror);
dest.writeBoolean(mWindowManagerMirroring);
dest.writeStringList(mDisplayCategories);
dest.writeBoolean(mWindowManagerMirroringEnabled);
dest.writeArraySet(mDisplayCategories);
dest.writeFloat(mRequestedRefreshRate);
}
@@ -210,7 +210,7 @@ public final class VirtualDisplayConfig implements Parcelable {
&& Objects.equals(mSurface, that.mSurface)
&& Objects.equals(mUniqueId, that.mUniqueId)
&& mDisplayIdToMirror == that.mDisplayIdToMirror
&& mWindowManagerMirroring == that.mWindowManagerMirroring
&& mWindowManagerMirroringEnabled == that.mWindowManagerMirroringEnabled
&& Objects.equals(mDisplayCategories, that.mDisplayCategories)
&& mRequestedRefreshRate == that.mRequestedRefreshRate;
}
@@ -219,7 +219,7 @@ public final class VirtualDisplayConfig implements Parcelable {
public int hashCode() {
int hashCode = Objects.hash(
mName, mWidth, mHeight, mDensityDpi, mFlags, mSurface, mUniqueId,
mDisplayIdToMirror, mWindowManagerMirroring, mDisplayCategories,
mDisplayIdToMirror, mWindowManagerMirroringEnabled, mDisplayCategories,
mRequestedRefreshRate);
return hashCode;
}
@@ -236,7 +236,7 @@ public final class VirtualDisplayConfig implements Parcelable {
+ " mSurface=" + mSurface
+ " mUniqueId=" + mUniqueId
+ " mDisplayIdToMirror=" + mDisplayIdToMirror
+ " mWindowManagerMirroring=" + mWindowManagerMirroring
+ " mWindowManagerMirroringEnabled=" + mWindowManagerMirroringEnabled
+ " mDisplayCategories=" + mDisplayCategories
+ " mRequestedRefreshRate=" + mRequestedRefreshRate
+ ")";
@@ -251,9 +251,8 @@ public final class VirtualDisplayConfig implements Parcelable {
mSurface = in.readTypedObject(Surface.CREATOR);
mUniqueId = in.readString8();
mDisplayIdToMirror = in.readInt();
mWindowManagerMirroring = in.readBoolean();
mDisplayCategories = new ArrayList<>();
in.readStringList(mDisplayCategories);
mWindowManagerMirroringEnabled = in.readBoolean();
mDisplayCategories = (ArraySet<String>) in.readArraySet(null);
mRequestedRefreshRate = in.readFloat();
}
@@ -283,8 +282,8 @@ public final class VirtualDisplayConfig implements Parcelable {
private Surface mSurface = null;
private String mUniqueId = null;
private int mDisplayIdToMirror = DEFAULT_DISPLAY;
private boolean mWindowManagerMirroring = false;
private ArrayList<String> mDisplayCategories = new ArrayList<>();
private boolean mWindowManagerMirroringEnabled = false;
private ArraySet<String> mDisplayCategories = new ArraySet<>();
private float mRequestedRefreshRate = 0.0f;
/**
@@ -370,8 +369,8 @@ public final class VirtualDisplayConfig implements Parcelable {
* @hide
*/
@NonNull
public Builder setWindowManagerMirroring(boolean windowManagerMirroring) {
mWindowManagerMirroring = windowManagerMirroring;
public Builder setWindowManagerMirroringEnabled(boolean windowManagerMirroringEnabled) {
mWindowManagerMirroringEnabled = windowManagerMirroringEnabled;
return this;
}
@@ -383,7 +382,7 @@ public final class VirtualDisplayConfig implements Parcelable {
* {@link android.content.pm.ActivityInfo#requiredDisplayCategory}.
*/
@NonNull
public Builder setDisplayCategories(@NonNull List<String> displayCategories) {
public Builder setDisplayCategories(@NonNull Set<String> displayCategories) {
mDisplayCategories.clear();
mDisplayCategories.addAll(Objects.requireNonNull(displayCategories));
return this;
@@ -435,7 +434,7 @@ public final class VirtualDisplayConfig implements Parcelable {
mSurface,
mUniqueId,
mDisplayIdToMirror,
mWindowManagerMirroring,
mWindowManagerMirroringEnabled,
mDisplayCategories,
mRequestedRefreshRate);
}

View File

@@ -191,7 +191,7 @@ public final class MediaProjection {
} else {
session = ContentRecordingSession.createTaskSession(launchCookie);
}
virtualDisplayConfig.setWindowManagerMirroring(true);
virtualDisplayConfig.setWindowManagerMirroringEnabled(true);
final DisplayManager dm = mContext.getSystemService(DisplayManager.class);
final VirtualDisplay virtualDisplay = dm.createVirtualDisplay(this,
virtualDisplayConfig.build(), callback, handler, windowContext);

View File

@@ -134,7 +134,7 @@ public class GenericWindowPolicyController extends DisplayWindowPolicyController
private final ArraySet<RunningAppsChangedListener> mRunningAppsChangedListeners =
new ArraySet<>();
@Nullable private final SecureWindowCallback mSecureWindowCallback;
@Nullable private final List<String> mDisplayCategories;
@Nullable private final Set<String> mDisplayCategories;
private final boolean mShowTasksInHostDeviceRecents;
@@ -178,7 +178,7 @@ public class GenericWindowPolicyController extends DisplayWindowPolicyController
@NonNull ActivityBlockedCallback activityBlockedCallback,
@NonNull SecureWindowCallback secureWindowCallback,
@NonNull IntentListenerCallback intentListenerCallback,
@NonNull List<String> displayCategories,
@NonNull Set<String> displayCategories,
boolean showTasksInHostDeviceRecents) {
super();
mAllowedUsers = allowedUsers;

View File

@@ -97,6 +97,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.Consumer;
@@ -830,7 +831,7 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub
}
private GenericWindowPolicyController createWindowPolicyController(
@NonNull List<String> displayCategories) {
@NonNull Set<String> displayCategories) {
final GenericWindowPolicyController gwpc =
new GenericWindowPolicyController(FLAG_SECURE,
SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS,

View File

@@ -285,7 +285,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
mUniqueIndex = uniqueIndex;
mIsDisplayOn = surface != null;
mDisplayIdToMirror = virtualDisplayConfig.getDisplayIdToMirror();
mIsWindowManagerMirroring = virtualDisplayConfig.isWindowManagerMirroring();
mIsWindowManagerMirroring = virtualDisplayConfig.isWindowManagerMirroringEnabled();
}
@Override

View File

@@ -130,7 +130,6 @@ import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
@@ -283,7 +282,7 @@ public class VirtualDeviceManagerServiceTest {
return blockedActivities;
}
private Intent createRestrictedActivityBlockedIntent(List displayCategories,
private Intent createRestrictedActivityBlockedIntent(Set<String> displayCategories,
String targetDisplayCategory) {
when(mDisplayManagerInternalMock.createVirtualDisplay(any(), any(), any(), any(),
eq(NONBLOCKED_APP_PACKAGE_NAME))).thenReturn(DISPLAY_ID_1);
@@ -1634,7 +1633,7 @@ public class VirtualDeviceManagerServiceTest {
@Test
public void nonRestrictedActivityOnRestrictedVirtualDisplay_startBlockedAlertActivity() {
Intent blockedAppIntent = createRestrictedActivityBlockedIntent(List.of("abc"),
Intent blockedAppIntent = createRestrictedActivityBlockedIntent(Set.of("abc"),
/* targetDisplayCategory= */ null);
verify(mContext).startActivityAsUser(argThat(intent ->
intent.filterEquals(blockedAppIntent)), any(), any());
@@ -1642,7 +1641,7 @@ public class VirtualDeviceManagerServiceTest {
@Test
public void restrictedActivityOnRestrictedVirtualDisplay_doesNotStartBlockedAlertActivity() {
Intent blockedAppIntent = createRestrictedActivityBlockedIntent(List.of("abc"), "abc");
Intent blockedAppIntent = createRestrictedActivityBlockedIntent(Set.of("abc"), "abc");
verify(mContext, never()).startActivityAsUser(argThat(intent ->
intent.filterEquals(blockedAppIntent)), any(), any());
}
@@ -1650,14 +1649,14 @@ public class VirtualDeviceManagerServiceTest {
@Test
public void restrictedActivityOnNonRestrictedVirtualDisplay_startBlockedAlertActivity() {
Intent blockedAppIntent = createRestrictedActivityBlockedIntent(
/* displayCategories= */ List.of(), "abc");
/* displayCategories= */ Set.of(), "abc");
verify(mContext).startActivityAsUser(argThat(intent ->
intent.filterEquals(blockedAppIntent)), any(), any());
}
@Test
public void restrictedActivityNonMatchingRestrictedVirtualDisplay_startBlockedAlertActivity() {
Intent blockedAppIntent = createRestrictedActivityBlockedIntent(List.of("abc"), "def");
Intent blockedAppIntent = createRestrictedActivityBlockedIntent(Set.of("abc"), "def");
verify(mContext).startActivityAsUser(argThat(intent ->
intent.filterEquals(blockedAppIntent)), any(), any());
}

View File

@@ -89,7 +89,7 @@ public class VirtualAudioControllerTest {
/* activityBlockedCallback= */ null,
/* secureWindowCallback= */ null,
/* intentListenerCallback= */ null,
/* displayCategories= */ new ArrayList<>(),
/* displayCategories= */ new ArraySet<>(),
/* showTasksInHostDeviceRecents= */ true);
}

View File

@@ -967,7 +967,7 @@ public class DisplayManagerServiceTest {
final VirtualDisplayConfig.Builder builder2 = new VirtualDisplayConfig.Builder(
VIRTUAL_DISPLAY_NAME, width, height, dpi)
.setUniqueId(uniqueId2)
.setWindowManagerMirroring(true);
.setWindowManagerMirroringEnabled(true);
final int secondDisplayId = binderService.createVirtualDisplay(builder2.build(),
mMockAppToken2 /* callback */, null /* projection */,
PACKAGE_NAME);