summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/TaskInfo.java20
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/compatui/AppCompatUtils.kt10
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/AppCompatUtilsTest.kt47
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt80
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt26
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java36
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java3
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskSupervisor.java2
-rw-r--r--services/core/java/com/android/server/wm/Task.java4
-rw-r--r--services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java4
12 files changed, 144 insertions, 92 deletions
diff --git a/core/java/android/app/TaskInfo.java b/core/java/android/app/TaskInfo.java
index 9c6f509c93c1..c4a6decd982f 100644
--- a/core/java/android/app/TaskInfo.java
+++ b/core/java/android/app/TaskInfo.java
@@ -296,22 +296,22 @@ public class TaskInfo {
public boolean isVisibleRequested;
/**
- * Whether this task is sleeping due to sleeping display.
+ * Whether the top activity is to be displayed. See {@link android.R.attr#windowNoDisplay}.
* @hide
*/
- public boolean isSleeping;
+ public boolean isTopActivityNoDisplay;
/**
- * Whether the top activity fillsParent() is false
+ * Whether this task is sleeping due to sleeping display.
* @hide
*/
- public boolean isTopActivityTransparent;
+ public boolean isSleeping;
/**
- * Whether the top activity has specified style floating.
+ * Whether the top activity fillsParent() is false
* @hide
*/
- public boolean isTopActivityStyleFloating;
+ public boolean isTopActivityTransparent;
/**
* The last non-fullscreen bounds the task was launched in or resized to.
@@ -482,12 +482,12 @@ public class TaskInfo {
&& isFocused == that.isFocused
&& isVisible == that.isVisible
&& isVisibleRequested == that.isVisibleRequested
+ && isTopActivityNoDisplay == that.isTopActivityNoDisplay
&& isSleeping == that.isSleeping
&& Objects.equals(mTopActivityLocusId, that.mTopActivityLocusId)
&& parentTaskId == that.parentTaskId
&& Objects.equals(topActivity, that.topActivity)
&& isTopActivityTransparent == that.isTopActivityTransparent
- && isTopActivityStyleFloating == that.isTopActivityStyleFloating
&& Objects.equals(lastNonFullscreenBounds, that.lastNonFullscreenBounds)
&& Objects.equals(capturedLink, that.capturedLink)
&& capturedLinkTimestamp == that.capturedLinkTimestamp
@@ -561,11 +561,11 @@ public class TaskInfo {
isFocused = source.readBoolean();
isVisible = source.readBoolean();
isVisibleRequested = source.readBoolean();
+ isTopActivityNoDisplay = source.readBoolean();
isSleeping = source.readBoolean();
mTopActivityLocusId = source.readTypedObject(LocusId.CREATOR);
displayAreaFeatureId = source.readInt();
isTopActivityTransparent = source.readBoolean();
- isTopActivityStyleFloating = source.readBoolean();
lastNonFullscreenBounds = source.readTypedObject(Rect.CREATOR);
capturedLink = source.readTypedObject(Uri.CREATOR);
capturedLinkTimestamp = source.readLong();
@@ -616,11 +616,11 @@ public class TaskInfo {
dest.writeBoolean(isFocused);
dest.writeBoolean(isVisible);
dest.writeBoolean(isVisibleRequested);
+ dest.writeBoolean(isTopActivityNoDisplay);
dest.writeBoolean(isSleeping);
dest.writeTypedObject(mTopActivityLocusId, flags);
dest.writeInt(displayAreaFeatureId);
dest.writeBoolean(isTopActivityTransparent);
- dest.writeBoolean(isTopActivityStyleFloating);
dest.writeTypedObject(lastNonFullscreenBounds, flags);
dest.writeTypedObject(capturedLink, flags);
dest.writeLong(capturedLinkTimestamp);
@@ -661,11 +661,11 @@ public class TaskInfo {
+ " isFocused=" + isFocused
+ " isVisible=" + isVisible
+ " isVisibleRequested=" + isVisibleRequested
+ + " isTopActivityNoDisplay=" + isTopActivityNoDisplay
+ " isSleeping=" + isSleeping
+ " locusId=" + mTopActivityLocusId
+ " displayAreaFeatureId=" + displayAreaFeatureId
+ " isTopActivityTransparent=" + isTopActivityTransparent
- + " isTopActivityStyleFloating=" + isTopActivityStyleFloating
+ " lastNonFullscreenBounds=" + lastNonFullscreenBounds
+ " capturedLink=" + capturedLink
+ " capturedLinkTimestamp=" + capturedLinkTimestamp
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/AppCompatUtils.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/AppCompatUtils.kt
index d1b2347a4411..62d5098f2a27 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/AppCompatUtils.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/AppCompatUtils.kt
@@ -23,9 +23,15 @@ import android.content.Context
import com.android.internal.R
// TODO(b/347289970): Consider replacing with API
+/**
+ * If the top activity should be exempt from desktop windowing and forced back to fullscreen.
+ * Currently includes all system ui activities and modal dialogs. However is the top activity is not
+ * being displayed, regardless of its configuration, we will not exempt it as to remain in the
+ * desktop windowing environment.
+ */
fun isTopActivityExemptFromDesktopWindowing(context: Context, task: TaskInfo) =
- isSystemUiTask(context, task) || (task.isTopActivityTransparent && task.numActivities == 1
- && !task.isTopActivityStyleFloating)
+ (isSystemUiTask(context, task) || (task.isTopActivityTransparent && task.numActivities == 1))
+ && !task.isTopActivityNoDisplay
private fun isSystemUiTask(context: Context, task: TaskInfo): Boolean {
val sysUiPackageName: String =
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/AppCompatUtilsTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/AppCompatUtilsTest.kt
index ecaf970ae389..803e5d4442a9 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/AppCompatUtilsTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/AppCompatUtilsTest.kt
@@ -43,38 +43,30 @@ class AppCompatUtilsTest : ShellTestCase() {
.apply {
isTopActivityTransparent = true
numActivities = 1
- }))
- assertFalse(isTopActivityExemptFromDesktopWindowing(mContext,
- createFreeformTask(/* displayId */ 0)
- .apply {
- isTopActivityTransparent = true
- numActivities = 0
+ isTopActivityNoDisplay = false
}))
}
@Test
- fun testIsTopActivityExemptFromDesktopWindowing_singleTopActivity() {
- assertTrue(isTopActivityExemptFromDesktopWindowing(mContext,
- createFreeformTask(/* displayId */ 0)
- .apply {
- isTopActivityTransparent = true
- numActivities = 1
- }))
+ fun testIsTopActivityExemptFromDesktopWindowing_topActivityTransparent_multipleActivities() {
assertFalse(isTopActivityExemptFromDesktopWindowing(mContext,
createFreeformTask(/* displayId */ 0)
- .apply {
- isTopActivityTransparent = false
- numActivities = 1
- }))
+ .apply {
+ isTopActivityTransparent = true
+ numActivities = 2
+ isTopActivityNoDisplay = false
+ }))
}
@Test
- fun testIsTopActivityExemptFromDesktopWindowing__topActivityStyleFloating() {
+ fun testIsTopActivityExemptFromDesktopWindowing_topActivityTransparent_notDisplayed() {
assertFalse(isTopActivityExemptFromDesktopWindowing(mContext,
createFreeformTask(/* displayId */ 0)
- .apply {
- isTopActivityStyleFloating = true
- }))
+ .apply {
+ isTopActivityTransparent = true
+ numActivities = 1
+ isTopActivityNoDisplay = true
+ }))
}
@Test
@@ -85,6 +77,19 @@ class AppCompatUtilsTest : ShellTestCase() {
createFreeformTask(/* displayId */ 0)
.apply {
baseActivity = baseComponent
+ isTopActivityNoDisplay = false
}))
}
+
+ @Test
+ fun testIsTopActivityExemptFromDesktopWindowing_systemUiTask_notDisplayed() {
+ val systemUIPackageName = context.resources.getString(R.string.config_systemUi)
+ val baseComponent = ComponentName(systemUIPackageName, /* class */ "")
+ assertFalse(isTopActivityExemptFromDesktopWindowing(mContext,
+ createFreeformTask(/* displayId */ 0)
+ .apply {
+ baseActivity = baseComponent
+ isTopActivityNoDisplay = true
+ }))
+ }
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
index b157d557c1d8..315a46fcbd7b 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
@@ -1123,11 +1123,11 @@ class DesktopTasksControllerTest : ShellTestCase() {
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
- fun moveRunningTaskToDesktop_topActivityTranslucentWithStyleFloating_taskIsMovedToDesktop() {
+ fun moveRunningTaskToDesktop_topActivityTranslucentWithoutDisplay_taskIsMovedToDesktop() {
val task =
setUpFullscreenTask().apply {
isTopActivityTransparent = true
- isTopActivityStyleFloating = true
+ isTopActivityNoDisplay = true
numActivities = 1
}
@@ -1139,11 +1139,11 @@ class DesktopTasksControllerTest : ShellTestCase() {
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
- fun moveRunningTaskToDesktop_topActivityTranslucentWithoutStyleFloating_doesNothing() {
+ fun moveRunningTaskToDesktop_topActivityTranslucentWithDisplay_doesNothing() {
val task =
setUpFullscreenTask().apply {
isTopActivityTransparent = true
- isTopActivityStyleFloating = false
+ isTopActivityNoDisplay = false
numActivities = 1
}
@@ -1153,20 +1153,41 @@ class DesktopTasksControllerTest : ShellTestCase() {
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
- fun moveRunningTaskToDesktop_systemUIActivity_doesNothing() {
- val task = setUpFullscreenTask()
-
+ fun moveRunningTaskToDesktop_systemUIActivityWithDisplay_doesNothing() {
// Set task as systemUI package
val systemUIPackageName = context.resources.getString(
com.android.internal.R.string.config_systemUi)
val baseComponent = ComponentName(systemUIPackageName, /* class */ "")
- task.baseActivity = baseComponent
+ val task =
+ setUpFullscreenTask().apply {
+ baseActivity = baseComponent
+ isTopActivityNoDisplay = false
+ }
controller.moveRunningTaskToDesktop(task, transitionSource = UNKNOWN)
verifyEnterDesktopWCTNotExecuted()
}
@Test
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
+ fun moveRunningTaskToDesktop_systemUIActivityWithoutDisplay_doesNothing() {
+ // Set task as systemUI package
+ val systemUIPackageName = context.resources.getString(
+ com.android.internal.R.string.config_systemUi)
+ val baseComponent = ComponentName(systemUIPackageName, /* class */ "")
+ val task =
+ setUpFullscreenTask().apply {
+ baseActivity = baseComponent
+ isTopActivityNoDisplay = true
+ }
+
+ controller.moveRunningTaskToDesktop(task, transitionSource = UNKNOWN)
+
+ val wct = getLatestEnterDesktopWct()
+ assertThat(wct.changes[task.token.asBinder()]?.windowingMode).isEqualTo(WINDOWING_MODE_FREEFORM)
+ }
+
+ @Test
fun moveRunningTaskToDesktop_deviceSupported_taskIsMovedToDesktop() {
val task = setUpFullscreenTask()
@@ -2223,14 +2244,14 @@ class DesktopTasksControllerTest : ShellTestCase() {
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
- fun handleRequest_topActivityTransparentWithStyleFloating_returnSwitchToFreeformWCT() {
+ fun handleRequest_topActivityTransparentWithoutDisplay_returnSwitchToFreeformWCT() {
val freeformTask = setUpFreeformTask()
markTaskVisible(freeformTask)
val task =
setUpFullscreenTask().apply {
isTopActivityTransparent = true
- isTopActivityStyleFloating = true
+ isTopActivityNoDisplay = true
numActivities = 1
}
@@ -2241,11 +2262,14 @@ class DesktopTasksControllerTest : ShellTestCase() {
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
- fun handleRequest_topActivityTransparentWithoutStyleFloating_returnSwitchToFullscreenWCT() {
+ fun handleRequest_topActivityTransparentWithDisplay_returnSwitchToFullscreenWCT() {
+ val freeformTask = setUpFreeformTask()
+ markTaskVisible(freeformTask)
+
val task =
setUpFreeformTask().apply {
isTopActivityTransparent = true
- isTopActivityStyleFloating = false
+ isTopActivityNoDisplay = false
numActivities = 1
}
@@ -2256,14 +2280,19 @@ class DesktopTasksControllerTest : ShellTestCase() {
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
- fun handleRequest_systemUIActivity_returnSwitchToFullscreenWCT() {
- val task = setUpFreeformTask()
+ fun handleRequest_systemUIActivityWithDisplay_returnSwitchToFullscreenWCT() {
+ val freeformTask = setUpFreeformTask()
+ markTaskVisible(freeformTask)
// Set task as systemUI package
val systemUIPackageName = context.resources.getString(
com.android.internal.R.string.config_systemUi)
val baseComponent = ComponentName(systemUIPackageName, /* class */ "")
- task.baseActivity = baseComponent
+ val task =
+ setUpFreeformTask().apply {
+ baseActivity = baseComponent
+ isTopActivityNoDisplay = false
+ }
val result = controller.handleRequest(Binder(), createTransition(task))
assertThat(result?.changes?.get(task.token.asBinder())?.windowingMode)
@@ -2271,6 +2300,27 @@ class DesktopTasksControllerTest : ShellTestCase() {
}
@Test
+ @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
+ fun handleRequest_systemUIActivityWithoutDisplay_returnSwitchToFreeformWCT() {
+ val freeformTask = setUpFreeformTask()
+ markTaskVisible(freeformTask)
+
+ // Set task as systemUI package
+ val systemUIPackageName = context.resources.getString(
+ com.android.internal.R.string.config_systemUi)
+ val baseComponent = ComponentName(systemUIPackageName, /* class */ "")
+ val task =
+ setUpFullscreenTask().apply {
+ baseActivity = baseComponent
+ isTopActivityNoDisplay = true
+ }
+
+ val result = controller.handleRequest(Binder(), createTransition(task))
+ assertThat(result?.changes?.get(task.token.asBinder())?.windowingMode)
+ .isEqualTo(WINDOWING_MODE_FREEFORM)
+ }
+
+ @Test
@DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY,)
fun handleRequest_backTransition_singleTaskNoToken_noWallpaper_doesNotHandle() {
val task = setUpFreeformTask()
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt
index 03aab18d8d87..56267174ba75 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.kt
@@ -478,25 +478,10 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() {
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
- fun testDecorationIsCreatedForTopTranslucentActivitiesWithStyleFloating() {
+ fun testDecorationIsNotCreatedForTopTranslucentActivities() {
val task = createTask(windowingMode = WINDOWING_MODE_FULLSCREEN).apply {
isTopActivityTransparent = true
- isTopActivityStyleFloating = true
- numActivities = 1
- }
- doReturn(true).`when` { DesktopModeStatus.canEnterDesktopMode(any()) }
- setUpMockDecorationsForTasks(task)
-
- onTaskOpening(task)
- assertTrue(windowDecorByTaskIdSpy.contains(task.taskId))
- }
-
- @Test
- @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
- fun testDecorationIsNotCreatedForTopTranslucentActivitiesWithoutStyleFloating() {
- val task = createTask(windowingMode = WINDOWING_MODE_FULLSCREEN).apply {
- isTopActivityTransparent = true
- isTopActivityStyleFloating = false
+ isTopActivityNoDisplay = false
numActivities = 1
}
onTaskOpening(task)
@@ -507,13 +492,14 @@ class DesktopModeWindowDecorViewModelTests : ShellTestCase() {
@Test
@EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODALS_POLICY)
fun testDecorationIsNotCreatedForSystemUIActivities() {
- val task = createTask(windowingMode = WINDOWING_MODE_FULLSCREEN)
-
// Set task as systemUI package
val systemUIPackageName = context.resources.getString(
com.android.internal.R.string.config_systemUi)
val baseComponent = ComponentName(systemUIPackageName, /* class */ "")
- task.baseActivity = baseComponent
+ val task = createTask(windowingMode = WINDOWING_MODE_FULLSCREEN).apply {
+ baseActivity = baseComponent
+ isTopActivityNoDisplay = false
+ }
onTaskOpening(task)
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 69643002750b..52a5cec60314 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -707,9 +707,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
*/
private boolean mOccludesParent;
- /** Whether the activity have style floating */
- private boolean mStyleFloating;
-
/**
* Unlike {@link #mOccludesParent} which can be changed at runtime. This is a static attribute
* from the style of activity. Because we don't want {@link WindowContainer#getOrientation()}
@@ -791,10 +788,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
// and therefore #isLetterboxedForFixedOrientationAndAspectRatio returns false.
private boolean mIsEligibleForFixedOrientationLetterbox;
- // activity is not displayed?
- // TODO: rename to mNoDisplay
- @VisibleForTesting
- boolean noDisplay;
+ /**
+ * Whether the activity is to be displayed. See {@link android.R.attr#windowNoDisplay}.
+ */
+ private boolean mNoDisplay;
final boolean mShowForAllUsers;
// TODO: Make this final
int mTargetSdk;
@@ -1178,7 +1175,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
pw.print(" inHistory="); pw.print(inHistory);
pw.print(" idle="); pw.println(idle);
pw.print(prefix); pw.print("occludesParent="); pw.print(occludesParent());
- pw.print(" noDisplay="); pw.print(noDisplay);
+ pw.print(" mNoDisplay="); pw.print(mNoDisplay);
pw.print(" immersive="); pw.print(immersive);
pw.print(" launchMode="); pw.println(launchMode);
pw.print(prefix); pw.print("mActivityType=");
@@ -2011,20 +2008,19 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
if (ent != null) {
final boolean styleTranslucent = ent.array.getBoolean(
com.android.internal.R.styleable.Window_windowIsTranslucent, false);
- mStyleFloating = ent.array.getBoolean(
+ final boolean styleFloating = ent.array.getBoolean(
com.android.internal.R.styleable.Window_windowIsFloating, false);
- mOccludesParent = !(styleTranslucent || mStyleFloating)
+ mOccludesParent = !(styleTranslucent || styleFloating)
// This style is propagated to the main window attributes with
// FLAG_SHOW_WALLPAPER from PhoneWindow#generateLayout.
|| ent.array.getBoolean(R.styleable.Window_windowShowWallpaper, false);
mStyleFillsParent = mOccludesParent;
- noDisplay = ent.array.getBoolean(R.styleable.Window_windowNoDisplay, false);
+ mNoDisplay = ent.array.getBoolean(R.styleable.Window_windowNoDisplay, false);
mOptOutEdgeToEdge = ent.array.getBoolean(
R.styleable.Window_windowOptOutEdgeToEdgeEnforcement, false);
} else {
- mStyleFloating = false;
mStyleFillsParent = mOccludesParent = true;
- noDisplay = false;
+ mNoDisplay = false;
mOptOutEdgeToEdge = false;
}
@@ -3091,8 +3087,16 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
return occludesParent(true /* includingFinishing */);
}
- boolean isStyleFloating() {
- return mStyleFloating;
+ boolean isNoDisplay() {
+ return mNoDisplay;
+ }
+
+ /**
+ * Exposed only for testing and should not be used to modify value of {@link #mNoDisplay}.
+ */
+ @VisibleForTesting
+ void setIsNoDisplay(boolean isNoDisplay) {
+ mNoDisplay = isNoDisplay;
}
/** Returns true if this activity is not finishing, is opaque and fills the entire space of
@@ -6069,7 +6073,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
void notifyUnknownVisibilityLaunchedForKeyguardTransition() {
// No display activities never add a window, so there is no point in waiting them for
// relayout.
- if (noDisplay || !isKeyguardLocked()) {
+ if (mNoDisplay || !isKeyguardLocked()) {
return;
}
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index f4b18ce989b7..2e2ca147dcdd 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -2349,7 +2349,8 @@ class ActivityStarter {
// When there is a reused activity and the current result is a trampoline activity,
// set the reused activity as the result.
if (mLastStartActivityRecord != null
- && (mLastStartActivityRecord.finishing || mLastStartActivityRecord.noDisplay)) {
+ && (mLastStartActivityRecord.finishing
+ || mLastStartActivityRecord.isNoDisplay())) {
mLastStartActivityRecord = targetTaskTop;
}
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index 30b53d1dbab4..6184949d34f9 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -2478,7 +2478,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
/** Notifies that the top activity of the task is forced to be resizeable. */
private void handleForcedResizableTaskIfNeeded(Task task, int reason) {
final ActivityRecord topActivity = task.getTopNonFinishingActivity();
- if (topActivity == null || topActivity.noDisplay
+ if (topActivity == null || topActivity.isNoDisplay()
|| !topActivity.canForceResizeNonResizable(task.getWindowingMode())) {
return;
}
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 7473accb8eee..352dc528f815 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -3432,9 +3432,9 @@ class Task extends TaskFragment {
info.isFocused = isFocused();
info.isVisible = hasVisibleChildren();
info.isVisibleRequested = isVisibleRequested();
+ info.isTopActivityNoDisplay = top != null && top.isNoDisplay();
info.isSleeping = shouldSleepActivities();
info.isTopActivityTransparent = top != null && !top.fillsParent();
- info.isTopActivityStyleFloating = top != null && top.isStyleFloating();
info.lastNonFullscreenBounds = topTask.mLastNonFullscreenBounds;
final WindowState windowState = top != null ? top.findMainWindow() : null;
info.requestedVisibleTypes = (windowState != null && Flags.enableFullyImmersiveInDesktop())
@@ -4724,7 +4724,7 @@ class Task extends TaskFragment {
}
}
if (likelyResolvedMode != WINDOWING_MODE_FULLSCREEN
- && topActivity != null && !topActivity.noDisplay
+ && topActivity != null && !topActivity.isNoDisplay()
&& topActivity.canForceResizeNonResizable(likelyResolvedMode)) {
// Inform the user that they are starting an app that may not work correctly in
// multi-window mode.
diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
index 5c9a84db002a..c39671d76929 100644
--- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
@@ -449,7 +449,7 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier {
// If the source activity is a no-display activity, pass on the launch display area token
// from source activity as currently preferred.
- if (taskDisplayArea == null && source != null && source.noDisplay) {
+ if (taskDisplayArea == null && source != null && source.isNoDisplay()) {
taskDisplayArea = source.mHandoverTaskDisplayArea;
if (taskDisplayArea != null) {
if (DEBUG) appendLog("display-area-from-no-display-source=" + taskDisplayArea);
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java
index d4ba3b25178d..9e7575f1c644 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java
@@ -538,7 +538,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase {
public void testConsecutiveLaunchNewTask() {
final IBinder launchCookie = mock(IBinder.class);
final WindowContainerToken launchRootTask = mock(WindowContainerToken.class);
- mTrampolineActivity.noDisplay = true;
+ mTrampolineActivity.setIsNoDisplay(true);
mTrampolineActivity.mLaunchCookie = launchCookie;
mTrampolineActivity.mLaunchRootTask = launchRootTask;
onActivityLaunched(mTrampolineActivity);
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java
index 3c921c612705..4568c77204a5 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java
@@ -249,7 +249,7 @@ public class TaskLaunchParamsModifierTests extends
ActivityRecord reusableActivity = createSourceActivity(fullscreenDisplay);
ActivityRecord source = createSourceActivity(freeformDisplay);
source.mHandoverLaunchDisplayId = freeformDisplay.mDisplayId;
- source.noDisplay = true;
+ source.setIsNoDisplay(true);
assertEquals(RESULT_CONTINUE,
new CalculateRequestBuilder()
@@ -272,7 +272,7 @@ public class TaskLaunchParamsModifierTests extends
ActivityRecord reusableActivity = createSourceActivity(fullscreenDisplay);
ActivityRecord source = createSourceActivity(freeformDisplay);
source.mHandoverTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea();
- source.noDisplay = true;
+ source.setIsNoDisplay(true);
assertEquals(RESULT_CONTINUE,
new CalculateRequestBuilder()