diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java index 32eb932ea0ed4..f356329cbefb3 100644 --- a/services/core/java/com/android/server/wm/WindowProcessController.java +++ b/services/core/java/com/android/server/wm/WindowProcessController.java @@ -1058,7 +1058,7 @@ public class WindowProcessController extends ConfigurationContainer= 0; i--) { final ActivityRecord activityRecord = mActivities.get(i); - if (!activityRecord.finishing && !activityRecord.containsListener(this)) { + if (!activityRecord.finishing) { // Eligible activity is found, update listener. registerActivityConfigurationListener(activityRecord); return; diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index c9c3649783b8a..9e874211fcb39 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -1332,6 +1332,40 @@ public class ActivityRecordTests extends ActivityTestsBase { assertNotEquals(initialConf, wpc.getRequestedOverrideConfiguration()); } + @Test + public void testActivityDestroyDoesntChangeProcessOverride() { + final ActivityRecord firstActivity = + createActivityOnDisplay(true /* defaultDisplay */, null /* process */); + final WindowProcessController wpc = firstActivity.app; + assertTrue(wpc.registeredForActivityConfigChanges()); + assertEquals(0, firstActivity.getMergedOverrideConfiguration() + .diff(wpc.getRequestedOverrideConfiguration())); + + final ActivityRecord secondActivity = + createActivityOnDisplay(false /* defaultDisplay */, wpc); + assertTrue(wpc.registeredForActivityConfigChanges()); + assertEquals(0, secondActivity.getMergedOverrideConfiguration() + .diff(wpc.getRequestedOverrideConfiguration())); + + final ActivityRecord thirdActivity = + createActivityOnDisplay(false /* defaultDisplay */, wpc); + assertTrue(wpc.registeredForActivityConfigChanges()); + assertEquals(0, thirdActivity.getMergedOverrideConfiguration() + .diff(wpc.getRequestedOverrideConfiguration())); + + secondActivity.destroyImmediately(true, ""); + + assertTrue(wpc.registeredForActivityConfigChanges()); + assertEquals(0, thirdActivity.getMergedOverrideConfiguration() + .diff(wpc.getRequestedOverrideConfiguration())); + + firstActivity.destroyImmediately(true, ""); + + assertTrue(wpc.registeredForActivityConfigChanges()); + assertEquals(0, thirdActivity.getMergedOverrideConfiguration() + .diff(wpc.getRequestedOverrideConfiguration())); + } + /** * Creates an activity on display. For non-default display request it will also create a new * display with custom DisplayInfo.