Loading services/core/java/com/android/server/wm/Task.java +2 −0 Original line number Diff line number Diff line Loading @@ -3751,9 +3751,11 @@ class Task extends TaskFragment { // Boost the adjacent TaskFragment for dimmer if needed. final TaskFragment taskFragment = wc.asTaskFragment(); if (taskFragment != null && taskFragment.isEmbedded()) { taskFragment.mDimmerSurfaceBoosted = false; final TaskFragment adjacentTf = taskFragment.getAdjacentTaskFragment(); if (adjacentTf != null && adjacentTf.shouldBoostDimmer()) { adjacentTf.assignLayer(t, layer++); adjacentTf.mDimmerSurfaceBoosted = true; } } Loading services/core/java/com/android/server/wm/TaskFragment.java +3 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,9 @@ class TaskFragment extends WindowContainer<WindowContainer> { Dimmer mDimmer = Dimmer.DIMMER_REFACTOR ? new SmoothDimmer(this) : new LegacyDimmer(this); /** {@code true} if the dimmer surface is boosted. {@code false} otherwise. */ boolean mDimmerSurfaceBoosted; /** Apply the dim layer on the embedded TaskFragment. */ static final int EMBEDDED_DIM_AREA_TASK_FRAGMENT = 0; Loading services/core/java/com/android/server/wm/WindowManagerService.java +5 −0 Original line number Diff line number Diff line Loading @@ -9214,6 +9214,11 @@ public class WindowManagerService extends IWindowManager.Stub return false; } if (taskFragment.mDimmerSurfaceBoosted) { // Skip if the TaskFragment currently has dimmer surface boosted. return false; } final ActivityRecord topActivity = taskFragment.getTask().topRunningActivity(true /* focusableOnly */); if (topActivity == null || topActivity == focusedWindow.mActivityRecord) { Loading services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java +5 −0 Original line number Diff line number Diff line Loading @@ -896,6 +896,11 @@ public class TaskFragmentTest extends WindowTestsBase { assertFalse(mWm.moveFocusToTopEmbeddedWindow(winRightTop)); // The focus should NOT change. assertEquals(winRightTop, mDisplayContent.mCurrentFocus); // Do not move focus if the dim is boosted. taskFragmentLeft.mDimmerSurfaceBoosted = true; assertFalse(mWm.moveFocusToTopEmbeddedWindow(winLeftTop)); assertEquals(winRightTop, mDisplayContent.mCurrentFocus); } } Loading Loading
services/core/java/com/android/server/wm/Task.java +2 −0 Original line number Diff line number Diff line Loading @@ -3751,9 +3751,11 @@ class Task extends TaskFragment { // Boost the adjacent TaskFragment for dimmer if needed. final TaskFragment taskFragment = wc.asTaskFragment(); if (taskFragment != null && taskFragment.isEmbedded()) { taskFragment.mDimmerSurfaceBoosted = false; final TaskFragment adjacentTf = taskFragment.getAdjacentTaskFragment(); if (adjacentTf != null && adjacentTf.shouldBoostDimmer()) { adjacentTf.assignLayer(t, layer++); adjacentTf.mDimmerSurfaceBoosted = true; } } Loading
services/core/java/com/android/server/wm/TaskFragment.java +3 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,9 @@ class TaskFragment extends WindowContainer<WindowContainer> { Dimmer mDimmer = Dimmer.DIMMER_REFACTOR ? new SmoothDimmer(this) : new LegacyDimmer(this); /** {@code true} if the dimmer surface is boosted. {@code false} otherwise. */ boolean mDimmerSurfaceBoosted; /** Apply the dim layer on the embedded TaskFragment. */ static final int EMBEDDED_DIM_AREA_TASK_FRAGMENT = 0; Loading
services/core/java/com/android/server/wm/WindowManagerService.java +5 −0 Original line number Diff line number Diff line Loading @@ -9214,6 +9214,11 @@ public class WindowManagerService extends IWindowManager.Stub return false; } if (taskFragment.mDimmerSurfaceBoosted) { // Skip if the TaskFragment currently has dimmer surface boosted. return false; } final ActivityRecord topActivity = taskFragment.getTask().topRunningActivity(true /* focusableOnly */); if (topActivity == null || topActivity == focusedWindow.mActivityRecord) { Loading
services/tests/wmtests/src/com/android/server/wm/TaskFragmentTest.java +5 −0 Original line number Diff line number Diff line Loading @@ -896,6 +896,11 @@ public class TaskFragmentTest extends WindowTestsBase { assertFalse(mWm.moveFocusToTopEmbeddedWindow(winRightTop)); // The focus should NOT change. assertEquals(winRightTop, mDisplayContent.mCurrentFocus); // Do not move focus if the dim is boosted. taskFragmentLeft.mDimmerSurfaceBoosted = true; assertFalse(mWm.moveFocusToTopEmbeddedWindow(winLeftTop)); assertEquals(winRightTop, mDisplayContent.mCurrentFocus); } } Loading