Merge "Update display windowing mode when development settings change" into rvc-dev am: 962150b5a9
Change-Id: I76768812fce770cc640702e314cc9f74bd5fb39d
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user