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

This commit is contained in:
Chris Li
2020-03-18 16:23:13 +00:00
committed by Android (Google) Code Review
2 changed files with 39 additions and 5 deletions

View File

@@ -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;
mAtmService.mSupportsFreeformWindowManagement = freeformWindowManagement;
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() {

View File

@@ -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();
}
}
@@ -73,7 +100,8 @@ public class WindowManagerSettingsTests extends WindowTestsBase {
try (SettingsSession forceResizableSession = new
SettingsSession(DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES)) {
final boolean forceResizableMode = !forceResizableSession.getSetting();
final Uri forceResizableUri = forceResizableSession.setSetting(forceResizableMode);
final Uri forceResizableUri = forceResizableSession.setSetting(forceResizableMode);
mWm.mSettingsObserver.onChange(false, forceResizableUri);
assertEquals(mWm.mAtmService.mForceResizableActivities, forceResizableMode);