Loading services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java +4 −1 Original line number Diff line number Diff line Loading @@ -108,8 +108,11 @@ class EnsureActivitiesVisibleHelper { && childTaskFragment.getTopNonFinishingActivity() != null) { childTaskFragment.updateActivityVisibilities(starting, configChanges, preserveWindows, notifyClients); // The TaskFragment should fully occlude the activities below if the bounds // equals to its parent task, unless it is translucent. mBehindFullyOccludedContainer |= childTaskFragment.getBounds().equals(mTaskFragment.getBounds()); (childTaskFragment.getBounds().equals(mTaskFragment.getBounds()) && !childTaskFragment.isTranslucent(starting)); if (mAboveTop && mTop.getTaskFragment() == childTaskFragment) { mAboveTop = false; } Loading services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -149,4 +149,25 @@ public class TaskFragmentTest extends WindowTestsBase { assertEquals(false, info.isEmpty()); assertEquals(activity.token, info.getActivities().get(0)); } @Test public void testActivityVisibilityBehindTranslucentTaskFragment() { // Having an activity covered by a translucent TaskFragment: // Task // - TaskFragment // - Activity (Translucent) // - Activity ActivityRecord translucentActivity = new ActivityBuilder(mAtm) .setUid(DEFAULT_TASK_FRAGMENT_ORGANIZER_UID).build(); mTaskFragment.addChild(translucentActivity); doReturn(true).when(mTaskFragment).isTranslucent(any()); ActivityRecord activityBelow = new ActivityBuilder(mAtm).build(); mTaskFragment.getTask().addChild(activityBelow, 0); // Ensure the activity below is visible mTaskFragment.getTask().ensureActivitiesVisible(null /* starting */, 0 /* configChanges */, false /* preserveWindows */); assertEquals(true, activityBelow.isVisibleRequested()); } } Loading
services/core/java/com/android/server/wm/EnsureActivitiesVisibleHelper.java +4 −1 Original line number Diff line number Diff line Loading @@ -108,8 +108,11 @@ class EnsureActivitiesVisibleHelper { && childTaskFragment.getTopNonFinishingActivity() != null) { childTaskFragment.updateActivityVisibilities(starting, configChanges, preserveWindows, notifyClients); // The TaskFragment should fully occlude the activities below if the bounds // equals to its parent task, unless it is translucent. mBehindFullyOccludedContainer |= childTaskFragment.getBounds().equals(mTaskFragment.getBounds()); (childTaskFragment.getBounds().equals(mTaskFragment.getBounds()) && !childTaskFragment.isTranslucent(starting)); if (mAboveTop && mTop.getTaskFragment() == childTaskFragment) { mAboveTop = false; } Loading
services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -149,4 +149,25 @@ public class TaskFragmentTest extends WindowTestsBase { assertEquals(false, info.isEmpty()); assertEquals(activity.token, info.getActivities().get(0)); } @Test public void testActivityVisibilityBehindTranslucentTaskFragment() { // Having an activity covered by a translucent TaskFragment: // Task // - TaskFragment // - Activity (Translucent) // - Activity ActivityRecord translucentActivity = new ActivityBuilder(mAtm) .setUid(DEFAULT_TASK_FRAGMENT_ORGANIZER_UID).build(); mTaskFragment.addChild(translucentActivity); doReturn(true).when(mTaskFragment).isTranslucent(any()); ActivityRecord activityBelow = new ActivityBuilder(mAtm).build(); mTaskFragment.getTask().addChild(activityBelow, 0); // Ensure the activity below is visible mTaskFragment.getTask().ensureActivitiesVisible(null /* starting */, 0 /* configChanges */, false /* preserveWindows */); assertEquals(true, activityBelow.isVisibleRequested()); } }