Merge "Fix ui_mode change have not schedule configuration change to client" into sc-dev am: 4c09aa412b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15183485

Change-Id: I2289b6b36699303dea79b8f68037ad916bd5aa3d
This commit is contained in:
Wei Sheng Shih
2021-07-08 02:35:07 +00:00
committed by Automerger Merge Worker
2 changed files with 14 additions and 1 deletions

View File

@@ -812,7 +812,9 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
void updateNightModeForAllActivities(int nightMode) { void updateNightModeForAllActivities(int nightMode) {
for (int i = mActivities.size() - 1; i >= 0; --i) { for (int i = mActivities.size() - 1; i >= 0; --i) {
final ActivityRecord r = mActivities.get(i); final ActivityRecord r = mActivities.get(i);
r.setOverrideNightMode(nightMode); if (r.setOverrideNightMode(nightMode) && r.mVisibleRequested) {
r.ensureActivityConfiguration(0 /* globalChanges */, true /* preserveWindow */);
}
} }
} }

View File

@@ -34,6 +34,8 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
@@ -365,6 +367,15 @@ public class WindowProcessControllerTests extends WindowTestsBase {
return new ActivityBuilder(mAtm).setCreateTask(true).setUseProcess(wpc).build(); return new ActivityBuilder(mAtm).setCreateTask(true).setUseProcess(wpc).build();
} }
@Test
public void testTopActivityUiModeChangeScheduleConfigChange() {
final ActivityRecord activity = createActivityRecord(mWpc);
activity.mVisibleRequested = true;
doReturn(true).when(activity).setOverrideNightMode(anyInt());
mWpc.updateNightModeForAllActivities(Configuration.UI_MODE_NIGHT_YES);
verify(activity).ensureActivityConfiguration(anyInt(), anyBoolean());
}
@Test @Test
public void testTopActivityDisplayAreaMatchesTopMostActivity_noActivities() { public void testTopActivityDisplayAreaMatchesTopMostActivity_noActivities() {
assertNull(mWpc.getTopActivityDisplayArea()); assertNull(mWpc.getTopActivityDisplayArea());