Fixed Task#getVisibility to take into account task hierarchy
Also, correct some uses of getRootHomeTask()
Fixes: 153086746
Bug: 154331729
Bug: 80414790
Test: atest WmTests:ActivityStackTests#testGetVisibility_MultiLevel
Change-Id: I8b9a38879a0b4e6c72686312b414319b8b086cd1
diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java
index d71e561..cb9b332 100644
--- a/services/core/java/com/android/server/wm/TaskDisplayArea.java
+++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java
@@ -184,6 +184,7 @@
return count > 0 ? getChildAt(count - 1) : null;
}
+ // TODO: Figure-out a way to remove since it might be a source of confusion.
int getIndexOf(ActivityStack stack) {
return mChildren.indexOf(stack);
}
@@ -690,7 +691,7 @@
// the position internally, also update the logic here
final ActivityStack prevFocusedStack = updateLastFocusedStackReason != null
? getFocusedStack() : null;
- final boolean wasContained = getIndexOf(stack) >= 0;
+ final boolean wasContained = mChildren.contains(stack);
if (mDisplayContent.mSingleTaskInstance && getStackCount() == 1 && !wasContained) {
throw new IllegalStateException(
"positionStackAt: Can only have one task on display=" + this);