Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 143ca52c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Refresh desktop display mode on sys decors changes" into main

parents e4bffda5 73c50071
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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);
}
+25 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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);
            });
        }
    }

    /**
@@ -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) {}
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -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) {
+8 −0
Original line number Diff line number Diff line
@@ -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
@@ -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 }
+3 −0
Original line number Diff line number Diff line
@@ -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