summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java3
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java18
2 files changed, 20 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 081759d563a5..3e35f963d15e 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -3386,7 +3386,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
if (currentFocusedApp != null && currentFocusedApp.task == task
&& topFocusedDisplayId == mDisplayContent.getDisplayId()) {
final Task topFocusableTask = mDisplayContent.getTask(
- (t) -> t.isLeafTask() && t.isFocusable(), true /* traverseTopToBottom */);
+ (t) -> t.isLeafTask() && t.isFocusable() && !t.inPinnedWindowingMode(),
+ true /* traverseTopToBottom */);
if (task == topFocusableTask) {
if (currentFocusedApp == this) {
ProtoLog.d(WM_DEBUG_FOCUS, "moveFocusableActivityToTop: already on top "
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index 786432a5dc88..ecb537eeab6e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -3717,6 +3717,24 @@ public class ActivityRecordTests extends WindowTestsBase {
verify(task).moveTaskToBack(any());
}
+ /**
+ * Verifies the {@link ActivityRecord#moveFocusableActivityToTop} returns {@code false} if
+ * there's a PIP task on top.
+ */
+ @Test
+ public void testMoveFocusableActivityToTop() {
+ // Create a Task
+ final Task task = createTask(mDisplayContent);
+ final ActivityRecord ar = createActivityRecord(task);
+
+ // Create a PIP Task on top
+ final Task pipTask = createTask(mDisplayContent);
+ doReturn(true).when(pipTask).inPinnedWindowingMode();
+
+ // Verifies that the Task is not moving-to-top.
+ assertFalse(ar.moveFocusableActivityToTop("test"));
+ }
+
private ICompatCameraControlCallback getCompatCameraControlCallback() {
return new ICompatCameraControlCallback.Stub() {
@Override