Loading core/java/android/view/IDisplayWindowListener.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -64,4 +64,9 @@ oneway interface IDisplayWindowListener { * Called when the keep clear ares on a display have changed. */ void onKeepClearAreasChanged(int displayId, in List<Rect> restricted, in List<Rect> unrestricted); /** * Called when the eligibility of the desktop mode for a display have changed. */ void onDesktopModeEligibleChanged(int displayId); } libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java +25 −0 Original line number Diff line number Diff line Loading @@ -355,6 +355,19 @@ public class DisplayController { } } private void onDesktopModeEligibleChanged(int displayId) { synchronized (mDisplays) { if (mDisplays.get(displayId) == null || getDisplay(displayId) == null) { Slog.w(TAG, "Skipping onDesktopModeEligibleChanged on unknown" + " display, displayId=" + displayId); return; } for (int i = mDisplayChangedListeners.size() - 1; i >= 0; --i) { mDisplayChangedListeners.get(i).onDesktopModeEligibleChanged(displayId); } } } private static class DisplayRecord { private int mDisplayId; private Context mContext; Loading Loading @@ -422,6 +435,13 @@ public class DisplayController { new ArraySet<>(restricted), new ArraySet<>(unrestricted)); }); } @Override public void onDesktopModeEligibleChanged(int displayId) { mMainExecutor.execute(() -> { DisplayController.this.onDesktopModeEligibleChanged(displayId); }); } } /** Loading Loading @@ -467,5 +487,10 @@ public class DisplayController { * Called when the display topology has changed. */ default void onTopologyChanged(DisplayTopology topology) {} /** * Called when the eligibility of the desktop mode for a display have changed. */ default void onDesktopModeEligibleChanged(int displayId) {} } } libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayEventHandler.kt +9 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,15 @@ class DesktopDisplayEventHandler( // TODO: b/362720497 - move desks in closing display to the remaining desk. } override fun onDesktopModeEligibleChanged(displayId: Int) { if ( DesktopExperienceFlags.ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT.isTrue && displayId != DEFAULT_DISPLAY ) { desktopDisplayModeController.refreshDisplayWindowingMode() } } override fun onDeskRemoved(lastDisplayId: Int, deskId: Int) { val remainingDesks = desktopRepository.getNumberOfDesks(lastDisplayId) if (remainingDesks == 0) { Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopDisplayEventHandlerTest.kt +8 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import androidx.test.filters.SmallTest import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession import com.android.dx.mockito.inline.extended.ExtendedMockito.never import com.android.dx.mockito.inline.extended.StaticMockitoSession import com.android.server.display.feature.flags.Flags as DisplayFlags import com.android.window.flags.Flags import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.ShellTestCase Loading Loading @@ -246,6 +247,13 @@ class DesktopDisplayEventHandlerTest : ShellTestCase() { verify(desktopDisplayModeController).refreshDisplayWindowingMode() } @Test @EnableFlags(DisplayFlags.FLAG_ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT) fun testDesktopModeEligibleChanged() { onDisplaysChangedListenerCaptor.lastValue.onDesktopModeEligibleChanged(externalDisplayId) verify(desktopDisplayModeController).refreshDisplayWindowingMode() } private class FakeDesktopRepositoryInitializer : DesktopRepositoryInitializer { override var deskRecreationFactory: DesktopRepositoryInitializer.DeskRecreationFactory = DesktopRepositoryInitializer.DeskRecreationFactory { _, _, deskId -> deskId } Loading services/core/java/com/android/server/camera/CameraServiceProxy.java +3 −0 Original line number Diff line number Diff line Loading @@ -559,6 +559,9 @@ public class CameraServiceProxy extends SystemService @Override public void onKeepClearAreasChanged(int displayId, List<Rect> restricted, List<Rect> unrestricted) { } @Override public void onDesktopModeEligibleChanged(int displayId) { } } Loading Loading
core/java/android/view/IDisplayWindowListener.aidl +5 −0 Original line number Diff line number Diff line Loading @@ -64,4 +64,9 @@ oneway interface IDisplayWindowListener { * Called when the keep clear ares on a display have changed. */ void onKeepClearAreasChanged(int displayId, in List<Rect> restricted, in List<Rect> unrestricted); /** * Called when the eligibility of the desktop mode for a display have changed. */ void onDesktopModeEligibleChanged(int displayId); }
libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayController.java +25 −0 Original line number Diff line number Diff line Loading @@ -355,6 +355,19 @@ public class DisplayController { } } private void onDesktopModeEligibleChanged(int displayId) { synchronized (mDisplays) { if (mDisplays.get(displayId) == null || getDisplay(displayId) == null) { Slog.w(TAG, "Skipping onDesktopModeEligibleChanged on unknown" + " display, displayId=" + displayId); return; } for (int i = mDisplayChangedListeners.size() - 1; i >= 0; --i) { mDisplayChangedListeners.get(i).onDesktopModeEligibleChanged(displayId); } } } private static class DisplayRecord { private int mDisplayId; private Context mContext; Loading Loading @@ -422,6 +435,13 @@ public class DisplayController { new ArraySet<>(restricted), new ArraySet<>(unrestricted)); }); } @Override public void onDesktopModeEligibleChanged(int displayId) { mMainExecutor.execute(() -> { DisplayController.this.onDesktopModeEligibleChanged(displayId); }); } } /** Loading Loading @@ -467,5 +487,10 @@ public class DisplayController { * Called when the display topology has changed. */ default void onTopologyChanged(DisplayTopology topology) {} /** * Called when the eligibility of the desktop mode for a display have changed. */ default void onDesktopModeEligibleChanged(int displayId) {} } }
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopDisplayEventHandler.kt +9 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,15 @@ class DesktopDisplayEventHandler( // TODO: b/362720497 - move desks in closing display to the remaining desk. } override fun onDesktopModeEligibleChanged(displayId: Int) { if ( DesktopExperienceFlags.ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT.isTrue && displayId != DEFAULT_DISPLAY ) { desktopDisplayModeController.refreshDisplayWindowingMode() } } override fun onDeskRemoved(lastDisplayId: Int, deskId: Int) { val remainingDesks = desktopRepository.getNumberOfDesks(lastDisplayId) if (remainingDesks == 0) { Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopDisplayEventHandlerTest.kt +8 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import androidx.test.filters.SmallTest import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession import com.android.dx.mockito.inline.extended.ExtendedMockito.never import com.android.dx.mockito.inline.extended.StaticMockitoSession import com.android.server.display.feature.flags.Flags as DisplayFlags import com.android.window.flags.Flags import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.ShellTestCase Loading Loading @@ -246,6 +247,13 @@ class DesktopDisplayEventHandlerTest : ShellTestCase() { verify(desktopDisplayModeController).refreshDisplayWindowingMode() } @Test @EnableFlags(DisplayFlags.FLAG_ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT) fun testDesktopModeEligibleChanged() { onDisplaysChangedListenerCaptor.lastValue.onDesktopModeEligibleChanged(externalDisplayId) verify(desktopDisplayModeController).refreshDisplayWindowingMode() } private class FakeDesktopRepositoryInitializer : DesktopRepositoryInitializer { override var deskRecreationFactory: DesktopRepositoryInitializer.DeskRecreationFactory = DesktopRepositoryInitializer.DeskRecreationFactory { _, _, deskId -> deskId } Loading
services/core/java/com/android/server/camera/CameraServiceProxy.java +3 −0 Original line number Diff line number Diff line Loading @@ -559,6 +559,9 @@ public class CameraServiceProxy extends SystemService @Override public void onKeepClearAreasChanged(int displayId, List<Rect> restricted, List<Rect> unrestricted) { } @Override public void onDesktopModeEligibleChanged(int displayId) { } } Loading