Merge "Unhide VDM API to allow / block specific activities"

This commit is contained in:
Maurice Lam
2022-01-28 18:09:33 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 7 deletions

View File

@@ -2610,6 +2610,8 @@ package android.companion.virtual {
public final class VirtualDeviceParams implements android.os.Parcelable {
method public int describeContents();
method @Nullable public java.util.Set<android.content.ComponentName> getAllowedActivities();
method @Nullable public java.util.Set<android.content.ComponentName> getBlockedActivities();
method public int getLockState();
method @NonNull public java.util.Set<android.os.UserHandle> getUsersWithMatchingAccounts();
method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -2621,6 +2623,8 @@ package android.companion.virtual {
public static final class VirtualDeviceParams.Builder {
ctor public VirtualDeviceParams.Builder();
method @NonNull public android.companion.virtual.VirtualDeviceParams build();
method @NonNull public android.companion.virtual.VirtualDeviceParams.Builder setAllowedActivities(@Nullable java.util.Set<android.content.ComponentName>);
method @NonNull public android.companion.virtual.VirtualDeviceParams.Builder setBlockedActivities(@Nullable java.util.Set<android.content.ComponentName>);
method @NonNull @RequiresPermission(value=android.Manifest.permission.ADD_ALWAYS_UNLOCKED_DISPLAY, conditional=true) public android.companion.virtual.VirtualDeviceParams.Builder setLockState(int);
method @NonNull public android.companion.virtual.VirtualDeviceParams.Builder setUsersWithMatchingAccounts(@NonNull java.util.Set<android.os.UserHandle>);
}

View File

@@ -22,6 +22,7 @@ import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.content.ComponentName;
import android.os.Parcel;
@@ -106,11 +107,13 @@ public final class VirtualDeviceParams implements Parcelable {
}
/**
* Returns the set of activities allowed to be streamed, or {@code null} if this is not set.
* Returns the set of activities allowed to be streamed, or {@code null} if all activities are
* allowed, except the ones explicitly blocked.
*
* @see Builder#setAllowedActivities(Set)
* @hide // TODO(b/194949534): Unhide this API
*/
// Null and empty have different semantics - Null allows all activities to be streamed
@SuppressLint("NullableCollection")
@Nullable
public Set<ComponentName> getAllowedActivities() {
if (mAllowedActivities == null) {
@@ -120,12 +123,13 @@ public final class VirtualDeviceParams implements Parcelable {
}
/**
* Returns the set of activities that are blocked from streaming, or {@code null} if this is not
* set.
* Returns the set of activities that are blocked from streaming, or {@code null} to indicate
* that all activities in {@link #getAllowedActivities} are allowed.
*
* @see Builder#setBlockedActivities(Set)
* @hide // TODO(b/194949534): Unhide this API
*/
// Allowing null to enforce that at most one of allowed / blocked activities can be non-null
@SuppressLint("NullableCollection")
@Nullable
public Set<ComponentName> getBlockedActivities() {
if (mBlockedActivities == null) {
@@ -255,8 +259,10 @@ public final class VirtualDeviceParams implements Parcelable {
*
* @param allowedActivities A set of activity {@link ComponentName} allowed to be launched
* in the virtual device.
* @hide // TODO(b/194949534): Unhide this API
*/
// Null and empty have different semantics - Null allows all activities to be streamed
@SuppressLint("NullableCollection")
@NonNull
public Builder setAllowedActivities(@Nullable Set<ComponentName> allowedActivities) {
if (mBlockedActivities != null && allowedActivities != null) {
throw new IllegalArgumentException(
@@ -279,8 +285,10 @@ public final class VirtualDeviceParams implements Parcelable {
*
* @param blockedActivities A set of {@link ComponentName} to be blocked launching from
* virtual device.
* @hide // TODO(b/194949534): Unhide this API
*/
// Allowing null to enforce that at most one of allowed / blocked activities can be non-null
@SuppressLint("NullableCollection")
@NonNull
public Builder setBlockedActivities(@Nullable Set<ComponentName> blockedActivities) {
if (mAllowedActivities != null && blockedActivities != null) {
throw new IllegalArgumentException(