Merge "Update activity visibility for all users"

This commit is contained in:
Louis Chang
2022-02-10 09:47:25 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 1 deletions

View File

@@ -104,7 +104,8 @@ class EnsureActivitiesVisibleHelper {
for (int i = mTaskFragment.mChildren.size() - 1; i >= 0; --i) {
final WindowContainer child = mTaskFragment.mChildren.get(i);
final TaskFragment childTaskFragment = child.asTaskFragment();
if (childTaskFragment != null && childTaskFragment.topRunningActivity() != null) {
if (childTaskFragment != null
&& childTaskFragment.getTopNonFinishingActivity() != null) {
childTaskFragment.updateActivityVisibilities(starting, configChanges,
preserveWindows, notifyClients);
mBehindFullyOccludedContainer |=

View File

@@ -121,6 +121,7 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.PersistableBundle;
@@ -3358,6 +3359,29 @@ public class ActivityRecordTests extends WindowTestsBase {
noProcActivity.mInputDispatchingTimeoutMillis);
}
@Test
public void testEnsureActivitiesVisibleAnotherUserTasks() {
// Create an activity with hierarchy:
// RootTask
// - TaskFragment
// - Activity
DisplayContent display = createNewDisplay();
Task rootTask = createTask(display);
ActivityRecord activity = createActivityRecord(rootTask);
final TaskFragment taskFragment = new TaskFragment(mAtm, new Binder(),
true /* createdByOrganizer */, true /* isEmbedded */);
activity.getTask().addChild(taskFragment, POSITION_TOP);
activity.reparent(taskFragment, POSITION_TOP);
// Ensure the activity visibility is updated even it is not shown to current user.
activity.mVisibleRequested = true;
doReturn(false).when(activity).showToCurrentUser();
spyOn(taskFragment);
doReturn(false).when(taskFragment).shouldBeVisible(any());
display.ensureActivitiesVisible(null, 0, false, false);
assertFalse(activity.mVisibleRequested);
}
private ICompatCameraControlCallback getCompatCameraControlCallback() {
return new ICompatCameraControlCallback.Stub() {
@Override