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:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -285,7 +285,7 @@ public class VirtualDisplayAdapter extends DisplayAdapter {
|
||||
mUniqueIndex = uniqueIndex;
|
||||
mIsDisplayOn = surface != null;
|
||||
mDisplayIdToMirror = virtualDisplayConfig.getDisplayIdToMirror();
|
||||
mIsWindowManagerMirroring = virtualDisplayConfig.isWindowManagerMirroring();
|
||||
mIsWindowManagerMirroring = virtualDisplayConfig.isWindowManagerMirroringEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ public class VirtualAudioControllerTest {
|
||||
/* activityBlockedCallback= */ null,
|
||||
/* secureWindowCallback= */ null,
|
||||
/* intentListenerCallback= */ null,
|
||||
/* displayCategories= */ new ArrayList<>(),
|
||||
/* displayCategories= */ new ArraySet<>(),
|
||||
/* showTasksInHostDeviceRecents= */ true);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user