summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wei Sheng Shih <wilsonshih@google.com> 2021-07-08 02:18:20 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-07-08 02:18:20 +0000
commit4c09aa412b65d14efb2b02e3f13af18f8b5b4150 (patch)
tree6e60ebe126570b0cd65153e4c91bd552319e1d97
parentbc807558ce856c140029dff947889253f3bd3687 (diff)
parentd9c20d2b639bfd39d7ed61738852a97b8bd75907 (diff)
Merge "Fix ui_mode change have not schedule configuration change to client" into sc-dev
-rw-r--r--services/core/java/com/android/server/wm/WindowProcessController.java4
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java11
2 files changed, 14 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java
index 1c57aef8a5af..1364c72e6275 100644
--- a/services/core/java/com/android/server/wm/WindowProcessController.java
+++ b/services/core/java/com/android/server/wm/WindowProcessController.java
@@ -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 */);
+ }
}
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java
index f848ce5e5579..ed18d26f8448 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java
@@ -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;
@@ -360,6 +362,15 @@ public class WindowProcessControllerTests extends WindowTestsBase {
}
@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());
}