Merge "Fix stack reference is not updated if the task is organized" into rvc-dev
This commit is contained in:
@@ -1431,15 +1431,15 @@ class Task extends WindowContainer<WindowContainer> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
void removeChild(WindowContainer child) {
|
void removeChild(WindowContainer child) {
|
||||||
// A rootable child task that is now being removed from an organized task. Making sure
|
|
||||||
// the stack references is keep updated.
|
|
||||||
if (mTaskOrganizer != null && mCreatedByOrganizer && child.asTask() != null) {
|
|
||||||
getDisplayArea().removeStackReferenceIfNeeded((ActivityStack) child);
|
|
||||||
}
|
|
||||||
removeChild(child, "removeChild");
|
removeChild(child, "removeChild");
|
||||||
}
|
}
|
||||||
|
|
||||||
void removeChild(WindowContainer r, String reason) {
|
void removeChild(WindowContainer r, String reason) {
|
||||||
|
// A rootable child task that is now being removed from an organized task. Making sure
|
||||||
|
// the stack references is keep updated.
|
||||||
|
if (mTaskOrganizer != null && mCreatedByOrganizer && r.asTask() != null) {
|
||||||
|
getDisplayArea().removeStackReferenceIfNeeded((ActivityStack) r);
|
||||||
|
}
|
||||||
if (!mChildren.contains(r)) {
|
if (!mChildren.contains(r)) {
|
||||||
Slog.e(TAG, "removeChild: r=" + r + " not found in t=" + this);
|
Slog.e(TAG, "removeChild: r=" + r + " not found in t=" + this);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -233,6 +233,25 @@ public class ActivityStackTests extends ActivityTestsBase {
|
|||||||
assertEquals(homeRoot.getParent(), secondaryTask.getParent());
|
assertEquals(homeRoot.getParent(), secondaryTask.getParent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRemoveOrganizedTask_UpdateStackReference() {
|
||||||
|
final ActivityStack rootHomeTask = mDefaultTaskDisplayArea.getRootHomeTask();
|
||||||
|
final ActivityRecord homeActivity = new ActivityBuilder(mService)
|
||||||
|
.setStack(rootHomeTask)
|
||||||
|
.setCreateTask(true)
|
||||||
|
.build();
|
||||||
|
final ActivityStack secondaryStack = (ActivityStack) WindowContainer.fromBinder(
|
||||||
|
mService.mTaskOrganizerController.createRootTask(rootHomeTask.getDisplayId(),
|
||||||
|
WINDOWING_MODE_SPLIT_SCREEN_SECONDARY).token.asBinder());
|
||||||
|
|
||||||
|
rootHomeTask.reparent(secondaryStack, POSITION_TOP);
|
||||||
|
assertEquals(secondaryStack, rootHomeTask.getParent());
|
||||||
|
|
||||||
|
// This should call to {@link TaskDisplayArea#removeStackReferenceIfNeeded}.
|
||||||
|
homeActivity.removeImmediately();
|
||||||
|
assertNull(mDefaultTaskDisplayArea.getRootHomeTask());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStackInheritsDisplayWindowingMode() {
|
public void testStackInheritsDisplayWindowingMode() {
|
||||||
final ActivityStack primarySplitScreen = mDefaultTaskDisplayArea.createStack(
|
final ActivityStack primarySplitScreen = mDefaultTaskDisplayArea.createStack(
|
||||||
|
|||||||
Reference in New Issue
Block a user