Loading services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java +2 −1 Original line number Diff line number Diff line Loading @@ -156,7 +156,8 @@ class EnsureActivitiesVisibleHelper { // determined individually unlike other stacks where the visibility or fullscreen // status of an activity in a previous task affects other. mBehindFullscreenActivity = !mContainerShouldBeVisible; } else if (mContiner.isActivityTypeHome()) { } else if (!mBehindFullscreenActivity && mContiner.isActivityTypeHome() && r.isRootOfTask()) { if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Home task: at " + mContiner + " stackShouldBeVisible=" + mContainerShouldBeVisible + " behindFullscreenActivity=" + mBehindFullscreenActivity); Loading services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java +21 −0 Original line number Diff line number Diff line Loading @@ -573,6 +573,27 @@ public class ActivityStackTests extends ActivityTestsBase { assertFalse(translucentStack.shouldBeVisible(null /* starting */)); } @Test public void testShouldBeVisible_FullscreenBehindTranslucentInHomeStack() { final ActivityStack homeStack = createStackForShouldBeVisibleTest(mDefaultDisplay, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, true /* onTop */); final ActivityRecord firstActivity = new ActivityBuilder(mService) .setStack(homeStack) .setCreateTask(true) .build(); final Task task = firstActivity.getTask(); final ActivityRecord secondActivity = new ActivityBuilder(mService) .setTask(task) .build(); doReturn(false).when(secondActivity).occludesParent(); homeStack.ensureActivitiesVisible(null /* starting */, 0 /* configChanges */, false /* preserveWindows */); assertTrue(firstActivity.shouldBeVisible()); } @Test public void testMoveHomeStackBehindBottomMostVisibleStack_NoMoveHomeBehindFullscreen() { mDefaultDisplay.removeStack(mStack); Loading Loading
services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java +2 −1 Original line number Diff line number Diff line Loading @@ -156,7 +156,8 @@ class EnsureActivitiesVisibleHelper { // determined individually unlike other stacks where the visibility or fullscreen // status of an activity in a previous task affects other. mBehindFullscreenActivity = !mContainerShouldBeVisible; } else if (mContiner.isActivityTypeHome()) { } else if (!mBehindFullscreenActivity && mContiner.isActivityTypeHome() && r.isRootOfTask()) { if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Home task: at " + mContiner + " stackShouldBeVisible=" + mContainerShouldBeVisible + " behindFullscreenActivity=" + mBehindFullscreenActivity); Loading
services/tests/wmtests/src/com/android/server/wm/ActivityStackTests.java +21 −0 Original line number Diff line number Diff line Loading @@ -573,6 +573,27 @@ public class ActivityStackTests extends ActivityTestsBase { assertFalse(translucentStack.shouldBeVisible(null /* starting */)); } @Test public void testShouldBeVisible_FullscreenBehindTranslucentInHomeStack() { final ActivityStack homeStack = createStackForShouldBeVisibleTest(mDefaultDisplay, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_HOME, true /* onTop */); final ActivityRecord firstActivity = new ActivityBuilder(mService) .setStack(homeStack) .setCreateTask(true) .build(); final Task task = firstActivity.getTask(); final ActivityRecord secondActivity = new ActivityBuilder(mService) .setTask(task) .build(); doReturn(false).when(secondActivity).occludesParent(); homeStack.ensureActivitiesVisible(null /* starting */, 0 /* configChanges */, false /* preserveWindows */); assertTrue(firstActivity.shouldBeVisible()); } @Test public void testMoveHomeStackBehindBottomMostVisibleStack_NoMoveHomeBehindFullscreen() { mDefaultDisplay.removeStack(mStack); Loading