diff options
-rw-r--r-- | services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java | 2 | ||||
-rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/TaskTests.java | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java b/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java index 3123018e9e88..63af5c60b8d3 100644 --- a/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java +++ b/services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java @@ -240,7 +240,7 @@ class EnsureActivitiesVisibleHelper { } r.setVisibility(true); } - if (r != starting) { + if (r != starting && mNotifyClients) { mTaskFragment.mTaskSupervisor.startSpecificActivity(r, andResume, true /* checkConfig */); } diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java index 0bf850afb30b..a1ac02a21e35 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskTests.java @@ -390,6 +390,15 @@ public class TaskTests extends WindowTestsBase { rootTask.ensureActivitiesVisible(null /* starting */); assertTrue(activity1.isVisible()); assertTrue(activity2.isVisible()); + + // If notifyClients is false, it should only update the state without starting the client. + activity1.setVisible(false); + activity1.setVisibleRequested(false); + activity1.detachFromProcess(); + rootTask.ensureActivitiesVisible(null /* starting */, false /* notifyClients */); + verify(mSupervisor, never()).startSpecificActivity(eq(activity1), + anyBoolean() /* andResume */, anyBoolean() /* checkConfig */); + assertTrue(activity1.isVisibleRequested()); } @Test |