Ensure docked divider is below always-on-top stacks.

We need interleave it with the AppWindowToken hierarchy even
though it only has a WindowToken.

Fixes: 70318142
Fixes: 70675228
Fixes: 70178829
Test: Manual. ZOrderingTests.
Change-Id: I7b898f2157de85433416579efae5e01a9dcbf46c
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 2decbcb..7cdae0d 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -49,6 +49,7 @@
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
 import static android.view.WindowManager.LayoutParams.TYPE_BOOT_PROGRESS;
+import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
 import static android.view.WindowManager.LayoutParams.TYPE_DRAWN_APPLICATION;
 import static android.view.WindowManager.LayoutParams.TYPE_DREAM;
 import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
@@ -3567,6 +3568,18 @@
                     && imeContainer.getSurfaceControl() != null;
             for (int j = 0; j < mChildren.size(); ++j) {
                 final WindowToken wt = mChildren.get(j);
+
+                // The divider is unique in that it does not have an AppWindowToken but needs to be
+                // interleaved with them. In particular it must be above any split-screen stacks
+                // but below any always-on-top stacks.
+                if (wt.windowType == TYPE_DOCK_DIVIDER) {
+                    final TaskStack dockedStack = getSplitScreenPrimaryStack();
+                    if (dockedStack != null) {
+                        wt.assignRelativeLayer(t, dockedStack.getSurfaceControl(),
+                                Integer.MAX_VALUE);
+                        continue;
+                    }
+                }
                 wt.assignLayer(t, j);
                 wt.assignChildLayers(t);