From 45f48d30823ae5c038dfa330eed0f8ee2fa6f71e Mon Sep 17 00:00:00 2001 From: Galia Peycheva Date: Thu, 20 Feb 2020 15:39:10 +0100 Subject: [PATCH] Create ACTIVITY_TYPE_DREAM Previously the dream activity was of a standard activity type. This allows other activities to be started in front of it, which should not happen. This CL adds a new ACTIVITY_TYPE_DREAM and makes dream activities to be attached on top of all other activities. It also adds activities of type dream to be one of the always on top activities. Bug: 150749838 Test: make && flash; start PiP and then start the screensaver. Verify that PiP is hidden by the dream. Change-Id: I852db2455d580d5c99aca3dbbd1ee3bea20aa7ae --- api/test-current.txt | 1 + core/java/android/app/WindowConfiguration.java | 14 ++++++++++---- .../server/wm/ActivityTaskManagerService.java | 5 +++++ .../android/server/wm/ConfigurationContainer.java | 5 +++++ .../java/com/android/server/wm/DisplayContent.java | 4 ++++ .../java/com/android/server/wm/RecentTasks.java | 2 ++ .../com/android/server/wm/RootWindowContainer.java | 2 ++ 7 files changed, 29 insertions(+), 4 deletions(-) diff --git a/api/test-current.txt b/api/test-current.txt index 38cf6a16de564..292839592c74c 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -535,6 +535,7 @@ package android.app { method public void setWindowingMode(int); method public void writeToParcel(android.os.Parcel, int); field public static final int ACTIVITY_TYPE_ASSISTANT = 4; // 0x4 + field public static final int ACTIVITY_TYPE_DREAM = 5; // 0x5 field public static final int ACTIVITY_TYPE_HOME = 2; // 0x2 field public static final int ACTIVITY_TYPE_RECENTS = 3; // 0x3 field public static final int ACTIVITY_TYPE_STANDARD = 1; // 0x1 diff --git a/core/java/android/app/WindowConfiguration.java b/core/java/android/app/WindowConfiguration.java index 6b40890e17c77..37e07de9809a4 100644 --- a/core/java/android/app/WindowConfiguration.java +++ b/core/java/android/app/WindowConfiguration.java @@ -141,6 +141,8 @@ public class WindowConfiguration implements Parcelable, Comparable { return getActivityType() == ACTIVITY_TYPE_ASSISTANT; } + public boolean isActivityTypeDream() { + return getActivityType() == ACTIVITY_TYPE_DREAM; + } + public boolean isActivityTypeStandard() { return getActivityType() == ACTIVITY_TYPE_STANDARD; } diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index aad242dbc338f..c0be2bb9a134e 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -4493,6 +4493,10 @@ class DisplayContent extends WindowContainer case ACTIVITY_TYPE_HOME: return r.isActivityTypeHome(); case ACTIVITY_TYPE_RECENTS: return r.isActivityTypeRecents(); case ACTIVITY_TYPE_ASSISTANT: return r.isActivityTypeAssistant(); + case ACTIVITY_TYPE_DREAM: return r.isActivityTypeDream(); } // TODO(task-hierarchy): Find another way to differentiate tile from normal stack once it is // part of the hierarchy