Merge "Ignore Keyguard-specific tests on VR headsets" into oreo-cts-dev
am: a36f81b2f1
Change-Id: Ibcab71c538d3f8c18be1ecf397688108892b5050
diff --git a/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts/KeyguardTests.java b/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts/KeyguardTests.java
index 89bbb07..9ebd714 100644
--- a/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts/KeyguardTests.java
+++ b/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts/KeyguardTests.java
@@ -42,7 +42,7 @@
}
public void testKeyguardHidesActivity() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
launchActivity("TestActivity");
@@ -56,7 +56,7 @@
}
public void testShowWhenLockedActivity() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
launchActivity("ShowWhenLockedActivity");
@@ -75,7 +75,7 @@
* showing.
*/
public void testShowWhenLockedActivity_withDialog() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
launchActivity("ShowWhenLockedWithDialogActivity");
@@ -95,7 +95,7 @@
* Tests whether multiple SHOW_WHEN_LOCKED activities are shown if the topmost is translucent.
*/
public void testMultipleShowWhenLockedActivities() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
launchActivity("ShowWhenLockedActivity");
@@ -117,7 +117,7 @@
* If we have a translucent SHOW_WHEN_LOCKED_ACTIVITY, the wallpaper should also be showing.
*/
public void testTranslucentShowWhenLockedActivity() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
launchActivity("ShowWhenLockedTranslucentActivity");
@@ -136,7 +136,7 @@
* If we have a translucent SHOW_WHEN_LOCKED activity, the activity behind should not be shown.
*/
public void testTranslucentDoesntRevealBehind() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
launchActivity("TestActivity");
@@ -155,7 +155,7 @@
}
public void testDialogShowWhenLockedActivity() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
launchActivity("ShowWhenLockedDialogActivity");
@@ -174,7 +174,7 @@
* Test that showWhenLocked activity is fullscreen when shown over keyguard
*/
public void testShowWhenLockedActivityWhileSplit() throws Exception {
- if (!isHandheld() || !supportsSplitScreenMultiWindow()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset() || !supportsSplitScreenMultiWindow()) {
return;
}
launchActivityInDockStack(LAUNCHING_ACTIVITY);
@@ -194,7 +194,7 @@
* Tests whether a FLAG_DISMISS_KEYGUARD activity occludes Keyguard.
*/
public void testDismissKeyguardActivity() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
gotoKeyguard();
@@ -208,7 +208,7 @@
}
public void testDismissKeyguardActivity_method() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
final String logSeparator = clearLogcat();
@@ -224,7 +224,7 @@
}
public void testDismissKeyguardActivity_method_notTop() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
final String logSeparator = clearLogcat();
@@ -238,7 +238,7 @@
}
public void testDismissKeyguardActivity_method_turnScreenOn() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
final String logSeparator = clearLogcat();
@@ -254,7 +254,7 @@
}
public void testDismissKeyguard_fromShowWhenLocked_notAllowed() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
gotoKeyguard();
@@ -270,7 +270,7 @@
}
public void testKeyguardLock() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
gotoKeyguard();
@@ -285,7 +285,7 @@
}
public void testUnoccludeRotationChange() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
gotoKeyguard();
diff --git a/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts/KeyguardTransitionTests.java b/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts/KeyguardTransitionTests.java
index 4222159..a4c704a 100644
--- a/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts/KeyguardTransitionTests.java
+++ b/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts/KeyguardTransitionTests.java
@@ -45,7 +45,7 @@
}
public void testUnlock() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
launchActivity("TestActivity");
@@ -57,7 +57,7 @@
}
public void testUnlockWallpaper() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
launchActivity("WallpaperActivity");
@@ -69,7 +69,7 @@
}
public void testOcclude() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
gotoKeyguard();
@@ -80,7 +80,7 @@
}
public void testUnocclude() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
gotoKeyguard();
@@ -93,7 +93,7 @@
}
public void testNewActivityDuringOccluded() throws Exception {
- if (!isHandheld()) {
+ if (!isHandheld() || isUiModeLockedToVrHeadset()) {
return;
}
launchActivity("ShowWhenLockedActivity");
diff --git a/hostsidetests/services/activityandwindowmanager/util/src/android/server/cts/ActivityManagerTestBase.java b/hostsidetests/services/activityandwindowmanager/util/src/android/server/cts/ActivityManagerTestBase.java
index edcb201..7574d78 100644
--- a/hostsidetests/services/activityandwindowmanager/util/src/android/server/cts/ActivityManagerTestBase.java
+++ b/hostsidetests/services/activityandwindowmanager/util/src/android/server/cts/ActivityManagerTestBase.java
@@ -135,6 +135,9 @@
private static final String DEFAULT_COMPONENT_NAME = "android.server.cts";
+ private static final int UI_MODE_TYPE_MASK = 0x0f;
+ private static final int UI_MODE_TYPE_VR_HEADSET = 0x07;
+
static String componentName = DEFAULT_COMPONENT_NAME;
protected static final int INVALID_DEVICE_ROTATION = -1;
@@ -548,6 +551,34 @@
&& !hasDeviceFeature("android.hardware.type.watch");
}
+ // TODO: Switch to using a feature flag, when available.
+ protected boolean isUiModeLockedToVrHeadset() throws DeviceNotAvailableException {
+ final String output = runCommandAndPrintOutput("dumpsys uimode");
+
+ Integer curUiMode = null;
+ Boolean uiModeLocked = null;
+ for (String line : output.split("\\n")) {
+ line = line.trim();
+ Matcher matcher = sCurrentUiModePattern.matcher(line);
+ if (matcher.find()) {
+ curUiMode = Integer.parseInt(matcher.group(1), 16);
+ }
+ matcher = sUiModeLockedPattern.matcher(line);
+ if (matcher.find()) {
+ uiModeLocked = matcher.group(1).equals("true");
+ }
+ }
+
+ boolean uiModeLockedToVrHeadset = (curUiMode != null) && (uiModeLocked != null)
+ && ((curUiMode & UI_MODE_TYPE_MASK) == UI_MODE_TYPE_VR_HEADSET) && uiModeLocked;
+
+ if (uiModeLockedToVrHeadset) {
+ CLog.logAndDisplay(LogLevel.INFO, "UI mode is locked to VR headset");
+ }
+
+ return uiModeLockedToVrHeadset;
+ }
+
protected boolean supportsSplitScreenMultiWindow() throws DeviceNotAvailableException {
CollectingOutputReceiver outputReceiver = new CollectingOutputReceiver();
executeShellCommand(AM_SUPPORTS_SPLIT_SCREEN_MULTIWINDOW, outputReceiver);
@@ -947,6 +978,9 @@
+ " orientation=(\\d+)");
private static final Pattern sDisplayStatePattern =
Pattern.compile("Display Power: state=(.+)");
+ private static final Pattern sCurrentUiModePattern = Pattern.compile("mCurUiMode=0x(\\d+)");
+ private static final Pattern sUiModeLockedPattern =
+ Pattern.compile("mUiModeLocked=(true|false)");
class ReportedSizes {
int widthDp;