Only allow roots tasks to be organized
Non-root tasks are relative to their parents so no need to have them
return true to the isOrganized() method.
We can also:
- Reset the windowing mode for a task we are moving to split screen
before we reparent to the split task.
- Remove code in sys-ui that was added to compensate for the
method previous returning true.
Bug: 152619437
Test: They pass
Change-Id: I7a0381f535f2d0b245773ecb1fbb4fdb524954f9
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
index e21861a..3879c16 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java
@@ -1085,14 +1085,6 @@
crop.offsetTo(-(otherTaskRect.left - otherRect.left),
-(otherTaskRect.top - otherRect.top));
t.setWindowCrop(mTiles.mSecondarySurface, crop);
- // Reposition home and recents surfaces or they would be positioned relatively to its
- // parent (split-screen secondary task) position.
- for (int i = mTiles.mHomeAndRecentsSurfaces.size() - 1; i >= 0; --i) {
- t.setPosition(mTiles.mHomeAndRecentsSurfaces.get(i),
- mTiles.mHomeBounds.left - otherTaskRect.left,
- mTiles.mHomeBounds.top - otherTaskRect.top);
- t.setWindowCrop(mTiles.mHomeAndRecentsSurfaces.get(i), null);
- }
final SurfaceControl dividerCtrl = getWindowSurfaceControl();
if (dividerCtrl != null) {
if (isHorizontalDivision()) {
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 682e991..7803c73 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -2802,6 +2802,9 @@
false /* includingParents */);
}
WindowContainerTransaction wct = new WindowContainerTransaction();
+ // Clear out current windowing mode before reparenting to split taks.
+ wct.setWindowingMode(
+ task.getStack().mRemoteToken.toWindowContainerToken(), WINDOWING_MODE_UNDEFINED);
wct.reparent(task.getStack().mRemoteToken.toWindowContainerToken(),
primarySplitTask.mRemoteToken.toWindowContainerToken(), toTop);
mWindowOrganizerController.applyTransaction(wct);
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 0151b82..7c6343c 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -4068,21 +4068,7 @@
@Override
boolean isOrganized() {
- final Task rootTask = getRootTask();
- if (rootTask.mTaskOrganizer == null) {
- // You are obviously not organized...
- return false;
- }
- if (rootTask == this) {
- // Root tasks can be organized.
- return true;
- }
- if (rootTask.mCreatedByOrganizer && getParent() == rootTask) {
- // Direct children of tasks added by the organizer can the organized.
- return true;
- }
-
- return false;
+ return mTaskOrganizer != null;
}
@Override
@@ -4137,6 +4123,7 @@
}
}
+ @VisibleForTesting
boolean setTaskOrganizer(ITaskOrganizer organizer) {
if (mTaskOrganizer == organizer) {
return false;