Merge "Fix ui_mode change have not schedule configuration change to client" into sc-dev

This commit is contained in:
Wei Sheng Shih
2021-07-08 02:18:20 +00:00
committed by Android (Google) Code Review
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) {
for (int i = mActivities.size() - 1; i >= 0; --i) {
final ActivityRecord r = mActivities.get(i);
r.setOverrideNightMode(nightMode);
if (r.setOverrideNightMode(nightMode) && r.mVisibleRequested) {
r.ensureActivityConfiguration(0 /* globalChanges */, true /* preserveWindow */);
}
}
}

View File

@@ -28,6 +28,8 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
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.Mockito.doReturn;
import static org.mockito.Mockito.mock;
@@ -359,6 +361,15 @@ public class WindowProcessControllerTests extends WindowTestsBase {
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
public void testTopActivityDisplayAreaMatchesTopMostActivity_noActivities() {
assertNull(mWpc.getTopActivityDisplayArea());