summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2022-03-11 01:22:20 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-03-11 01:22:20 +0000
commit77946e2ae8c30a175695d53e13f7948843d4379e (patch)
tree9f4b96d629c354c549093029b7a31f1c4d8aeb50 /core/java/android
parente2acb6ce05bcd1150fa527e9696b33778d764952 (diff)
parent6d709f6f95fc2e8eb958976e87ecc2c4fb4610b1 (diff)
Merge "Add API to indicate supported windowing modes on the virtual displays" into tm-dev
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/window/DisplayWindowPolicyController.java47
1 files changed, 45 insertions, 2 deletions
diff --git a/core/java/android/window/DisplayWindowPolicyController.java b/core/java/android/window/DisplayWindowPolicyController.java
index 3359a41369d7..1270d87e3a04 100644
--- a/core/java/android/window/DisplayWindowPolicyController.java
+++ b/core/java/android/window/DisplayWindowPolicyController.java
@@ -17,12 +17,14 @@
package android.window;
import android.annotation.NonNull;
+import android.app.WindowConfiguration;
import android.content.ComponentName;
import android.content.pm.ActivityInfo;
import android.util.ArraySet;
import java.io.PrintWriter;
import java.util.List;
+import java.util.Set;
/**
* Abstract class to control the policies of the windows that can be displayed on the virtual
@@ -46,6 +48,22 @@ public abstract class DisplayWindowPolicyController {
private int mSystemWindowFlags;
/**
+ * The set of windowing mode that are supported in this display.
+ * @see android.app.WindowConfiguration.WindowingMode
+ */
+ private final Set<Integer> mSupportedWindowingModes = new ArraySet<>();
+
+ /**
+ * A controller to control the policies of the windows that can be displayed on the virtual
+ * display.
+ */
+ public DisplayWindowPolicyController() {
+ synchronized (mSupportedWindowingModes) {
+ mSupportedWindowingModes.add(WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
+ }
+ }
+
+ /**
* Returns {@code true} if the given window flags contain the flags that we're interested in.
*/
public final boolean isInterestedWindowFlags(int windowFlags, int systemWindowFlags) {
@@ -62,9 +80,34 @@ public abstract class DisplayWindowPolicyController {
}
/**
- * Returns {@code true} if the given activities can be displayed on this virtual display.
+ * Returns {@code true} if the given windowing mode is supported in this display.
+ */
+ public final boolean isWindowingModeSupported(
+ @WindowConfiguration.WindowingMode int windowingMode) {
+ synchronized (mSupportedWindowingModes) {
+ return mSupportedWindowingModes.contains(windowingMode);
+ }
+ }
+
+ /**
+ * Sets the windowing modes are supported in this display.
+ *
+ * @param supportedWindowingModes The set of
+ * {@link android.app.WindowConfiguration.WindowingMode}.
+ */
+ public final void setSupportedWindowingModes(Set<Integer> supportedWindowingModes) {
+ synchronized (mSupportedWindowingModes) {
+ mSupportedWindowingModes.clear();
+ mSupportedWindowingModes.addAll(supportedWindowingModes);
+ }
+ }
+
+ /**
+ * Returns {@code true} if the given activities can be displayed on this virtual display and
+ * the windowing mode is supported.
*/
- public abstract boolean canContainActivities(@NonNull List<ActivityInfo> activities);
+ public abstract boolean canContainActivities(@NonNull List<ActivityInfo> activities,
+ @WindowConfiguration.WindowingMode int windowingMode);
/**
* Called when an Activity window is layouted with the new changes where contains the