Use ADD_MIRROR_DISPLAY in VDM Demo.
Bug: 378605160
Test: manual
Flag: EXEMPT test app
Change-Id: Ib8eaf06bcf18890986508694291b52a0b01bbf3a
diff --git a/samples/VirtualDeviceManager/host/AndroidManifest.xml b/samples/VirtualDeviceManager/host/AndroidManifest.xml
index 33058a6..b88d280 100644
--- a/samples/VirtualDeviceManager/host/AndroidManifest.xml
+++ b/samples/VirtualDeviceManager/host/AndroidManifest.xml
@@ -37,6 +37,9 @@
android:name="android.permission.ADD_TRUSTED_DISPLAY"
tools:ignore="ProtectedPermissions" />
<uses-permission
+ android:name="android.permission.ADD_MIRROR_DISPLAY"
+ tools:ignore="ProtectedPermissions" />
+ <uses-permission
android:name="android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE"
tools:ignore="ProtectedPermissions" />
diff --git a/samples/VirtualDeviceManager/host/src/com/example/android/vdmdemo/host/MainActivity.java b/samples/VirtualDeviceManager/host/src/com/example/android/vdmdemo/host/MainActivity.java
index 1977ad3..2953642 100644
--- a/samples/VirtualDeviceManager/host/src/com/example/android/vdmdemo/host/MainActivity.java
+++ b/samples/VirtualDeviceManager/host/src/com/example/android/vdmdemo/host/MainActivity.java
@@ -18,7 +18,6 @@
import android.Manifest;
import android.app.AlertDialog;
-import android.companion.AssociationRequest;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -205,16 +204,13 @@
}
if (mHomeDisplayButton != null) {
mHomeDisplayButton.setEnabled(
- mPreferenceController.getBoolean(R
- .string.internal_pref_home_displays_supported));
+ mPreferenceController.getBoolean(
+ R.string.internal_pref_home_displays_supported));
mHomeDisplayButton.setVisibility(visibility);
}
if (mMirrorDisplayButton != null) {
mMirrorDisplayButton.setEnabled(
- mPreferenceController.getString(R.string.pref_device_profile)
- .equals(AssociationRequest.DEVICE_PROFILE_APP_STREAMING)
- && mPreferenceController.getBoolean(
- R.string.internal_pref_mirror_displays_supported));
+ VdmCompat.isMirrorDisplaySupported(this, mPreferenceController));
mMirrorDisplayButton.setVisibility(visibility);
}
});
diff --git a/samples/VirtualDeviceManager/host/src/com/example/android/vdmdemo/host/VdmCompat.java b/samples/VirtualDeviceManager/host/src/com/example/android/vdmdemo/host/VdmCompat.java
index 6d0897d..d8a081d 100644
--- a/samples/VirtualDeviceManager/host/src/com/example/android/vdmdemo/host/VdmCompat.java
+++ b/samples/VirtualDeviceManager/host/src/com/example/android/vdmdemo/host/VdmCompat.java
@@ -16,11 +16,16 @@
package com.example.android.vdmdemo.host;
+import static android.Manifest.permission.ADD_MIRROR_DISPLAY;
+
+import android.companion.AssociationRequest;
import android.companion.virtual.VirtualDeviceManager.VirtualDevice;
-import android.companion.virtual.flags.Flags;
+import android.companion.virtualdevice.flags.Flags;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.hardware.display.VirtualDisplayConfig;
import android.hardware.input.InputManager;
+import android.os.Build;
import android.view.InputDevice;
import androidx.core.os.BuildCompat;
@@ -34,7 +39,7 @@
static VirtualDisplayConfig.Builder setHomeSupported(
VirtualDisplayConfig.Builder builder, int flags) {
- if (BuildCompat.isAtLeastV() && Flags.vdmCustomHome()) {
+ if (BuildCompat.isAtLeastV() && android.companion.virtual.flags.Flags.vdmCustomHome()) {
return builder.setHomeSupported(true);
} else {
return builder.setFlags(flags | VIRTUAL_DISPLAY_FLAG_SHOULD_SHOW_SYSTEM_DECORATIONS);
@@ -61,4 +66,18 @@
}
return true;
}
+
+ static boolean isMirrorDisplaySupported(Context context,
+ PreferenceController preferenceController) {
+ if (!preferenceController.getBoolean(R.string.internal_pref_mirror_displays_supported)) {
+ return false;
+ }
+ // TODO: replace with isAtLeastB once available.
+ if (Flags.enableLimitedVdmRole()) {
+ return context.checkCallingOrSelfPermission(ADD_MIRROR_DISPLAY)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+ return preferenceController.getString(R.string.pref_device_profile)
+ .equals(AssociationRequest.DEVICE_PROFILE_APP_STREAMING);
+ }
}