From e2474393bc7cfce3c3a314188eb0d8066c20951f Mon Sep 17 00:00:00 2001 From: Kenneth Ford Date: Thu, 12 May 2022 17:05:59 +0000 Subject: [PATCH] Creates new FLAG_APP_INACCESSIBLE flag for DeviceState Creates new flag to signify a device state that is inaccessible for an application to be launched on. This helps improve CTS testing to make sure we're only testing on device states that make sense. Bug: 230826329 Test: adb shell cmd device_state print-states Change-Id: I21acb936a721af62a4a9a4566246954943f05f67 --- .../com/android/server/devicestate/DeviceState.java | 11 ++++++++++- .../server/policy/DeviceStateProviderImpl.java | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/devicestate/DeviceState.java b/services/core/java/com/android/server/devicestate/DeviceState.java index 78d55b92eb806..f8d4b8fffd032 100644 --- a/services/core/java/com/android/server/devicestate/DeviceState.java +++ b/services/core/java/com/android/server/devicestate/DeviceState.java @@ -18,6 +18,7 @@ package com.android.server.devicestate; import static android.hardware.devicestate.DeviceStateManager.MAXIMUM_DEVICE_STATE; import static android.hardware.devicestate.DeviceStateManager.MINIMUM_DEVICE_STATE; +import static android.view.Display.DEFAULT_DISPLAY; import android.annotation.IntDef; import android.annotation.IntRange; @@ -48,9 +49,16 @@ public final class DeviceState { */ public static final int FLAG_CANCEL_OVERRIDE_REQUESTS = 1 << 0; + /** + * Flag that indicates this device state is inaccessible for applications to be placed in. This + * could be a device-state where the {@link DEFAULT_DISPLAY} is not enabled. + */ + public static final int FLAG_APP_INACCESSIBLE = 1 << 1; + /** @hide */ @IntDef(prefix = {"FLAG_"}, flag = true, value = { FLAG_CANCEL_OVERRIDE_REQUESTS, + FLAG_APP_INACCESSIBLE }) @Retention(RetentionPolicy.SOURCE) public @interface DeviceStateFlags {} @@ -97,7 +105,8 @@ public final class DeviceState { @Override public String toString() { - return "DeviceState{" + "identifier=" + mIdentifier + ", name='" + mName + '\'' + '}'; + return "DeviceState{" + "identifier=" + mIdentifier + ", name='" + mName + '\'' + + ", app_accessible=" + !hasFlag(FLAG_APP_INACCESSIBLE) + "}"; } @Override diff --git a/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java b/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java index 17a5fd07f9202..9b7d19a725d1f 100644 --- a/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java +++ b/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java @@ -95,6 +95,7 @@ public final class DeviceStateProviderImpl implements DeviceStateProvider, private static final String DATA_CONFIG_FILE_PATH = "system/devicestate/"; private static final String CONFIG_FILE_NAME = "device_state_configuration.xml"; private static final String FLAG_CANCEL_OVERRIDE_REQUESTS = "FLAG_CANCEL_OVERRIDE_REQUESTS"; + private static final String FLAG_APP_INACCESSIBLE = "FLAG_APP_INACCESSIBLE"; /** Interface that allows reading the device state configuration. */ interface ReadableConfig { @@ -145,6 +146,9 @@ public final class DeviceStateProviderImpl implements DeviceStateProvider, case FLAG_CANCEL_OVERRIDE_REQUESTS: flags |= DeviceState.FLAG_CANCEL_OVERRIDE_REQUESTS; break; + case FLAG_APP_INACCESSIBLE: + flags |= DeviceState.FLAG_APP_INACCESSIBLE; + break; default: Slog.w(TAG, "Parsed unknown flag with name: " + configFlagString);