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

Commit 962150b5 authored by Chris Li's avatar Chris Li Committed by Android (Google) Code Review
Browse files

Merge "Update display windowing mode when development settings change" into rvc-dev

parents c9925a66 df0b33a2
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -881,7 +881,13 @@ public class WindowManagerService extends IWindowManager.Stub
                    FEATURE_FREEFORM_WINDOW_MANAGEMENT) || Settings.Global.getInt(
                    resolver, DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0;

            if (mAtmService.mSupportsFreeformWindowManagement != freeformWindowManagement) {
                mAtmService.mSupportsFreeformWindowManagement = freeformWindowManagement;
                synchronized (mGlobalLock) {
                    // Notify the root window container that the display settings value may change.
                    mRoot.onSettingsRetrieved();
                }
            }
        }

        void updateForceResizableTasks() {
+32 −4
Original line number Diff line number Diff line
@@ -24,6 +24,9 @@ import static android.provider.Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIV
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;

import android.content.ContentResolver;
import android.net.Uri;
@@ -60,11 +63,35 @@ public class WindowManagerSettingsTests extends WindowTestsBase {
    public void testFreeformWindow() {
        try (SettingsSession freeformWindowSession = new
                SettingsSession(DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT)) {
            final boolean freeformWindow = !freeformWindowSession.getSetting();
            final Uri freeformWindowUri = freeformWindowSession.setSetting(freeformWindow);
            final boolean curFreeformWindow = freeformWindowSession.getSetting();
            final boolean newFreeformWindow = !curFreeformWindow;
            final Uri freeformWindowUri = freeformWindowSession.setSetting(newFreeformWindow);
            mWm.mAtmService.mSupportsFreeformWindowManagement = curFreeformWindow;
            mWm.mSettingsObserver.onChange(false, freeformWindowUri);

            assertEquals(mWm.mAtmService.mSupportsFreeformWindowManagement, freeformWindow);
            assertEquals(mWm.mAtmService.mSupportsFreeformWindowManagement, newFreeformWindow);
        }
    }

    @Test
    public void testFreeformWindow_valueChanged_updatesDisplaySettings() {
        try (SettingsSession freeformWindowSession = new
                SettingsSession(DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT)) {
            final boolean curFreeformWindow = freeformWindowSession.getSetting();
            final boolean newFreeformWindow = !curFreeformWindow;
            final Uri freeformWindowUri = freeformWindowSession.setSetting(newFreeformWindow);
            mWm.mAtmService.mSupportsFreeformWindowManagement = curFreeformWindow;
            clearInvocations(mWm.mRoot);
            mWm.mSettingsObserver.onChange(false, freeformWindowUri);

            // Changed value should update display settings.
            verify(mWm.mRoot).onSettingsRetrieved();

            clearInvocations(mWm.mRoot);
            mWm.mSettingsObserver.onChange(false, freeformWindowUri);

            // Unchanged value should not update display settings.
            verify(mWm.mRoot, never()).onSettingsRetrieved();
        }
    }

@@ -74,6 +101,7 @@ public class WindowManagerSettingsTests extends WindowTestsBase {
                SettingsSession(DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES)) {
            final boolean forceResizableMode = !forceResizableSession.getSetting();
            final Uri forceResizableUri = forceResizableSession.setSetting(forceResizableMode);

            mWm.mSettingsObserver.onChange(false, forceResizableUri);

            assertEquals(mWm.mAtmService.mForceResizableActivities, forceResizableMode);