summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java4
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java32
2 files changed, 28 insertions, 8 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
index 5c02dbcb5255..473deba3b7d2 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/HomeTransitionObserver.java
@@ -57,7 +57,9 @@ public class HomeTransitionObserver implements TransitionObserver,
@NonNull SurfaceControl.Transaction finishTransaction) {
for (TransitionInfo.Change change : info.getChanges()) {
final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo();
- if (taskInfo == null || taskInfo.taskId == -1) {
+ if (taskInfo == null
+ || taskInfo.taskId == -1
+ || !taskInfo.isRunning) {
continue;
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java
index 421c44511a54..50802c3759c9 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/HomeTransitionObserverTest.java
@@ -101,7 +101,7 @@ public class HomeTransitionObserverTest extends ShellTestCase {
when(change.getTaskInfo()).thenReturn(taskInfo);
when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
- setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_OPEN);
+ setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_OPEN, true);
mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
info,
@@ -119,7 +119,7 @@ public class HomeTransitionObserverTest extends ShellTestCase {
when(change.getTaskInfo()).thenReturn(taskInfo);
when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
- setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_TO_BACK);
+ setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_TO_BACK, true);
mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
info,
@@ -137,7 +137,25 @@ public class HomeTransitionObserverTest extends ShellTestCase {
when(change.getTaskInfo()).thenReturn(taskInfo);
when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
- setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_UNDEFINED, TRANSIT_TO_BACK);
+ setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_UNDEFINED, TRANSIT_TO_BACK, true);
+
+ mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
+ info,
+ mock(SurfaceControl.Transaction.class),
+ mock(SurfaceControl.Transaction.class));
+
+ verify(mListener, times(0)).onHomeVisibilityChanged(anyBoolean());
+ }
+
+ @Test
+ public void testNonRunningHomeActivityDoesNotTriggerCallback() throws RemoteException {
+ TransitionInfo info = mock(TransitionInfo.class);
+ TransitionInfo.Change change = mock(TransitionInfo.Change.class);
+ ActivityManager.RunningTaskInfo taskInfo = mock(ActivityManager.RunningTaskInfo.class);
+ when(change.getTaskInfo()).thenReturn(taskInfo);
+ when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
+
+ setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_UNDEFINED, TRANSIT_TO_BACK, false);
mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
info,
@@ -156,7 +174,7 @@ public class HomeTransitionObserverTest extends ShellTestCase {
when(info.getChanges()).thenReturn(new ArrayList<>(List.of(change)));
when(change.hasFlags(FLAG_BACK_GESTURE_ANIMATED)).thenReturn(true);
- setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_CHANGE);
+ setupTransitionInfo(taskInfo, change, ACTIVITY_TYPE_HOME, TRANSIT_CHANGE, true);
mHomeTransitionObserver.onTransitionReady(mock(IBinder.class),
info,
@@ -166,16 +184,16 @@ public class HomeTransitionObserverTest extends ShellTestCase {
verify(mListener, times(1)).onHomeVisibilityChanged(true);
}
-
/**
* Helper class to initialize variables for the rest.
*/
private void setupTransitionInfo(ActivityManager.RunningTaskInfo taskInfo,
TransitionInfo.Change change,
@ActivityType int activityType,
- @TransitionMode int mode) {
+ @TransitionMode int mode,
+ boolean isRunning) {
when(taskInfo.getActivityType()).thenReturn(activityType);
when(change.getMode()).thenReturn(mode);
+ taskInfo.isRunning = isRunning;
}
-
}