Fix pip surface under divider
Make sure always on top tasks layer is above split divider layer. Fix: 194359996 Test: manual Test: pass exising tests Test: atest ZOrderingTests Change-Id: I211a3e1a92f86b0c802d2a9a259026ee2fad0383
This commit is contained in:
@@ -236,6 +236,9 @@ public interface WindowManagerPolicyConstants {
|
||||
*/
|
||||
int LAYER_OFFSET_THUMBNAIL = WINDOW_LAYER_MULTIPLIER - 1;
|
||||
|
||||
// TODO(b/207185041): Remove this divider workaround after we full remove leagacy split and
|
||||
// make app pair split only have single root then we can just attach the
|
||||
// divider to the single root task in shell.
|
||||
int SPLIT_DIVIDER_LAYER = TYPE_LAYER_MULTIPLIER * 3;
|
||||
int WATERMARK_LAYER = TYPE_LAYER_MULTIPLIER * 100;
|
||||
int STRICT_MODE_LAYER = TYPE_LAYER_MULTIPLIER * 101;
|
||||
|
||||
@@ -867,6 +867,10 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
|
||||
// Place root home tasks to the bottom.
|
||||
layer = adjustRootTaskLayer(t, mTmpHomeChildren, layer);
|
||||
layer = adjustRootTaskLayer(t, mTmpNormalChildren, layer);
|
||||
// TODO(b/207185041): Remove this divider workaround after we full remove leagacy split and
|
||||
// make app pair split only have single root then we can just attach the
|
||||
// divider to the single root task in shell.
|
||||
layer = Math.max(layer, SPLIT_DIVIDER_LAYER + 1);
|
||||
adjustRootTaskLayer(t, mTmpAlwaysOnTopChildren, layer);
|
||||
t.setLayer(mSplitScreenDividerAnchor, SPLIT_DIVIDER_LAYER);
|
||||
}
|
||||
|
||||
@@ -501,8 +501,6 @@ public class ZOrderingTests extends WindowTestsBase {
|
||||
mDisplayContent.assignChildLayers(mTransaction);
|
||||
|
||||
assertWindowHigher(splitWindow1, belowTaskWindow);
|
||||
assertWindowHigher(splitWindow1, belowTaskWindow);
|
||||
assertWindowHigher(splitWindow2, belowTaskWindow);
|
||||
assertWindowHigher(splitWindow2, belowTaskWindow);
|
||||
assertWindowHigher(mDockedDividerWindow, splitWindow1);
|
||||
assertWindowHigher(mDockedDividerWindow, splitWindow2);
|
||||
@@ -510,6 +508,39 @@ public class ZOrderingTests extends WindowTestsBase {
|
||||
assertWindowHigher(pinnedWindow, aboveTaskWindow);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testDockedDividerPosition_noAboveTask() {
|
||||
final Task pinnedTask =
|
||||
createTask(mDisplayContent, WINDOWING_MODE_PINNED, ACTIVITY_TYPE_STANDARD);
|
||||
final WindowState pinnedWindow =
|
||||
createAppWindow(pinnedTask, ACTIVITY_TYPE_STANDARD, "pinnedWindow");
|
||||
|
||||
final Task belowTask =
|
||||
createTask(mDisplayContent, WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
|
||||
final WindowState belowTaskWindow =
|
||||
createAppWindow(belowTask, ACTIVITY_TYPE_STANDARD, "belowTaskWindow");
|
||||
|
||||
final Task splitScreenTask1 =
|
||||
createTask(mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD);
|
||||
final WindowState splitWindow1 =
|
||||
createAppWindow(splitScreenTask1, ACTIVITY_TYPE_STANDARD, "splitWindow1");
|
||||
final Task splitScreenTask2 =
|
||||
createTask(mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD);
|
||||
final WindowState splitWindow2 =
|
||||
createAppWindow(splitScreenTask2, ACTIVITY_TYPE_STANDARD, "splitWindow2");
|
||||
splitScreenTask1.setAdjacentTaskFragment(splitScreenTask2);
|
||||
splitScreenTask2.setAdjacentTaskFragment(splitScreenTask1);
|
||||
|
||||
mDisplayContent.assignChildLayers(mTransaction);
|
||||
|
||||
assertWindowHigher(splitWindow1, belowTaskWindow);
|
||||
assertWindowHigher(splitWindow2, belowTaskWindow);
|
||||
assertWindowHigher(mDockedDividerWindow, splitWindow1);
|
||||
assertWindowHigher(mDockedDividerWindow, splitWindow2);
|
||||
assertWindowHigher(pinnedWindow, mDockedDividerWindow);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAttachNavBarWhenEnteringRecents_expectNavBarHigherThanIme() {
|
||||
// create RecentsAnimationController
|
||||
|
||||
Reference in New Issue
Block a user